带有Nginx 1.6.2的CentOS 6.6 - 突然无法重启nginx - nginx:[emerg] open()“/ usr / share / nginx / on”失败(13:权限被拒绝)

时间:2015-03-22 03:09:57

标签: nginx centos php

这是一个新安装,其中nginx以前正常启动和停止。我相信在启用成功测试(nginx -t)的服务器块后出现此错误。然后我尝试重新启动nginx并收到此错误:

nginx: [emerg] open() "/usr/share/nginx/on" failed (13: Permission denied)

尝试重启之前,文件“on”不存在。它刚刚创建并且是空的。当我重新启动php-fmp(成功)然后尝试重新启动nginx时,错误更改为:

nginx: [emerg] open() "/var/run/nginx.pid" failed (13: Permission denied) nginx: configuration file /etc/nginx/nginx.conf test failed

但是,当我运行nginx -t时,我得到了:

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful

我认为这可能是用户问题,但它以nginx:

运行

# ps -elf | grep nginx 5 S nginx 2774 2773 0 80 0 - 234152 skb_re 22:07 ? 00:00:00 php-fpm: pool www 5 S nginx 2775 2773 0 80 0 - 234152 skb_re 22:07 ? 00:00:00 php-fpm: pool www 5 S nginx 2776 2773 0 80 0 - 234152 skb_re 22:07 ? 00:00:00 php-fpm: pool www 5 S nginx 2777 2773 0 80 0 - 234152 skb_re 22:07 ? 00:00:00 php-fpm: pool www 5 S nginx 2778 2773 0 80 0 - 234152 skb_re 22:07 ? 00:00:00 php-fpm: pool www 0 R root 2940 2472 0 80 0 - 25811 - 22:18 pts/0 00:00:00 grep nginx

此外,使用sudo nginx -t不会改变任何内容。同样奇怪的是,即使nginx没有运行,也存在nginx.pid。删除pid文件只会将错误消息更改回:

nginx: [emerg] open() "/usr/share/nginx/on" failed (13: Permission denied)

删除on文件也没有区别。

3 个答案:

答案 0 :(得分:4)

确保以超级用户身份运行。

sudo nginx -t

答案 1 :(得分:0)

运行getenforce以检查SELinux模式。如果它显示Enforcing,则通过运行setenforce 0暂时将模式设置为Permissive,然后查看您的应用程序是否可用。

答案 2 :(得分:0)

我有类似的问题

nginx: [emerg] open() "/etc/nginx/conf.d/websites.conf" failed (13: Permission denied) in /etc/nginx/nginx.conf:36

问题的原因是在特定用户下通过SSH供应配置文件。 这是我的修复方法(除了chmod / chown以外的其他操作)。

如果启用了selinux(在Centos中是默认设置),则

ls -Z /path/to/file 

必须将“ httpd_sys_content_t”显示为安全上下文。如果遇到类似“ user_home_t”的内容,则需要通过运行以下命令进行更新:

chcon -v --type=httpd_sys_content_t /path/to/file 

之后,像往常一样重新启动“ nginx”或“ httpd”。

引用https://wiki.centos.org/HowTos/SELinux