Centos

php-fpm56 使用 systemd centos7 執行時超時

  • October 27, 2019

我使用以下標誌在 CentOS 7 上使用 ICU4C 64_2 編譯了我自己的 PHP 5.6.40(帶 fpm):

./configure CXXFLAGS="-std=c++11 -DU_USING_ICU_NAMESPACE=1" \
       --prefix=/usr/local/php56 \
       --program-suffix=56 \
       --enable-fpm \
       --with-config-file-scan-dir=/usr/local/php56/lib/php.conf.d \
       --with-curl \
       --with-gd \
       --enable-gd-native-ttf \
       --with-gettext \
       --with-jpeg-dir=/usr/local/lib \
       --with-freetype-dir=/usr/local/lib \
       --with-libxml-dir=/usr/local/lib \
       --with-kerberos \
       --with-openssl \
       --with-mcrypt \
       --with-mhash \
       --with-mysql=mysqlnd \
       --with-mysql-sock=/var/lib/mysql/mysql.sock \
       --with-mysqli=mysqlnd \
       --with-pdo-mysql=mysqlnd \
       --with-pear \
       --with-png-dir=/usr/local/lib \
       --with-xsl \
       --with-zlib \
       --enable-zip \
       --with-iconv=/usr/local \
       --enable-bcmath \
       --enable-calendar \
       --enable-exif \
       --enable-ftp \
       --enable-sockets \
       --enable-soap \
       --enable-mbstring \
       --with-icu-dir=/usr/local/icu \
       --enable-intl

編譯和安裝程序成功,php 執行良好。

為了使用 systemd 處理 php-fpm56,我建構了以下服務文件:

[Unit]
Description=The PHP FastCGI Process Manager
After=syslog.target network.target

[Service]
Type=notify
PIDFile=/run/php-fpm56.pid
ExecStart=/usr/local/php56/sbin/php-fpm56 --nodaemonize --pid=/run/php-fpm56.pid --fpm-config /usr/local/php56/etc/php-fpm.conf
ExecReload=/bin/kill -USR2 $MAINPID
LimitMEMLOCK=infinity
LimitNOFILE=65535

PrivateTmp=true
PrivateDevices=true
ProtectKernelModules=true
ProtectKernelTunables=true
ProtectControlGroups=true
RestrictRealtime=true
RestrictAddressFamilies=AF_INET AF_INET6 AF_UNIX

[Install]
WantedBy=multi-user.target

/usr/local/php56/etc/php-fpm.conf :

[global]
error_log = /var/log/php-fpm56.log
emergency_restart_threshold = 3
emergency_restart_interval = 1m
process_control_timeout = 5

log_level = notice

;;;;;;;;;;;;;;;;;;;;
; Pool Definitions ;
;;;;;;;;;;;;;;;;;;;;

[webapps]
user = $pool
group = $pool

listen = /usr/local/php56/sockets/$pool.sock
listen.owner = $pool
listen.group = nginx
listen.mode = 660

pm = ondemand
pm.max_children = 10
pm.process_idle_timeout = 60
pm.max_requests = 1000

security.limit_extensions = .php .php5 .php56 .inc .phtml

include=/etc/booting/users_data/*/php-fpm56.conf

嘗試啟動服務會導致超時:

php-fpm56.service - The PHP FastCGI Process Manager
  Loaded: loaded (/usr/lib/systemd/system/php-fpm56.service; enabled; vendor preset: disabled)
  Active: failed (Result: timeout) since Sun 2019-10-27 14:00:17 IST; 2min 12s ago
 Process: 10008 ExecStart=/usr/local/php56/sbin/php-fpm56 --nodaemonize --pid=/run/php-fpm56.pid --fpm-config /usr/local/php56/etc/php-fpm.conf (code=exited, status=0/SUCCESS)
Main PID: 10008 (code=exited, status=0/SUCCESS)

Oct 27 13:58:47 asdasd.booting.cloud systemd[1]: Starting The PHP FastCGI Process Manager...
Oct 27 13:58:47 asdasd.booting.cloud php-fpm56[10008]: [27-Oct-2019 13:58:47] WARNING: Nothing matches the include pattern '/etc/booting/users_data/*/php-fpm56.conf' from /usr/local/php56/etc/php-fpm.conf at line 29.
systemd[1]: php-fpm56.service start operation timed out. Terminating.
systemd[1]: Failed to start The PHP FastCGI Process Manager.
systemd[1]: Unit php-fpm56.service entered failed state.
systemd[1]: php-fpm56.service failed.

日誌文件:

NOTICE: fpm is running, pid 10008
NOTICE: ready to handle connections
NOTICE: Terminating ...
NOTICE: exiting, bye-bye!

我需要幫助找出導致此啟動失敗的原因。我用 php7.2 做了同樣的配置,它對我有用,沒有任何問題。

答案是配置時缺少標誌

--with-fpm-systemd

引用自:https://unix.stackexchange.com/questions/548962