Не удается запустить или остановить php-fpm на Ubuntu

Я пытаюсь установить php-fpm в первый раз на Ubunutu. Я установил его через

sudo apt-get install php5-fpm 

Когда установка завершается, я запускаю ps -waux | grep php5 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.

Быстрый ответ … вы не используете скрипты init.d для управления (stop / start / status и т. Д.) Php-fpm, потому что он контролируется более новым «выскочкой». Используйте следующую служебную команду, чтобы остановить и перезапустить и т. Д. Я думаю, что это немного «ошибка», что он тихо выходит, не заявляя, что теперь он контролируется выскочкой.

Более подробно рассмотрим эту проблему, которая приводит к объяснению выше.

Я вижу точно такую ​​же проблему на Ubuntu 14.04, вы можете остановить / запустить / получить статус php5-fpm с помощью служебных команд: IE эти работают нормально:

 # 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_is_upstart :

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

Конечно, здесь должно быть указано сообщение об ошибке … например «Использовать служебные команды для остановки / запуска php-fpm».

У меня была аналогичная проблема, связанная с php5-fpm на Ubuntu 14.10. Я настроил php5-fpm для одного из виртуальных хостов, и, пытаясь просмотреть сайт, я получил 503 Service Unavailable. Каждый раз, когда я пытался

 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 для этого виртуального пула. Он был настроен для перечисления на TCP-порт со следующей конфигурацией в /etc/php5/fpm/pool.d/www.conf. Я правильно проинструктировал список пулов следующим образом:

 listen = 127.0.0.1:9000 

Я попытался перезапустить несколько раз с помощью служебной команды, и поскольку она не работала, я решил проверить сценарии запуска. Я отредактировал файл /etc/init/php5-fpm.conf, и я заметил, что у меня уже есть последняя исправленная ошибка строки «reload signal 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 

Я выполнил его в оболочке и заметил следующее:

 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. Служба начала работу и открыла прослушиватель tcp на требуемом порту 9000. Призрак также начал работать. Поэтому всегда проверяйте синтаксис и конфигурацию php-fpm с помощью приведенной выше команды, чтобы избежать проблем с запуском службы.

Обычно сценарий инициализации не всегда выплюнет проблему, вызвав ситуацию. Ваш лучший вариант – cat /etc/init.d/php5-fpm и найти команду, которую он пытается запустить, а затем использовать эту команду для запуска процесса вручную.

Говоря по опыту сценариев запуска FPM, FPM, как правило, выплевывает ошибку, которую вы не можете увидеть или отсутствует в случайных файлах журналов, а затем вы сможете найти и исправить эту ошибку. После того, как вы решите, ваш сценарий инициализации должен быть хорошим, чтобы идти дальше.