我是系统管理新手。安装了nginx后 傀儡 在Ubuntu上,我得到以下输出。
[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),每次创建一个新的服务器都要重复这样做。因此,我在想必须在puppet清单中添加什么?
在这种情况下,最好的系统管理员做法是:改变varlognginx的所有者权限或将日志存储在不同的位置?如果采用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
确保你是以超级用户的身份运行测试的。
sudo nginx -t
否则,测试就不会有正确完成测试所需的所有权限。
如果我假设你的第二段代码是puppet配置,那么我有一个合理的解释,如果错误和日志文件是在之前创建的,你可以尝试这样做
sudo chown -R www-data:www-data /var/log/nginx;
sudo chmod -R 755 /var/log/nginx;
我在重新启动 Nginx 并发现它是一个原因。SeLinux. 请务必在禁用SeLinux或将其暂时设置为 允许性 模式,使用下面的命令。
setenforce 0
希望对你有帮助:)
只是因为你无权访问该文件,所以请使用
chmod -R 755 /var/log/nginx;
或者你可以改成sudo,然后它
查看日志文件的权限被授予组中的用户 adm。
要在命令行中添加一个用户到这个组中。
sudo usermod -aG adm <USER>
如果你不想以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 {} \;
在Debian WSL(Windows Subsystem for Linux)上,我必须使用:
sudo chmod -R 775 /var/log/nginx
对我来说,我只是把selinux从强制改为允许,然后我就可以无误地启动nginx了。
我只是把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
它可以用于测试。
Nginx需要通过命令运行 'sudo /etc/init.d/nginx start'