Programming/클라우드 컴퓨팅 & AWS

[AWS] wsgi 란? / django 프로젝트 uWSGI로 연결하기

MOONCO 2021. 4. 7. 11:35
 

[AWS] django 프로젝트 AWS에 올리기

프로젝트에 사용한 파이썬 패키지목록 생성하기 pip freeze >> requirements.txt # manage.py가 있는 폴더에서 실행해야 정확한 패키지 정보를 불러올 수 있습니다. github에 프로젝트 올리기 / defineall.tistor..

defineall.tistory.com

이전의 포스팅과 이어집니다.


👉 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

 

서버가 실행된 모습!

 

8080포트 접속모습

 


uwsgid와, nginx  웹서버 연결하기

( 더효율적인 서버를 위해! )

 

[AWS] nginx란? / django 프로젝트 nginx 웹 서버 연결하기

requirements.txt # manage.py가 있는 폴더에서 실행해야 정확한 패키지 정보를 불러올 수 있습니다. github에 프로젝트 올리기 / defineall.tistor.." data-og-host="defineall.tistory.com" data-og-source-u....

defineall.tistory.com

반응형