我假设我只需要在nginx.conf文件中插入一个条目即可解决困扰我的错误(请参见下文),但是到目前为止,我还没有弄清楚语法的运气。任何帮助,将不胜感激。
我想以普通用户身份运行nginx,同时以具有管理特权的用户身份使用homebrew安装它。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
Run Code Online (Sandbox Code Playgroud)
非常感谢您弄清楚如何启动和运行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
Run Code Online (Sandbox Code Playgroud)
请注意,该/usr/local/var目录似乎是在安装nginx时由homebrew创建的,并且此计算机是我的笔记本电脑,因此我看不到任何理由不打开它。在其他情况下,您可能会有更大的安全问题。
我承认当我写这个问题时,我以为是将error.log文件移到另一个目录。现在,我看到这不是一个完整的解决方案,因此,我在这里介绍的解决方案是为普通用户提供必要目录中的写权限。
我改变主意的原因是,nginx可以(并且在这种情况下)会在读取文件之前(或同时)生成错误,nginx.conf并且需要能够将这些错误报告给日志文件。修改nginx.conf文件永远无法解决我的问题。引起我此问题的原因是阅读此文章: 如何关闭或指定nginx错误日志位置?
| 归档时间: |
|
| 查看次数: |
3992 次 |
| 最近记录: |