无法在Ubuntu上启动或停止php-fpm

时间:2014-05-05 03:05:45

标签: php

我正试图在Ubunutu上第一次安装php-fpm。我通过

安装了它
sudo apt-get install php5-fpm

安装完成后,我运行ps -waux | grep php5以查看是否有任何内容正在运行。我得到以下内容:

root      9625  0.5  0.6 133612 12836 ?        Ss   22:49   0:00 php-fpm: master process (/etc/php5/fpm/php-fpm.conf)

看起来它正在运行,所以我试图通过执行:

来阻止它
sudo /etc/init.d/php5-fpm stop

这似乎什么都不做。在命令行上没有给出错误消息,当我再次运行ps时,存在相同的过程。如果我跑的话,我可以让它停止:

sudo service php5-fpm stop

我第一次运行此命令时遇到错误,无法找到目录,但进程确实停止了。当我再次启动和停止服务时,它似乎工作正常,我没有收到有关丢失目录的错误消息。

有人可以向我解释为什么/etc/init.d/php5-fpm方法不起作用吗?我见过的所有教程都使用这种方法来启动和停止php5-fpm。

3 个答案:

答案 0 :(得分:23)

快速回答...你不使用init.d脚本来控制(停止/启动/状态等)php-fpm,因为它是由较新的'upstart'控制的。使用以下服务命令来停止和重新启动等。我认为这是一个“错误”,它悄然退出而没有声明它现在由暴发户控制。

更详细地看一下这个问题,导致上面的解释。

我在Ubuntu 14.04上看到完全相同的问题,您可以使用服务命令停止/启动/获取php5-fpm的状态:I.E这些工作正常: -

# sudo service php5-fpm status
php5-fpm start/running, process 18793
# sudo service php5-fpm stop
php5-fpm stop/waiting
# sudo service php5-fpm status
php5-fpm stop/waiting
# sudo service php5-fpm start
php5-fpm start/running, process 18949
# sudo service php5-fpm status
php5-fpm start/running, process 18949

但/etc/init.d/php5-fpm命令无效: -

# /etc/init.d/php5-fpm stop
# ps -ef | grep php
root     18949     1  0 12:15 ?        00:00:00 php-fpm: master process (/etc/php5/fpm/php-fpm.conf)                    
www-data 18952 18949  0 12:15 ?        00:00:00 php-fpm: pool www                                                       
www-data 18953 18949  0 12:15 ?        00:00:00 php-fpm: pool www                                                       
root     18970 10051  0 12:17 pts/2    00:00:00 grep --color=auto php

注意不会返回任何内容,并且不会停止该过程。类似地,对于状态和启动版本,不返回任何内容,并且该过程不受影响。

我在.... init_is_upstart上找到了退出init.d脚本的行:

# Don't run if we are running upstart
if init_is_upstart; then
    exit 1
fi

当然它应该在这里说出一条错误信息......比如'使用服务命令来停止/启动php-fpm'。

答案 1 :(得分:18)

我遇到了与Ubuntu 14.10上的php5-fpm相关的类似问题。 我为其中一个虚拟主机配置了php5-fpm,当我尝试浏览网站时,我得到了503服务不可用。 我每次尝试

root@testupgrade:~# service php5-fpm restart
stop: Unknown instance:
php5-fpm start/running, process 2775

我在syslog中获得了以下内容:

Dec  7 14:08:53 testupgrade kernel: [  230.711612] init: php5-fpm main process (2775) terminated with status 78
Dec  7 14:08:53 testupgrade kernel: [  230.711639] init: php5-fpm main process ended, respawning
Dec  7 14:08:53 testupgrade kernel: [  230.866617] init: php5-fpm main process (2783) terminated with status 78
Dec  7 14:08:53 testupgrade kernel: [  230.866643] init: php5-fpm main process ended, respawning
Dec  7 14:08:54 testupgrade kernel: [  231.027522] init: php5-fpm main process (2791) terminated with status 78
Dec  7 14:08:54 testupgrade kernel: [  231.027548] init: php5-fpm main process ended, respawning
Dec  7 14:08:54 testupgrade kernel: [  231.137792] init: php5-fpm main process (2799) terminated with status 78
Dec  7 14:08:54 testupgrade kernel: [  231.137807] init: php5-fpm main process ended, respawning
Dec  7 14:08:54 testupgrade kernel: [  231.221146] init: php5-fpm main process (2807) terminated with status 78
Dec  7 14:08:54 testupgrade kernel: [  231.221161] init: php5-fpm main process ended, respawning
Dec  7 14:08:54 testupgrade kernel: [  231.301859] init: php5-fpm main process (2815) terminated with status 78
Dec  7 14:08:54 testupgrade kernel: [  231.301874] init: php5-fpm main process ended, respawning
Dec  7 14:08:54 testupgrade kernel: [  231.381635] init: php5-fpm main process (2823) terminated with status 78
Dec  7 14:08:54 testupgrade kernel: [  231.381649] init: php5-fpm main process ended, respawning
Dec  7 14:08:54 testupgrade kernel: [  231.469211] init: php5-fpm main process (2831) terminated with status 78
Dec  7 14:08:54 testupgrade kernel: [  231.469225] init: php5-fpm main process ended, respawning
Dec  7 14:08:54 testupgrade kernel: [  231.548950] init: php5-fpm main process (2839) terminated with status 78
Dec  7 14:08:54 testupgrade kernel: [  231.548964] init: php5-fpm main process ended, respawning
Dec  7 14:08:54 testupgrade kernel: [  231.628781] init: php5-fpm main process (2847) terminated with status 78
Dec  7 14:08:54 testupgrade kernel: [  231.628795] init: php5-fpm main process ended, respawning
Dec  7 14:08:54 testupgrade kernel: [  231.711933] init: php5-fpm main process (2855) terminated with status 78
Dec  7 14:08:54 testupgrade kernel: [  231.711947] init: php5-fpm respawning too fast, stopped

我尝试的是检查我的虚拟主机池的php5-fpm配置是否真的有效。 它被配置为在/etc/php5/fpm/pool.d/www.conf中使用以下配置在TCP端口上列出 我已正确指示池列出如下:

listen = 127.0.0.1:9000

我尝试使用service命令重启几次,因为它不起作用我决定检查启动脚本。 我编辑了/etc/init/php5-fpm.conf,我注意到我已经拥有该行的最新错误修复版本"重载信号USR2"。 然后我注意到以下一行:

pre-start exec /usr/lib/php5/php5-fpm-checkconf

我检查了/ usr / lib / php5 / php5-fpm-checkconf脚本并注意到附加到$ errors变量的语法检查:

/usr/sbin/php5-fpm --fpm-config /etc/php5/fpm/php-fpm.conf

我在shell中执行它并注意到以下内容:

root@testupgrade:~# /usr/sbin/php5-fpm --fpm-config /etc/php5/fpm/php-fpm.conf
[07-Dec-2014 13:46:14] ERROR: [pool www] 'slowlog' must be specified for use with 'request_slowlog_timeout'
[07-Dec-2014 13:46:14] ERROR: failed to post process the configuration
[07-Dec-2014 13:46:14] ERROR: FPM initialization failed

这意味着我触摸了我的php-fpm.conf并搞砸了但是错误无处可寻,我没有迹象表明这是php5-fpm服务启动失败的原因。 我修复了/etc/php5/fpm/pool.d/www.conf文件中的语法,然后尝试使用service命令重新启动。 该服务在所需的端口9000上启动并打开了一个tcp侦听器。 vhost也开始工作了。 因此,请始终使用上述命令检查php-fpm语法和配置,以避免服务无法启动时出现问题。

答案 2 :(得分:1)

通常,init脚本不会总是吐出导致情况发生的问题。您最好的选择是cat /etc/init.d/php5-fpm并找到它尝试运行的命令,然后使用该命令手动启动该过程。

根据FPM启动脚本的经验,FPM通常会发出随机日志文件中看不到或丢失的错误,然后您就能找到并修复该错误。一旦解决,你的init脚本应该很适合去。