我不久前开始使用 Cherokee 托管网站。对于外部源(FastCGI 等),如果找不到在指定套接字或端口上运行的进程,它可以选择启动进程。这很棒,因为这意味着如果 PHP 或 Django 站点崩溃(偶尔会发生),它会自动重新启动。
在使用 PHP-FPM 的新服务器上,我无法使用 Cherokee(它有 PHP 的错误),所以我已转移到 NGINX。我真的很喜欢 NGINX(因为它的配置风格),但我遇到了进程崩溃且永不重生的严重问题。 PHP 有时会这样做,但 Django 网站的问题更大。我已经为它们创建了初始化脚本,它们在启动时出现,但如果它们在重新启动之间失败,这对我没有帮助。
我想我正在寻找 FastCGI 代理。像 Cherokee 这样的东西,知道哪些进程应该在哪些套接字/端口上运行,并按需重新生成它们。这样的事情存在吗?有没有办法将其构建到 NGINX 中(为了便于配置)?
答案1
怎么样守护进程工具特别是监督工具
监督监控服务。它启动服务并在服务终止时重新启动该服务。设置新服务很简单:所有监督需求都是一个包含运行该服务的运行脚本的目录。
答案2
重生于初始化表
答案3
我赞同这个daemontools
建议,但如果你不喜欢 DJB 软件的工作方式(无论出于什么原因),还有supervisord
。
我不久前设置了一个 FreeBSD 映像,用于supervisord
管理nginx
和gunicorn
,我用来托管一些简单的 WSGI 应用程序,整个过程非常简单。
顺便说一句,如果您是为 Django 执行此操作,Gunicorn 可以让部署 Django 应用程序变得非常简单。看这篇博文更多细节。
答案4
你有没有考虑过god
?
God 是一个用 Ruby 编写的易于配置、易于扩展的监控框架。
保持服务器进程和任务运行应该是部署过程的一个简单部分。 God 的目标是成为最简单、最强大的监控应用程序。
我用它来确保如果 Rails/nginx 实例崩溃,它们会复活,虽然我没有看到内置支持检查它是否使用正确的端口,但如果问题是进程失败或不再运行,你不会出错的god
。