Nginx + wsgi + Flask

참고 : https://velog.io/@wijihoon123/Nginx%EB%9E%80-%EB%AC%B4%EC%97%87%EC%9D%B8%EA%B0%80

  • Nginx는 경량 웹 서버이. 클라이언트로부터 요청을 받았을 때 요청에 맞는 정적 파일을 응답해주는 HTTP Web Server로 활용되기도 한다.

  • Nginx는 Event-Driven 구조로 동작하기 때문에 고정된 프로세스만 생성하여 사용하고, 비동기 방식으로 요청들을 Concurrency 하게 처리할 수 있다.

UWSGI

uWSGI가 nginx와 Flask 앱 중간에서 미들웨어 역할을 하게 된다.

WSGI는 Web Server Gateway Interface의 약어로 웹서버와 웹 애플리케이션이 어떤 방식으로 통신하는가에 관한 인터페이스로써, 웹 서버와 웹어플리케이션 간의 소통을 정의해 애플리케이션과 서버가 독립적으로 운영될 수 있게 돕는다.

nginx uwsgi 설정 파

  1. Flask 설정파일

2. 기반 웹 어플리이션

3. Flask 웹 어플리케이션

4. 어플리케이션과 uwsgi를 연결시켜주기 위한 wsgi.py 파일

5. nginx 설정파일과 uwsgi설정파일을 연결하기 위한 socket파일

실행되는 순서는 다음과 같다.

  1. 클라이언트가 요청을 보내면, 가장 먼저 Nginx가 받는다.

2. 그리고 unix 소켓을 통해 nginx와 uwsgi를 연결한다.

3. 위의 각 설정 파일 안의 소켓을 통해 연결된다.

4. -ginx와 uwsgi를 socket으로 연결해서 flask 앱이 실행되는 구조이다.

Nginx 설정파일 (/etc/nginx/sites-available/myproject)

uwsgi 설정파일(uwsgi.ini)

Nginx -- uwsgi 연동을 위한 socket 파일

# 처음 실행 시 (소켓생성) 
$ sudo service uwsgi retart 

# 설정사항 혹은 flask 웹 어플리케이션 소스 변경 후 적용 
$ sudo service uwsgi reload

wsgi 모듈 ( 어플리케이션과 uwsgi를 연결시켜주기 위한 wsgi.py 파일 생성 )

Last updated