본문 바로가기
블로그/블로그 개발

[블로그 개발 기록-2] Uwsgi + Flask(Python) + Nginx 이용한 가상서버 연동

by Bloofer 2021. 7. 13.

Uwsgi / Flask / Nginx란?

Uwsgi : 미들웨어 역할을 하는 웹 인터페이스

Flask : 파이썬 웹 어플리케이션 개발을 위한 경량 웹 프레임워크

Nginx : Apache와 같은 웹서버, 비동기 이벤트 기반의 웹서버로 프록시/리버스 프록시 등을 지원

 

 


패키지 설치 및 환경설정

$ pip install flask
$ apt-get install uwsgi
$ apt-get install nginx

먼저 flask / uwsgi / nginx를 pip/apt-get 이용하여 설치한다.

 


Uwsgi 설정하기

uwsgi.ini 파일을 다음과 같이 설정해준다.

[uwsgi]
chdir = /home/ubuntu/BlooferBlog
callable = app
plugin = python3 
module = wsgi
master = true 

socket = /tmp/uwsgi.sock
chmod-socket = 666
vacuum = true
die-on-term = true 
ignore-sigpipe=true
ignore-write-errors=true 
disable-write-exception=true

chdir은 프로젝트의 경로

callable은 실행 오브젝트

wsgi는 wsgi 실행파일을 의미한다.

 

$ sudo service uwsgi restart
$ sudo service uwsgi reload

위 두 명령으로 uwsgi 환경파일 변경후의 적용을 위해 서비스 재시작 후 재로드한다.

 


Nginx 설정하기

uwsgi 설정의 완료이후 소켓파일이 정상 생성되었다면, 이후 Nginx 웹서버 환경을 설정한다.

 

/sites_available 디렉토리 내에 default 파일을 생성하였다.

server { 
    listen 80; 

    server_name 3.36.219.130;

    root /home/ubuntu/BlooferBlog; 
    
    location / { 
        try_files $uri @app; 
    } 

    location @app {
        include uwsgi_params; 
        uwsgi_pass unix:/tmp/uwsgi.sock; 
   }
}

listen 80은 서버의 통신포트

server_name는 서버의 도메인(혹은 IP)

root는 프로젝트 디렉토리의 경로

app의 실행경로에 uwsgi의 소켓 생성경로를 넣어주면 된다.

 

이후, 아래와 같이 nginx를 재시작하여 확인한다.

$ sudo service nginx restart