PHP 5 FPM:Sudo mkdir /var/run/php-fpm
のソケットファイルを保存するディレクトリを作成しました。これはroot:root
とコアPHP FPMプロセス。
PHP FPMが開始すると、このディレクトリ内のプールごとにソケットファイルが作成され、nginxはそれらを使用して通信します。
ただし、マシンを再起動すると(Sudo reboot
)、このディレクトリは再起動後に消え、PHP FPMを開始できません。これにより、欠落しているディレクトリ内にソケットファイルを作成できません。 。
何が問題になる可能性がありますか?どうすればデバッグできますか?
最新のUbuntuServer14.04を使用しています。
Ubuntuの現在のバージョンでは、いわゆるup-start構成を使用してサービスを実行しています。これについての詳細は見つけることができます ここ 。
すべての起動スクリプトは、/etc/init
ディレクトリにあります。 /etc/init.d
ディレクトリにある古いinitスクリプトと混同しないでください。
@Rhimが彼の回答で述べたように、/var/run
は一時的にマウントされたファイルシステムです。つまり、再起動するたびに再作成されるため、変更は保持されません。したがって、ソケットファイル用のカスタムディレクトリを作成するには、毎回作成する必要があります。このような機能を追加するのに最適な場所は、/etc/init/php5-fpm.conf
にあるPHP FPMのupstartconfigです。
これがこの設定の変更バージョンです:
# php5-fpm - The PHP FastCGI Process Manager
description "The PHP FastCGI Process Manager"
author "Ondřej Surý <[email protected]>"
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.conf
pre-start
スタンザはすでにPHP FPM構成ファイルをチェックするために使用されていたので、スクリプトセクションに変換し、checkconf
を呼び出す前にソケットファイルのディレクトリを作成するための独自のコマンドを追加しました。
このスクリプトを使用すると、正常に動作するはずです。サービスの状態を制御するには、次のようにservice
コマンドを使用します:service php5-fpm start
、service php5-fpm restart
など。
私はそれが誰かを助けることを願っています。乾杯!
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ファイルのディレクトリを変更します。
しかし、再起動後に自動的に作成されないことに驚いています。