我正在设置一个服务器来托管一个 Django 应用程序,该应用程序具有:
uWSGI
由 ubuntu 的 uWSGI 初始化脚本启动的应用程序celeryd
开始于supervisord
所以我正在编写一个部署脚本,它将:
- 从 git 拉取代码
- 迁移数据库
- 告诉
uWSGI
重新启动,因此它将获取新代码。 - 告诉
celeryd
重新启动,因此它也会获取新代码。
uWSGI
具有此配置功能:
touch-reload
gracefully reload the uWSGI stack when a file/directory changes.
所以我的脚本由运行所有应用程序进程的非特权用户运行。
要重新启动uWSGI
我可以简单地touch ~/.restart_uwsgi
。
有什么方法可以在不授予非特权用户 sudo 访问权限的情况celeryd
下运行相同的操作,这样他就可以了?supervisord
supervisorctl restart celeryd