使用 systemctl 启动 nginx 失败,但手动运行命令不会

使用 systemctl 启动 nginx 失败,但手动运行命令不会

在 Arch Linux 上,由于某种原因,当我尝试使用命令“systemctl start nginx”启动 nginx 时,它失败了,这是“systemctl status nginx”的输出:

Loaded: loaded (/etc/systemd/system/nginx.service; enabled)
Active: failed (Result: exit-code) since Wed 2013-10-30 16:22:17 EDT; 5s ago
Process: 9835 ExecStop=/usr/bin/chroot --userspec=http:http /home/nginx /usr/bin/nginx -g pid /run/nginx.pid; -s quit (code=exited, status=126)
Process: 3982 ExecStart=/usr/bin/chroot --userspec=http:http /home/nginx /usr/bin/nginx -g pid /run/nginx.pid; daemon on; master_process on; (code=exited, status=0/SUCCESS)
Process: 10967 ExecStartPre=/usr/bin/chroot --userspec=http:http /home/nginx /usr/bin/nginx -t -q -g pid /run/nginx.pid; daemon on; master_process on; (code=exited, status=126)
Main PID: 3984 (code=exited, status=0/SUCCESS)
CGroup: /system.slice/nginx.service

...但是当我跑步时

/usr/bin/chroot --userspec=http:http /home/nginx /usr/bin/nginx -t -q -g "pid /run/nginx.pid; daemon on; master_process on;"

进而

/usr/bin/chroot --userspec=http:http /home/nginx /usr/bin/nginx -g "pid /run/nginx.pid; daemon on; master_process on;"

作为 root,它所做的只是返回一个警告,但工作正常:

nginx: [warn] the "user" directive makes sense only if the master process runs with super-user privileges, ignored in /etc/nginx/nginx.conf:1

为什么会这样?

编辑:查看 /var/log/messages.log 后,我发现了这一点:

/usr/bin/chroot: failed to run command ‘/usr/bin/nginx’: Permission denied

但是 ls -l /home/nginx/usr/bin/nginx 返回以下内容:

-rwxr-xr-x 1 root root 797040 Oct 25 18:24 nginx

..并且每个到 /home/nginx/usr/bin/ 的目录都被 chmodded a+x

答案1

我遇到了同样的问题,这是因为SELinux

检查 SELinux 是否正在运行:

# getenforce

要禁用 SELinux 直到下次重启:

# setenforce Permissive

重新启动 Nginx,看看问题是否仍然存在。如果你想永久更改设置,你可以编辑/etc/sysconfig/selinux

如果 SELinux 是你的问题,你可以运行以下命令来允许 nginx 为你的 www 目录提供服务(请确保在测试之前重新打开 SELinux。即setenforce Enforcing

# chcon -Rt httpd_sys_content_t /path/to/www

如果您仍然遇到问题,请查看中的布尔标志getsebool -a,特别是您可能需要打开httpd_can_network_connect网络访问

# setsebool -P httpd_can_network_connect on

对我来说,允许 http 为我的 www 目录提供服务就足够了。

相关内容