У меня очень сложный случай с последними версиями php5-fpm (от debphp) и nginx 1.4.3 на Ubtuntu 12.04LTS.
Короче не могу начать php5-fp
вообще, я продолжаю получать эту ошибку в системном журнале:
kernel: [1213013.564441] init: php5-fpm main process (7357) terminated with status 78
kernel: [1213013.564496] init: php5-fpm main process ended, respawning
..... (repeated several times)
kernel: [1213014.143911] init: php5-fpm respawning too fast, stopped
Мой /var/log/php5-fpm.log
вообще не заселен. Здесь нет php5-fpm.sock
и php5-fpm.pid
в /run
(или /var/run
).
Мой /etc/php5/fpm/php-fpm.conf
находится ниже: (этот файл, похоже, сейчас не загружается, поскольку я пытался поместить в него ложную информацию, но не вызвал никаких изменений)
;;;;;;;;;;;;;;;;;;;;;
; FPM Configuration ;
;;;;;;;;;;;;;;;;;;;;;
include=/etc/php5/fpm/*.conf
;;;;;;;;;;;;;;;;;;
; Global Options ;
;;;;;;;;;;;;;;;;;;
[global]
; Pid file
; Note: the default prefix is /var
; Default Value: none
pid = /run/php5-fpm.pid
catch_workers_output = yes
; Log level
; Possible Values: alert, error, warning, notice, debug
; Default Value: notice
log_level = debug
; To configure the pools it is recommended to have one .conf file per
; pool in the following directory:
include=/etc/php5/fpm/pool.d/*.conf
include=/var/www/vhosts/mysite.com/w/w/w/www/config/fpm-pool.conf
Проверка разрешений:
ls -l /etc/php5/fpm/php-fpm.conf
-rwxrwxrwx 1 root root 4641 Nov 6 01:37 /etc/php5/fpm/php-fpm.conf
Мой include=/var/www/vhosts/mysite.com/w/w/w/www/config/fpm-pool.conf
(этот файл, похоже, больше не загружается)
[www.mysite.com]
listen = /run/php5-fpm.sock
# listen = 127.0.0.1:9000
listen.backlog = -1
listen.allowed_clients = 127.0.0.1
listen.owner = www.mysite.com
listen.group = mysite.com
listen.mode = 0666
user = www.mysite.com
group = mysite.com
pm = dynamic
pm.max_requests = 0
pm.max_children = 15
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3
pm.status_path = /php_pool_wwww.mysite.com_status
ping.path = /www.mysite.com_ping
ping.response = www.mysite.com_pong
request_terminate_timeout = 30
request_slowlog_timeout = 20
slowlog = /var/www/vhosts/mysite.com/w/w/w/www/logs/php-slow.log
rlimit_files = 131072
rlimit_core = unlimited
chroot = /var/www/vhosts/mysite.com/w/w/w/www/
; Chdir to this directory at the start. This value must be an absolute path.
; Default Value: current directory or / when chroot
; chdir = /htdocs
catch_workers_output = yes
env[HOSTNAME] = $HOSTNAME
env[TMP] = /tmp
env[TMPDIR] = /tmp
env[TEMP] = /tmp
security.limit_extension = .php
; php_value/php_flag - you can set classic ini defines which can
; be overwritten from PHP call 'ini_set'.
; php_admin_value/php_admin_flag - these directives won't be overwritten by
; PHP call 'ini_set'
php_flag[display_errors] = on
php_admin_value[error_log] = /logs/php_err.log
php_admin_flag[log_errors] = on
php_admin_value[memory_limit] = 100M
php_value[max_execution_time] = 300
Проверка разрешений:
ls -l /var/www/vhosts/mysite.com/w/w/w/www/config/fpm-pool.conf
-rwxr-xr-x 1 www.mysite.com mysite.com 1830 Nov 6 01:05 var/www/vhosts/mysite.com/w/w/w/www/config/fpm-pool.conf
Проверка прав пользователя / группы:
groups www.mysite.com
www.mysite.com : www.mysite.com www-data mysite.com
Я не думаю, что это имеет какое-то отношение к nginx, потому что php5-fpm
сам по себе сейчас вообще не может запуститься, но для того, чтобы иметь всю информацию: nginx также настроен на использование того же пользователя / группы
Процесс, который наблюдал выскочка, умер, но рабочие пула все еще работают. Чтобы исправить это, запустите:
sudo killall php-fpm
sudo start php5-fpm
Задание php5-fpm будет многократно завершаться со статусом 78, пока все старые рабочие потоки не будут мертвы. Обратите внимание, что сервер обычно работает в этом состоянии, даже если выскочка не управляет службой. Однако когда он в конечном итоге умирает, он не возрождается автоматически, поэтому его следует исправить как можно скорее. Простая перезагрузка также решит проблему, но приведет к простою.
Недавно я столкнулся с этой же проблемой. Оказывается, другой процесс уже прослушивал тот же порт. Чтобы узнать, какой процесс запущен, я выполнил следующую команду:
sudo netstat -nltp
Оказывается, что hhvm
уже прослушивал порт 9000.
tcp6 0 0 :::9000 :::* LISTEN 17765/hhvm
Как только я остановил демон hhvm, php5-fpm успешно запустился.