我假设我只需要在 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/