微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

权限 – Systemd无法在重新启动时启动Nginx,但它可以手动运行

每次重启时都是我的情况:

$systemctl --Failed
UNIT          LOAD   ACTIVE SUB    DESCRIPTION
Nginx.service loaded Failed Failed A high performance web server and a reverse proxy server
...
$Nginx -t
Nginx: the configuration file /etc/Nginx/Nginx.conf Syntax is ok
2014/01/18 05:44:47 [emerg] 254#0: open() "/run/Nginx.pid" Failed (13: Permission denied)
Nginx: configuration file /etc/Nginx/Nginx.conf test Failed
$cd /run
$ls -al | grep Nginx
$sudo systemctl start Nginx
$ls -al | grep Nginx
-rw-r--r--  1 root     root        4 Jan 18 06:27 Nginx.pid

我不明白Nginx.pid在创建之前可能会有不正确的权限,或者解决这个问题的方法.

我正在使用Arch而且我已经看到了与chroot-jail相关的类似问题,但我没有在chroot中安装Nginx.

解决方法:

问题似乎是您正在使用非特权用户来测试Nginx配置.测试发生时,它会尝试创建/run/Nginx.pid,但会失败,这会导致配置测试失败.尝试以root身份运行Nginx.

$sudo Nginx -t

要么

$su - -c "Nginx -t"

这样,Nginx父进程将具有与systemctl运行时相同的权限.

如果这样可以在测试时解决错误,但在从systemctl运行时不会解决,您可能需要检查this page on investigating systemd errors.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐