概述
项目中安装部署最新nginx后由开发修改对应配置文件。在启动和重新启动nginx发现systemctl命令卡住无输出,在终止命令后发现服务实际已经运行。
解决办法
由于Nginx为yum安装,默认的pid文件路径是/run/nginx.pid
,开发修改了nginx中的默认pid文件路径。导致systemctl命令无法读取到pid内容以至于夯住。
[root@localhost ~]# vi /usr/lib/systemd/system/nginx.service
[Unit]
Description=The nginx HTTP and reverse proxy server
After=network-online.target remote-fs.target nss-lookup.target
Wants=network-online.target
\[Service\]
Type=forking
PIDFile=/run/nginx.pid
Nginx will fail to start if /run/nginx.pid already exists but has the wrong
===========================================================================
SELinux context. This might happen when running `nginx -t` from the cmdline.
============================================================================
https://bugzilla.redhat.com/show_bug.cgi?id=1268621
===================================================
ExecStartPre=/usr/bin/rm -f /run/nginx.pid
ExecStartPre=/usr/sbin/nginx -t
ExecStart=/usr/sbin/nginx
ExecReload=/usr/sbin/nginx -s reload
KillSignal=SIGQUIT
TimeoutStopSec=5
KillMode=process
PrivateTmp=true
`[Install]
WantedBy=multi-user.target`
修改PIDFile=
路径为Nginx配置文件中的pid路径即可解决。