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
끝