我在同一台服务器上运行了2个不同的项目。它们都是与Gunicorn一起作为wsgi服务器的Django项目。顶部的服务器是Apache。目前有一个Jenkins作业,它从repo更新源代码并重启(Kill and start)gunicorn。这工作正常,直到服务器只服务1个站点。 我杀了枪炮如下
#!/bin/bash
ps -ef | grep gunicorn | grep -v grep | awk '{print $2}' | xargs kill -9
然后重新启动它。然而,这种方法不适用于2个站点,因为杀死Gunicorn完全杀死所有Gunicorn进程。在我运行构建的任何时候,只有该网站的枪支将被重新生成。
我环顾四周,发现Supervisor是一个实用程序,我应该用它来防止这种情况并无缝地重启Gunicorn。
你们有其他的建议或最佳实践我应该遵循吗?
由于
答案 0 :(得分:1)
Gunicorn + Supervisor是非常标准的堆栈,您可以将您的站点分离为不同的Supervisor任务,而不是告诉Jenkins重新启动Supervisor,使用Supervisor方法重新启动您的一个任务,然后就完成了。
如果您的网站崩溃并且Gunicorn需要再次执行,主管也很棒。
答案 1 :(得分:1)
要仅获取项目的主角并重新启动它,可以使用以下命令:
ps aux |grep gunicorn |grep yourappname | awk '{ print $2 }' |xargs kill -HUP
其他Gunicorn程序不会受到影响。