nginx - 如何配置 nginx 以将其 error.log 文件放在我有写权限的地方?

标签 nginx

我假设我只需要在 nginx.conf 中插入一个条目文件来解决困扰我的错误(见下文),但到目前为止我还没有弄清楚语法。任何帮助,将不胜感激。

我想以普通用户身份运行 nginx,同时以具有管理权限的用户身份使用自制软件安装它。 nginx 正在尝试写入 error.log文件位于 /usr/local/var/log/nginx/error.log ,这是不可能的,因为我的普通用户在那里没有写权限。

另一个皱纹来自于有两个 nginx.conf 的事实。文件,一个全局的和一个本地的,据我所知,它们都被读取。它们位于默认的自制软件位置 /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 以便我可以回到这个项目的开发方面将不胜感激。

最佳答案

整个问题源于尝试以我的普通用户身份运行 nginx,尽管 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目录似乎是在安装 nginx 时由自制软件创建的,这台机器是我的笔记本电脑,所以我看不出有任何理由不打开它。在其他情况下,您可能有更大的安全问题。

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

我改变主意的原因是 nginx 可以(在这种情况下确实)在读取 nginx.conf 之前(或同时)产生错误。文件,并且需要能够将这些错误报告到日志文件中。修改 nginx.conf文件永远不会解决我的问题。让我意识到这个问题的是阅读这篇文章:How to turn off or specify the nginx error log location?

关于nginx - 如何配置 nginx 以将其 error.log 文件放在我有写权限的地方?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42605202/

相关文章:

sockets - Varnish + Nginx + ELB 499响应

linux - 为什么docker容器立即退出但在具有相同cmd的aws userdata中工作正常

amazon-web-services - AWS ECS容器无法指定区域

node.js - 如何配置 nginx docker 容器以识别不同端口中的本地主机应用程序?

HTML 颜色和边距呈现不同(相同的代码、CSS 和浏览器)

docker - 使用 Pycharm 进行调试时如何让 Docker-compose 运行所有服务?

linux - UDP 的 Nginx 直接服务器返回

linux - Nginx: curl: (60) SSL证书问题:无法获取本地颁发者证书

django - wkhtmltopdf (pdfkit) 无法连接到任何 X 显示器

nginx proxy_pass 404 错误,不明白为什么