내 목표:
- 동일한 애플리케이션에서 여러 Python Flask 애플리케이션 제공개발하다섬기는 사람
- 서버 측 캐싱 없음
-Gunicorn 애플리케이션을 백그라운드 작업으로 실행
-nginx는 역방향 프록시 역할을 하며 호스트 이름으로 애플리케이션 인스턴스를 확인하며 모두 포트 80에서 실행됩니다.
systemd를 사용하여 백그라운드에서 Flask/Gunicorn 앱을 실행할 수 있다는 것을 깨달았습니다. 문제는 이 앱이 내 앱의 캐시된 버전을 제공하고 새 작업을 제출할 때마다 내 빌드의 새 버전을 제공하고 싶다는 것입니다. 실행 중 버전
systemd/system/website.com.service
[Unit]
Description=Gunicorn instance to serve website.com
After=network.target
[Service]
User=melcma
Group=www-data
PIDFile=/var/tmp/gunicorn.pid
WorkingDirectory=/var/www/website.com
Environment="PATH=/var/www/website.com/env/bin"
ExecStart=/var/www/website.com/env/bin/gunicorn --workers 1 --bind unix:website.com.sock -m 007 wsgi:app
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s TERM $MAINPID
[Install]
WantedBy=multi-user.target
내가 아는 한, "ExecReload=/bin/kill -s HUP $MAINPID" 줄은 내 서버를 다시 로드해야 하지만 파일 변경 시 이를 어떻게 트리거할 수 있습니까? ExecStart 명령에 "--reload"를 추가하려고 시도했지만 효과가 없었습니다.
그리고 보너스 질문이 있습니다:
systemd를 사용하는 것이 이를 달성하는 좋은 방법입니까, 아니면 오히려 서버를 손상시키겠습니까? (백그라운드에서 작업을 실행하고, gunicorn 인스턴스를 시작하고, 파일이 변경되면 자체적으로 새로 고쳐집니다.)