Server_Gunicorn 및 nginx 세팅

JSkim·2022년 12월 6일

Gunicorn으로 삽질을 오래해서 빡친 마음으로 또 잊어버리면 찾아서 보려고 만든다.

이 유투브에서 어떤 교수님 강의가 유용했음.

링크

먼저 gunicorn 설치 후 테스트하기.
참고로 설치는 꼭 conda activate 한 후 하길 바람.

그담

gunicorn -b 0:5000 app[실행할.py파일]:app[내부에서 run시키는거]

이렇게 치고 ip:5000 으로 들어가 잘 돌아가나 테스트해보자.

잘 돌아간다치고

import multiprocessing

workers = multiprocessing.cpu_count() * 2 + 1

#이렇게 하고 실행하면 해당경로에 app.sock 생김.
#이걸 나중에 nginx에서 잡아주면된다.
bind = 'unix:/경로/app.sock'

wsgi_app = 'app:app'
errorlog = './gunicorn_log/errorlog.txt'

accesslog = './gunicorn_log/accesslog.txt'

이렇게 설정 파일 하나 만든 담에
파일이름 gunicorn.config.socket.py 라고 하자.

그담

gunicorn --config gunicorn.config.socket.py

로 구니콘 실행시키고

nginx 설정

server{
        listen 80;
        
        server_name _;

        location /static{
                alias /프로젝트경로/static;
        }
        location / {
                include proxy_params;
                proxy_pass http://unix:/경로/app.sock #소켓경로적어주기
                proxy_buffer_size 128k;
                proxy_buffers 4 256k;
                proxy_busy_buffers_size 256k;
                fastcgi_buffering on;
                fastcgi_buffer_size 16k;
                fastcgi_buffers 16 16k;
}

이렇게 하고 service nginx restart 해주면됨

포트번호 없이 테스트 ㄱㄱ

잘되면 이제 gunicorn 서비스 등록해서 알아서 잘 켜져있게 해주자.
파일명은 app.service 라고 할꺼임


[Unit]
Description= gunicorn daemon
After=network.target
[Service]
User=user
Group=www-data
WorkingDirectory=/프로젝트경로
ExecStart=/아나콘다에 구니콘 경로/bin/gunicorn -c gunicorn.config.py\
--workers 1 \
--bind unix:app.sock -m 007 app:app \
[Install]
WantedBy=multi-user.target

구니콘 경로 모를땐

which gunicorn

해주면 됨.

그렇게 하고

sudo systemctl start app.service
sudo systemctl status app.service

해서 잘 되나 보면됨.
잘 되고 있으면 프로젝트 경로에 app.sock 만들어져 있을것.
만약 플라스크 내용 수정하면 app.sock도 한번 바꿔줘야한다.

자동 실행 및 해제 코드는

sudo systemctl enable app.service
sudo systemctl disable app.service

profile
제주도 프론트앤드 개발자의 개발 일기

0개의 댓글