我正试图在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。
答案 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脚本应该很适合去。