我如何配置nginx将其error.log文件放置在我写的特权的某个地方



我假设我只需要将条目插入 nginx.conf文件即可解决困扰我的错误(见下文),但是到目前为止,我还没有任何运气句法。任何帮助将不胜感激。

我想在使用Homebrew作为具有管理特权的用户安装时作为常规用户运行NGINX。NGINX试图在/usr/local/var/log/nginx/error.log上写入error.log文件,因为我的常规用户缺乏在那里写的特权。

另一个皱纹来自两个nginx.conf文件,一个全球和本地文件,据我所知,它们都在阅读。他们在默认的Homebrew位置/usr/local/etc/nginx/nginx.conf和我的本地项目目录$BASE_DIR/nginx.conf

这是作为NGINX尝试启动的错误:

[WARN] No ENV file found
10:08:18 PM web.1 |  DOCUMENT_ROOT changed to 'public/'
10:08:18 PM web.1 |  Using Nginx server-level configuration include 'nginx.conf'
10:08:18 PM web.1 |  4 processes at 128MB memory limit.
10:08:18 PM web.1 |  Starting php-fpm...
10:08:20 PM web.1 |  Starting nginx...
10:08:20 PM web.1 |  Application ready for connections on port 5000.
10:08:20 PM web.1 |  nginx: [alert] could not open error log file: open() "/usr/local/var/log/nginx/error.log" failed (13: Permission denied)
10:08:20 PM web.1 |  2017/03/04 22:08:20 [emerg] 19557#0: "http" directive is duplicate in /usr/local/etc/nginx/nginx.conf:17
10:08:20 PM web.1 |  Process exited unexpectedly: nginx
10:08:20 PM web.1 |  Going down, terminating child processes...
[DONE] Killing all processes with signal  null
10:08:20 PM web.1 Exited with exit code 1

任何帮助弄清楚如何启动和运行的帮助,我可以回到该项目的开发方面。

尽管我的用户自我安装了具有管理特权的用户自我,但整个问题源于尝试将NGINX作为我的普通用户自我运行。我能够解决此处显示的两个错误,并以具有管理特权的用户执行以下命令:

sudo chmod a+w /usr/local/var/log/nginx/*.log
sudo chmod a+w /usr/local/var
sudo chmod a+w /usr/local/var/run

请注意,/usr/local/var目录似乎是由Homebrew在安装NGINX时创建的,并且该机器是我的笔记本电脑,因此我看不出任何理由不打开它。在其他情况下,您可能会有更大的安全问题。

我承认,当我写这个问题时,我认为这是关于将error.log文件移至另一个目录。现在,我看到这不是一个完整的解决方案,因此我在此提出的解决方案是关于让普通用户在必要的目录中写入特权。

我改变主意的原因是,nginx可以(在这种情况下)生成错误(或 while )阅读nginx.conf文件,并且需要能够将这些错误报告给日志文件。修改nginx.conf文件永远不会解决我的问题。是什么让我觉得这个问题是阅读这篇文章:如何关闭或指定NGINX错误日志位置?

您是否尝试通过编辑nginx.conf

将日志路径设置为自定义位置
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;

将通往某处的路径更改为使用特权。

最新更新