在Linux系统中,有多种方法可以实现PHP-FPM的自动重启。以下是几种常见的方法:
大多数现代Linux发行版使用Systemd来管理服务。你可以创建一个Systemd服务文件来管理PHP-FPM。
创建Systemd服务文件:
在 /etc/systemd/system/
目录下创建一个新的服务文件,例如 php-fpm.service
。
sudo nano /etc/systemd/system/php-fpm.service
编辑服务文件: 在文件中添加以下内容:
[Unit]
Description=The PHP FastCGI Process Manager
After=syslog.target network.target
[Service]
Type=simple
User=www-data
Group=www-data
ExecStart=/usr/sbin/php-fpm --nodaemonize --fpm-config /etc/php/7.4/fpm/php-fpm.conf
ExecReload=/bin/kill -USR2 $MAINPID
PrivateTmp=true
[Install]
WantedBy=multi-user.target
请根据你的PHP版本和配置路径调整 ExecStart
和 fpm-config
路径。
重新加载Systemd配置:
sudo systemctl daemon-reload
启动并启用服务:
sudo systemctl start php-fpm
sudo systemctl enable php-fpm
检查服务状态:
sudo systemctl status php-fpm
Supervisor是一个进程控制系统,可以用来管理和监控多个进程。
安装Supervisor:
sudo apt-get install supervisor
配置Supervisor:
在 /etc/supervisor/conf.d/
目录下创建一个新的配置文件,例如 php-fpm.conf
。
sudo nano /etc/supervisor/conf.d/php-fpm.conf
编辑配置文件: 在文件中添加以下内容:
[program:php-fpm]
command=/usr/sbin/php-fpm --nodaemonize --fpm-config /etc/php/7.4/fpm/php-fpm.conf
autostart=true
autorestart=true
stderr_logfile=/var/log/php-fpm.err.log
stdout_logfile=/var/log/php-fpm.out.log
user=www-data
请根据你的PHP版本和配置路径调整 command
路径。
重新加载Supervisor配置:
sudo supervisorctl reread
sudo supervisorctl update
启动并启用服务:
sudo supervisorctl start php-fpm
你可以使用Cron Job来定期检查PHP-FPM进程并重启它。
编辑Cron Job:
sudo crontab -e
添加Cron Job: 在文件末尾添加以下行:
* * * * * /usr/bin/systemctl restart php-fpm
这将每分钟重启一次PHP-FPM。你可以根据需要调整时间间隔。
你可以编写一个简单的脚本来监控PHP-FPM进程并自动重启它。
创建脚本:
sudo nano /usr/local/bin/php-fpm-watchdog.sh
编辑脚本: 在文件中添加以下内容:
#!/bin/bash
while true; do
if ! pgrep -f "php-fpm: master process" > /dev/null; then
echo "PHP-FPM is not running. Restarting..."
sudo systemctl restart php-fpm
fi
sleep 60
done
赋予脚本执行权限:
sudo chmod +x /usr/local/bin/php-fpm-watchdog.sh
运行脚本:
sudo /usr/local/bin/php-fpm-watchdog.sh &
你可以将这个脚本添加到Systemd服务中,以便在系统启动时自动运行。
通过以上方法,你可以实现PHP-FPM在Linux系统中的自动重启。选择哪种方法取决于你的具体需求和系统配置。