nginx在vps上使用sytemctl管理的小问题
标签搜索

nginx在vps上使用sytemctl管理的小问题

Thomas
2024-05-02 / 0 评论 / 5 阅读 / 正在检测是否收录...

安装nginx后,采用sytemctl管理,在开始和重启的时候都会提示类似
open() "/run/nginx.pid" failed (13: Permission denied)

网上搜索发现,很多帖子都在说要检查nginx配置文件中pid位置和service中是否一致。

nano /usr/lib/systemd/system/nginx.service
nano /etc/nginx/nginx.conf

发现pid文件路径没有问题。

后来发现一篇文章中提到,在service文件中生成pid文件语句后面加入
ExecStartPost=/bin/sleep 0.1
意思是延迟0.1秒启动,然后就一切正常了。可能是由于小机子性能比较弱,I/O延迟太大。
顺便在启动命令前又加了一句
ExecStartPre=/usr/sbin/nginx -t -c /etc/nginx/nginx.conf

整体文件内容如下:

[Unit]
Description=nginx - high performance web server
Documentation=https://nginx.org/en/docs/
After=network-online.target remote-fs.target nss-lookup.target
Wants=network-online.target

[Service]
Type=forking
PIDFile=/var/run/nginx.pid
ExecStartPost=/bin/sleep 0.1
ExecStartPre=/usr/sbin/nginx -t -c /etc/nginx/nginx.conf
ExecStart=/usr/sbin/nginx -c /etc/nginx/nginx.conf
ExecReload=/bin/sh -c "/bin/kill -s HUP $(/bin/cat /var/run/nginx.pid)"
ExecStop=/bin/sh -c "/bin/kill -s TERM $(/bin/cat /var/run/nginx.pid)"

[Install]
WantedBy=multi-user.target

重启systemctl服务。

systemctl daemon-reload

就可以正常管理nginx了。

0

评论

博主关闭了所有页面的评论