我的目标:
-在同一个下提供多个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”应该重新加载我的服务器,但是如何在文件更改下触发它?我尝试将“--reload”添加到 ExecStart 命令但没有效果。
还有奖金问题:
使用 systemd 来达到这个目的是一个好方法还是它宁愿破坏服务器? (在后台运行任务,启动gunicorn实例并在文件更改时刷新自身)