我是系统管理新手。在Ubuntu上安装nginx via puppet后,我得到以下输出:
[alert] could not open error log file: open() "/var/log/nginx/error.log" failed (13: Permission denied)
[warn] 1898#0: the "user" directive makes sense only if the master process runs with super-user privileges, ignored in /etc/nginx/nginx.conf:1
[emerg] 1898#0: open() "/var/log/nginx/access.log" failed (13: Permission denied)
如何摆脱所有这些消息?
我不想直接使用命令行(chown / chmod)并在每次创建新服务器时重复它。因此,我正在考虑必须添加到木偶清单中的内容。
在这种情况下,最好的系统管理员做法是什么:更改/ var / log / nginx的所有者/权限或将日志存储在不同的位置?如果chown / chmod是可行的方法,哪些特定权限将确保最高级别的安全性?
我试过这个,但没有帮助:
file { '/var/log/nginx':
ensure => directory,
mode => '0755',
owner => 'www-data',
group => 'www-data',
recurse => true
}
编辑:
vagrant@precise64:~$ ps aux | grep [n]ginx
root 1001 0.0 0.1 62908 1388 ? Ss 08:47 0:00 nginx: master process /usr/sbin/nginx
www-data 1002 0.0 0.1 63260 1696 ? S 08:47 0:00 nginx: worker process
www-data 1003 0.0 0.1 63260 1696 ? S 08:47 0:00 nginx: worker process
www-data 1004 0.0 0.1 63260 1696 ? S 08:47 0:00 nginx: worker process
www-data 1005 0.0 0.1 63260 1696 ? S 08:47 0:00 nginx: worker process
答案 0 :(得分:153)
确保以超级用户身份运行测试。
sudo nginx -t
或者测试没有正确完成测试所需的所有权限。
答案 1 :(得分:29)
如果我假设你的第二个代码是puppet配置,那么我有一个逻辑解释,如果之前创建了错误和日志文件,你可以试试这个
sudo chown -R www-data:www-data /var/log/nginx;
sudo chmod -R 755 /var/log/nginx;
答案 2 :(得分:23)
我在重启 Nginx 时遇到了类似的问题,发现它是 SeLinux 的原因。在使用以下命令禁用SeLinux或临时将其设置为 Permissive 模式后,请务必尝试:
setenforce 0
我希望它有所帮助:)
答案 3 :(得分:7)
仅仅是因为您没有权利访问该文件,请使用
chmod -R 755 /var/log/nginx;
或者您可以更改为sudo然后
答案 4 :(得分:5)
查看日志文件的权限授予组adm中的用户
要在命令行问题上将用户添加到此组:
sudo usermod -aG adm <USER>
答案 5 :(得分:2)
这对我有用
sudo chmod -R 777 /var/log/nginx
答案 6 :(得分:0)
对我来说,我只是将selinux从强制更改为允许,然后我就能够在没有任何错误的情况下启动nginx。
答案 7 :(得分:0)
我只是使用本地路径修补nginx二进制替换路径/var/log/nginx/error.log
和其他路径。
$ perl -pi \
-e 's@/var/log/nginx/@_var_log_nginx/@g;' \
-e 's@/var/lib/nginx/@_var_lib_nginx/@g;' \
-e 's@/var/run/nginx.pid@_var_run/nginx.pid@g;' \
-e 's@/run/nginx.pid@_run/nginx.pid@g;' \
< /usr/sbin/nginx > nginx
$ chmod +x nginx
$ mkdir _var_log_nginx _var_lib_nginx _var_run _run
$ ./nginx -p . -c nginx.conf
它适用于测试。
答案 8 :(得分:0)
如果您不想以root身份启动nginx。
第一个创建日志文件:
sudo touch /var/log/nginx/error.log
然后修复权限:
sudo chown -R www-data:www-data /var/log/nginx
sudo find /var/log/nginx -type f -exec chmod 666 {} \;
sudo find /var/log/nginx -type d -exec chmod 755 {} \;
答案 9 :(得分:0)
在Debian WSL(Linux的Windows子系统)上,我必须使用:
sudo chmod -R 775 /var/log/nginx
答案 10 :(得分:0)
找到了good description要做什么。
# support running as arbitrary user which belogs to the root group RUN chmod g+rwx /var/cache/nginx /var/run /var/log/nginx # users are not allowed to listen on priviliged ports RUN sed -i.bak 's/listen\(.*\)80;/listen 8081;/' /etc/nginx/conf.d/default.conf EXPOSE 8081 # comment user directive as master process is run as user in OpenShift anyhow RUN sed -i.bak 's/^user/#user/' /etc/nginx/nginx.conf
解决在没有 root 的情况下运行 NGNIX 的所有问题。
答案 11 :(得分:-4)
Nginx需要通过命令'sudo /etc/init.d/nginx start'