Centos
php-fpm56 使用 systemd centos7 執行時超時
我使用以下標誌在 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