安装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了。
评论