IT/서버

gunicorn 서비스로 등록하기

thesse 2021. 6. 7. 16:27
300x250
반응형

gunicorn의 시작, 중지를 쉽게 하고 리눅스 서버 재부팅시 gunicorn 자동실행을 위해

 

환경 변수 파일 생성

/home/ubuntu/venv/myproject.env

FLASK_APP=pybo
FLASK_ENV=development
APP_CONFIG_FILE=/home/ubuntu/projects/myproject/config/production.py

 

서비스 파일 생성

/etc/systemd/system/myproject.service

[Unit]
Description=gunicorn daemon
After=network.target

[Service]
User=ubuntu
Group=ubuntu
WorkingDirectory=/home/ubuntu/projects/myproject
EnvironmentFile=/home/ubuntu/venvs/myproject.env
ExecStart=/home/ubuntu/venvs/myproject/bin/gunicorn \
 --workers 2 \
 --bind unix:/tmp/myproject.sock \
 "pybo:create_app()"

[Install]
WantedBy=multi-user.target

 

실행해보기

# 서비스 시작
sudo systemctl start myproject.service

# 서비스 실행 상태 확인
sudo systemctl status myproject.service

# 리눅스 서버 재시작할때 자동 실행
sudo systemctl enable myproject.service

 

만약 서비스를 시작하고 나서 status를 쳤을 때 active:fail이 뜬다면

아래 명령어로 syslog 파일 확인하고 수정

tail -f /var/log/syslog

 

수정한 후에는 systemctl daemon-reload 해주고 다시 start

(myproject) ubuntu@...:~/venvs$ sudo systemctl start myproject.service
Warning: The unit file, source configuration file or drop-ins of myproject.service changed on disk. Run 'systemctl daemon-reload' to reload units.
(myproject) ubuntu@...:~/venvs$ sudo systemctl daemon-reload
(myproject) ubuntu@...:~/venvs$ sudo systemctl start myproject.service
300x250
반응형