web-dev-qa-db-ja.com

PHP 5 FPMソケットファイルのディレクトリは、Ubuntuサーバーで再起動すると削除されます

PHP 5 FPM:Sudo mkdir /var/run/php-fpmのソケットファイルを保存するディレクトリを作成しました。これはroot:rootとコアPHP FPMプロセス。

PHP FPMが開始すると、このディレクトリ内のプールごとにソケットファイルが作成され、nginxはそれらを使用して通信します。

ただし、マシンを再起動すると(Sudo reboot)、このディレクトリは再起動後に消え、PHP FPMを開始できません。これにより、欠落しているディレクトリ内にソケットファイルを作成できません。 。

何が問題になる可能性がありますか?どうすればデバッグできますか?

最新のUbuntuServer14.04を使用しています。

4
Slava Fomin II

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 startservice php5-fpm restartなど。

私はそれが誰かを助けることを願っています。乾杯!

4
Slava Fomin II

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ファイルのディレクトリを変更します。
しかし、再起動後に自動的に作成されないことに驚いています。

1
Rhim