我创建了一个目录来存储PHP5fpm:sudo mkdir /var/run/php-fpm的套接字文件。它属于root:root以及核心PHP流程。
当PHP启动时,它为这个目录中的每个池创建套接字文件,nginx使用它们进行通信。
但是,当我重新启动我的机器(sudo reboot)时,这个目录在重新启动之后就消失了,PHP无法启动,因为它无法在缺少的目录中创建套接字文件。
有什么问题吗?如何调试它?
我正在使用最新的UbuntuServer14.04。
发布于 2014-08-03 10:26:15
当前版本的Ubuntu使用所谓的Ubuntu来运行服务。有关这方面的更多信息,可以找到这里。
所有启动脚本都位于/etc/init目录中。不要将它与/etc/init.d目录中的旧init脚本混淆。
正如@Rhim在他的回答中所指出的,/var/run是一个临时挂载的文件系统,在每次重新启动后重新创建,因此不会在其中保持更改。因此,为了有一个用于套接字文件的自定义目录,每次都必须创建它。添加此类功能的最佳位置是位于:/etc/init/php5-fpm.conf中的PHP的upstart配置。
# php5-fpm - The PHP FastCGI Process Manager
description "The PHP FastCGI Process Manager"
author "Ondřej Surý <ondrej@debian.org>"
start on runlevel [2345]
stop on runlevel [016]
# Precise upstart does not support reload signal, and thus rejects the
# job. We'd rather start the daemon, instead of forcing users to
# reboot https://bugs.launchpad.net/ubuntu/+source/php5/+bug/1272788
#
# reload signal USR2
pre-start script
mkdir -p /var/run/php-fpm
/usr/lib/php5/php5-fpm-checkconf
end script
respawn
exec /usr/sbin/php5-fpm --nodaemonize --fpm-config /etc/php5/fpm/php-fpm.confpre-start节已经用于检查PHP配置文件,因此我已经将其转换为一个脚本部分,并在调用checkconf之前添加了自己的命令,用于创建套接字文件的direcotry。
有了这个脚本,它应该可以正常工作。为了控制服务的状态,请使用service命令,如:service php5-fpm start、service php5-fpm restart等。
我希望它能对某人有所帮助。干杯!
发布于 2014-07-25 22:09:47
我也认为在Ubuntu!
cat /etc/redhat-release
Fedora release 20 (Heisenbug)
df -h /run
Filesystem Size Used Avail Use% Mounted on
tmpfs 3.9G 904K 3.9G 1% /run
ls -la /var | grep run
lrwxrwxrwx. 1 root root 6 Dec 28 2013 run -> ../run
This directory is mounted as tmpfs.添加到启动脚本中,创建一个目录或更改pid文件的目录。
但我感到惊讶的是,它不会在重新启动后自动创建。
https://serverfault.com/questions/615461
复制相似问题