이전의 포스팅과 이어집니다.
👉 wsgi 란?
python으로 작성한 django, flask와 같은 웹 프레임워크를
아파치(Apache)와 Nginx와 같은 웹서버와 통신할때 사용하는 프로토콜 ( 규칙 )
wsgi 의 필요성
django의 [python manage.py runserver]로 실행한 서버는,
사용자의 요청을 효과적으로 처리하지 못하는데,
uwsgi는 웹 서버에서 받은 사용자의 요청을 정리하고 django에게 전달함으로써, 이 문제를 해결한다.
👉 uwsgi 란?
많은 프로그래밍 언어로 폭넓게 이용할 수 있는 wsgi규칙
# Gunicorn도 이용해보기
👉 사용법
AWS 접속
ssh -i "MyKeyPair.pem" ubuntu@<퍼블릭DNS>
# 키페어 파일과 같은 위치에서 실행
uwsgi로 배포할, 전용 계정 생성
sudo adduser deploy
# 계정 만들기, 비밀번호를 제외한 다른 정보는 그렇게 중요하지 않음
uwsgi 설치 준비
pip3 install wheel
pip3 install python3-dev
# 가상환경과 동일한 파이썬 버전으로 설치할 것 (ex: pip3 install python3.6-dev)
uwsgi 설치
. myvenv/bin/activate
# 가상환경 접속
pip3 install uwsgi
# uwsgi 파이썬 패키지 설치
uwsgi 서버실행 파일 만들기 ( 내 컴퓨터로 돌아오기 / <프로젝트>.ini )
<프로젝트폴더>
<프로젝트>
<앱>
manage.py
.config
uwsgi
<프로젝트>.ini
파일 내용 작성하기 ( <프로젝트>.ini )
[uwsgi]
chdir = /home/ubuntu/<프로젝트>
module = <프로젝트>.wsgi:application
home = /home/ubuntu/myvenv/
uid = deploy
gid = deploy
http = :8080
enable-threads = true
master = true
vacuum = true
pidfile = /tmp/mysite.pid
logto = /var/log/uwsgi/<프로젝트>/@(exec://date +%%Y-%%m-%%d).log
log-reopen = true
chdir | 실행할 프로젝트 위치 |
module | 프로젝트에 적용할 wsgi 위치 |
home | 사용할 가상환경 위치 |
uid | 사용할 계정 |
gid | 사용할 그룹 |
http | 사용할 포트 |
logto | uwsgi 서버의 메시지를 저장할 폴더위치 |
github에 업로드하기
git add .
git commit -m "메모"
git push
AWS에서 내려받기
git pull <저장소>
uwsgi 메시지 저장 폴더 만들기
sudo mkdir -p /var/log/uwsgi/<프로젝트>
# 폴더 생성
deploy만, uwsgi 메시지 작성할 수 있도록 권한 설정 해주기
sudo chown -R deploy:deploy /var/log/uwsgi/<프로젝트>
<프로젝트>.ini 파일로 uwsgi 서버 실행하기
sudo /home/ubuntu/myvenv/bin/uwsgi -i /home/ubuntu/.config/uwsgi/<프로젝트>.ini
uwsgid와, nginx 웹서버 연결하기
( 더효율적인 서버를 위해! )
반응형