使用 NGINX 官方源安装,启动程序发现 Systemd 中存在报错。
报错
错误如下
● nginx.service - nginx - high performance web server
Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; vendor preset: disabled)
Active: active (running) since Mon 2019-08-19 10:16:54 CST; 13min ago
Docs: http://nginx.org/en/docs/
Main PID: 1714 (nginx)
CGroup: /system.slice/nginx.service
├─1714 nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf
└─1715 nginx: worker process
Aug 19 10:16:53 domain.com systemd[1]: Stopped nginx - high performance web server.
Aug 19 10:16:53 domain.com systemd[1]: Starting nginx - high performance web server...
Aug 19 10:16:54 domain.com systemd[1]: PID file /var/run/nginx.pid not readable (yet?) after start.
Aug 19 10:16:54 domain.com systemd[1]: Started nginx - high performance web server.
原因
这是因为 NGX 启动时 PID 文件并未产生,导致文件无法读取,因此产生如下报错
systemd[1]: PID file /var/run/nginx.pid not readable (yet?) after start.
解决
知道问题如何产生,自然就有了解决办法。修改守护单元配置文件即可。
优雅解决
执行命令修改启动单元
sudo systemctl edit nginx.service
打开编辑器后可以看到以下内容:
### Editing /etc/systemd/system/nginx.service.d/override.conf
### Anything between here and the comment below will become the new contents of the file
### Lines below this comment will be discarded
在这两段文字中间的空行中加入以下代码:
[Service]
ExecStartPost=/bin/sleep 0.1
保存退出后重启服务即可。
普通解决
在守护单元中添加如下语句即可,作用是在执行可执行文件前等待 0.1s。
ExecStartPost=/bin/sleep 0.1
提示:编辑/usr/lib/systemd/system/nginx.service
即可。可在systemctl status nginx
命令中可看到守护单元文件的位置。
修改后需要重载单元,否则会产生如下警告。
Warning: nginx.service changed on disk. Run 'systemctl daemon-reload' to reload units.
sudo systemctl daemon-reload
即可修复此问题。
附录
参考链接
本文由 柒 创作,采用 知识共享署名4.0
国际许可协议进行许可。
转载本站文章前请注明出处,文章作者保留所有权限。
最后编辑时间: 2024-08-08 20:18 PM
非常感谢,很多都是转来转去的,这个成功解决了,
没办法的事情,我也想不通他们把错的教程转来转去有什么用。