-
Nginx + uwsgi + Flask를 통한 배포프로젝트 회고/PKSelect 2022. 9. 12. 21:28
NGINX란?
Nginx는 경량 웹 서버이. 클라이언트로부터 요청을 받았을 때 요청에 맞는 정적 파일을 응답해주는 HTTP Web Server로 활용되기도 한다.
Nginx는 Event-Driven 구조로 동작하기 때문에 고정된 프로세스만 생성하여 사용하고, 비동기 방식으로 요청들을 Concurrency 하게 처리할 수 있다.
uwsgi란?
nginx + uwsgi + flask uWSGI가 nginx와 Flask 앱 중간에서 미들웨어 역할을 하게 된다.
WSGI는 Web Server Gateway Interface의 약어로 웹서버와 웹 애플리케이션이 어떤 방식으로 통신하는가에 관한 인터페이스로써, 웹 서버와 웹어플리케이션 간의 소통을 정의해 애플리케이션과 서버가 독립적으로 운영될 수 있게 돕는다.
서버는 AWS EC2를 사용했다.
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_pass에 후에 나중에 만들게 될 uwsgi.sock을 설정해준다. 아래 ssl_ 관련해서 적혀있는 부분은 https를 적용하기 위해 있는 것이다.
uwsgi 설정파일(uwsgi.ini)
uwsgi.ini파일에도 소켓파일 경로를 지정해준다.
Nginx -- uwsgi 연동을 위한 socket 파일
# 처음 실행 시 (소켓생성) $ sudo service uwsgi retart # 설정사항 혹은 flask 웹 어플리케이션 소스 변경 후 적용 $ sudo service uwsgi reload
위 명령어들로 내가 지정해놓은 경로에 소켓을 생성해준다. 이 소켓을 통해 미들웨어와 웹 서버가 통신하게 되는 것이다.
wsgi 모듈 ( 어플리케이션과 uwsgi를 연결시켜주기 위한 wsgi.py 파일 생성 )
이후 uwsgi와 flask application을 연동하기 위한 wsgi.py파일을 설정해주면 Nginx + uwsgi + flask연동이 끝이난다.
참조 블로그 :
Nginx란 무엇인가?
Nginx는 경량 웹 서버입니다.클라이언트로부터 요청을 받았을 때 요청에 맞는 정적 파일을 응답해주는 HTTP Web Server로 활용되기도 하고, Reverse Proxy Server로 활용하여 WAS 서버의 부하를 줄일 수 있는
velog.io
'프로젝트 회고 > PKSelect' 카테고리의 다른 글
프로젝트에 크롤링 TestCode를 적용해본 후기 (0) 2022.09.12 PKSelect에 적용한 시스템 흐름과 구조 (0) 2022.09.12