Coding/Python
[Python & FastAPI] FastAPI와 Gunicorn을 사용한 서버 설정 (systemctl 에 설정하기)
포스트it
2024. 8. 23. 17:07
728x90
반응형
[Python & FastAPI] FastAPI와 Gunicorn을 사용한 서버 설정 (systemctl 에 설정하기)
FastAPI와 Gunicorn을 연동하여 서버를 설정을 해보았습니다 !
Gunicorn 시스템 서비스 파일 설정
우선, FastAPI 애플리케이션을 Gunicorn과 함께 실행하기 위해 시스템 서비스 파일을 설정해야 합니다. 아래는 systemd에서 사용하는 서비스 파일의 예제입니다.
vi /etc/systemd/system/gunicorn.service
# gunicorn.service
[Unit]
Description=gunicorn daemon
After=network.target
[Service]
User=ubuntu
Group=ubuntu
WorkingDirectory=/home/ubuntu/user_project
ExecStart=/home/ubuntu/.local/bin/gunicorn main:app \
--workers 2 \
--worker-class uvicorn.workers.UvicornWorker \
--bind unix:/tmp/myapi.sock
[Install]
WantedBy=multi-user.target
위 설정 파일은 Gunicorn이 FastAPI 애플리케이션을 /home/ubuntu/user_project 디렉토리에서 실행하도록 설정합니다. 또한, unix:/tmp/myapi.sock 소켓으로 바인딩하며, Uvicorn 워커 클래스를 사용하여 2개의 워커 프로세스를 실행합니다.
서비스 파일 작성
파일 권한 설정 및 systemctl 적용
sudo chmod 644 /etc/systemd/system/gunicorn.service
sudo systemctl daemon-reload
gunicorn 경로 확인 및 작동 테스트
위에 작성 했던 경로 및 명령어가 잘 작동되는지 체크 !
# 구니콘 위치 확인
$ which gunicorn
# 작동테스트
$ /home/ubuntu/.local/bin/gunicorn main:app --workers 2 --worker-class uvicorn.workers.UvicornWorker --bind unix:/tmp/myapi.sock
실행
$ sudo systemctl start gunicorn.service # 실행
$ sudo systemctl status gunicorn.service # 상태확인
$ sudo journalctl -u gunicorn.service # 작동 안될 경우 체크
728x90
반응형