重启后 PHP-FPM 不会自动启动

Ste*_*son 17 linux nginx php-fpm init.d amazon-linux

我正在运行 PHP-FPM 和 Nginx,偶尔出于某种原因,我必须重新启动服务器。一旦服务器再次运行,nginx 服务会自动启动,但是 PHP-FPM 不会。当我sudo /etc/init.d/php-fpm restart在重新启动后立即运行命令并获得结果时,可以看到这一点:

$ sudo /etc/init.d/php-fpm restart
Stopping php-fpm:                                          [FAILED]
Starting php-fpm:                                          [  OK  ]
Run Code Online (Sandbox Code Playgroud)

这是预期的行为吗?使 PHP-FPM 自动启动的最佳方法是什么?是否有任何配置选项,或者我是否必须将命令添加到 Linux 启动脚本之一?

谢谢。

Mic*_*ton 27

因此,将其设置为在启动时启动:

chkconfig php-fpm on
Run Code Online (Sandbox Code Playgroud)


Cub*_*oft 7

我刚刚在 Ubuntu 16.04 上遇到了这个问题,我把我的答案留在这里给 Google 的未来用户,他们偶然发现了这个问题。由于chkconfig主要针对 CentOS,因此它显然不存在于 Ubuntu 上。显然,要获得一个定制PHP(php-fpmSAPI)在启动下启动systemd,这是新的到Ubuntu 16.04(之前,新贵),它需要与超越只是删除了系统注册init.d脚本到/etc/init.d/。为了注册脚本,我运行了:

update-rc.d php-fpm defaults
Run Code Online (Sandbox Code Playgroud)

Areboot和随后的ps aux确认php-fpm确实是在启动时启动。它也被添加到/etc/init.d/.depend.start.

其他想法: Ubuntu Upstart 足够好,所以我update-rc.d在放置 init.d 脚本后不必运行- 它只是有效。完全忘记了那个命令。

  • 最初的问题是关于 Amazon Linux,我不能说有多少 Ubuntu 用户会看到它。对于 16.04 和 systemd,要做的是使用合适的 systemd 单元,而不是旧式的 upstart 或古老的 init 脚本。您应该能够通过发行版软件包或其他地方找到可用的 systemd 单元。 (2认同)

小智 5

从 CentOS 7 开始,您只需通过 systemctl 启用服务:

systemctl enable php-fpm
Run Code Online (Sandbox Code Playgroud)

您可以通过以下方式检查它是否正在运行:

systemctl status php-fpm
Run Code Online (Sandbox Code Playgroud)