如何将WordPress配置为Linux systemd服务?
可以将单个WordPress站点配置为systemd服务
当然能实现,但和你用Django+Gunicorn的方式不太一样——WordPress本身没有独立的进程需要管理,它依赖Nginx的站点配置和PHP-FPM的进程池运行。我们可以通过systemd服务封装「启用/停用站点Nginx配置」「重载对应PHP-FPM池(可选)」的操作,实现像启停systemd服务一样管控单个WordPress站点。
前提准备
- 如果你想精细控制每个站点的PHP资源,建议给每个WordPress站点创建独立的PHP-FPM池(默认PHP-FPM是共享池,也能直接用,但单独池的隔离性更好)。
- 每个站点的Nginx配置文件已放在
/etc/nginx/sites-available/,启用时会软链到/etc/nginx/sites-enabled/目录。
步骤1:创建单个站点的systemd服务文件
假设你的站点域名是example.com,对应Nginx配置文件是/etc/nginx/sites-available/example.com,PHP-FPM池配置是/etc/php/8.1/fpm/pool.d/example.com.conf(如果用单独池的话)。
创建服务文件/etc/systemd/system/wordpress-example.service:
[Unit] Description=Manage WordPress site example.com After=nginx.service php8.1-fpm.service [Service] Type=oneshot RemainAfterExit=yes ExecStart=/usr/bin/bash -c "ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/ && nginx -t && systemctl reload nginx && if [ -f /etc/php/8.1/fpm/pool.d/example.com.conf ]; then systemctl reload php8.1-fpm; fi" ExecStop=/usr/bin/bash -c "rm -f /etc/nginx/sites-enabled/example.com && nginx -t && systemctl reload nginx" [Install] WantedBy=multi-user.target
配置说明
Type=oneshot:表示服务执行一次性命令,适合这种启停站点的操作场景。RemainAfterExit=yes:让systemd认为命令执行完成后服务仍处于运行状态,这样你可以用systemctl is-active查看站点是否启用。ExecStart:执行启用站点的操作——创建Nginx配置软链、验证Nginx配置并重载、如果有单独PHP-FPM池则重载PHP-FPM。ExecStop:执行停用站点的操作——移除Nginx配置软链、验证并重载Nginx。
步骤2:重载systemd并测试服务
- 重载systemd使新服务生效:
sudo systemctl daemon-reload
- 启用站点服务:
sudo systemctl start wordpress-example.service
- 停用站点服务:
sudo systemctl stop wordpress-example.service
- 查看站点当前状态:
sudo systemctl is-active wordpress-example.service
注意事项
- 如果用的是共享PHP-FPM池,直接删掉
ExecStart里关于PHP-FPM重载的命令就行。 - 每次修改服务文件后,都要执行
sudo systemctl daemon-reload让配置生效。 - 确保配置文件路径和你的实际环境一致,别照搬示例里的域名和路径。
- 可以用
systemctl enable wordpress-example.service设置开机自动启用这个站点。
内容的提问来源于stack exchange,提问作者Mahmud Abdur Rahman Toki
相关产品推荐
相关产品推荐

