确保进程始终运行

Oli*_*Oli 28 fastcgi monitoring process-management

不久前,我开始使用 Cherokee 托管网站。对于外部源(FastCGI 等),如果找不到在指定套接字或端口上运行的进程,它可以选择启动进程。这很棒,因为这意味着如果 PHP 或 Django 站点发生故障(它们偶尔会发生故障),它会自动重新启动。

在使用 PHP-FPM 的新服务器上,我无法使用 Cherokee(它有一个 PHP 错误),因此我已转移到 NGINX。我真的很喜欢 NGINX(因为它的配置风格),但是我遇到了进程崩溃并且永远不会重生的严重问题。PHP 有时会这样做,但 Django 站点更像是一个问题。我已经为它们创建了 init 脚本,它们在启动时出现,但是如果它们在重新启动之间出现故障,这对我没有帮助。

我想我正在寻找 FastCGI 代理。像切诺基这样的东西,知道哪些进程应该在哪些套接字/端口上运行并按需重新生成它们。这样的事情存在吗?有没有办法将它构建到 NGINX 中(为了便于配置)?

小智 17

daemontools怎么样,特别是监督工具

supervise 监视服务。它启动服务并在服务终止时重新启动服务。设置新服务很容易:所有监督需求都是一个包含运行服务的运行脚本的目录。


Han*_*Gay 5

我支持这个daemontools建议,但如果您不喜欢 DJB 软件的工作方式(无论出于何种原因),也有supervisord.

不久前,我设置了一个 FreeBSD 映像,用于supervisord管理nginxgunicorn,我用来托管一些简单的 WSGI 应用程序,整个过程非常简单。

如果您为 Django 执行此操作,Gunicorn 可以让部署 Django 应用程序变得非常简单,顺便说一句。有关更多详细信息,请参阅此博客文章