二维码
搬瓦工 locvps

很久以前用Apache,后来偷懒就用Nginx了,毕竟轻量也够用。但是在某些机子(大概率和性能有关)上使用systemctl status nginx查看Nginx状态的时候,会出现以下报错内容:

nginx.service: Failed to parse PID from file /run/nginx.pid: Invalid argument

此报错的根源在于Nginx和systemd抢夺资源,systemd作为进程守护会读取PIDFile以实现在Nginx停止后删除PIDFile,但是Nginx启动需要时间,systemd在nginx完成启动前就去读取,从而导致了这个报错。处理方法也很简单,让systemd在执行ExecStart后等待一段时间(比如1秒钟)即可。

首先,打开/usr/lib/systemd/system/nginx.service文件,将ExecStartPost=/bin/sleep 1加入到ExecStart=/usr/sbin/nginx -g 'daemon on; master_process on;'这行下面(具体代码在文末),然后依次执行systemd的重启systemctl daemon-reloadsystemctl restart nginx.service之后,就会发现一切正常了。

[Unit]    
DescriptiON=A high performance web server and a reverse proxy server    
Documentation=man:nginx(8)    
After=network.target nss-lookup.target
    
[Service]    
Type=forking    
PIDFile=/run/nginx.pid    
ExecStartPre=/usr/sbin/nginx -t -q -g 'daemon on; master_process on;'    
ExecStart=/usr/sbin/nginx -g 'daemon on; master_process on;'    
ExecStartPost=/bin/sleep 1    
ExecReload=/usr/sbin/nginx -g 'daemon on; master_process on;' -s reload    
ExecStop=-/sbin/start-stop-daemon --quiet --stop --retry QUIT/5 --pidfile /run/nginx.pid    
TimeoutStopSec=5    
KillMode=mixed
    
[Install]    
WantedBy=multi-user.target


locvps
评论专区
  • 昵 称必填
  • 邮 箱必填
  • 网 址选填
◎已有 0 人评论
BudgetVM
作者介绍
转载大师

转载大师

转载大师作为本站编辑,主要负责把优秀的文章转载至此。如果您认为本文侵犯了您的版权信息,请与转载大师联系修正。
80vps henghost
30天热门
budgetvm sugarhosts
二维码

分享:

支付宝

微信