Homebrew Nginx没有运行,但表示正在酿造服务中

Dbl*_*247 3 homebrew nginx osx-elcapitan

我有OSX El Capitan。我通过自制软件安装了Nginx-Full。我应该能够启动和停止服务

酿造服务Nginx-全面启动

我运行该命令,它似乎没有问题。我检查正在运行的服务

酿造服务清单

这表明Nginx-Full服务正在运行。当我跑步

停止

查看所有正在运行的Nginx不会显示,并且服务器未处理请求。

ale*_*exw 12

由于错误,nginx 无法启动,但 brew-services 未将其传达给您。

sudo正如其他用户所建议的那样,使用 运行它只是掩盖了问题。如果nginx直接运行,你可能会看到实际上存在配置或权限问题导致 nginx 中止。就我而言,这是因为它无法写入错误日志:

nginx: [alert] could not open error log file: open() "/usr/local/var/log/nginx/error.log" failed (13: Permission denied)
2020/04/02 13:11:53 [warn] 19989#0: the "user" directive makes sense only if the master process runs with super-user privileges, ignored in /usr/local/etc/nginx/nginx.conf:2
2020/04/02 13:11:53 [emerg] 19989#0: open() "/usr/local/var/log/nginx/error.log" failed (13: Permission denied)
Run Code Online (Sandbox Code Playgroud)

最后一个错误是导致 nginx 无法启动。您可以通过以下方式使自己成为日志的所有者:

sudo chown -R $(whoami) /usr/local/var/log/nginx/

应该会导致后续的配置错误被写入错误日志,即使 homebrew 服务现在没有在 stderr/stdout 中报告它们。

我已经打开了一个关于这个的问题:https : //github.com/Homebrew/homebrew-services/issues/215

每个人的日志路径可能不一样。您可以通过检查配置文件来检查日志文件的路径/usr/local/etc/nginx/nginx.conf。你可以找到这样一行: error_log /Users/myusername/somepath/nginx.log;。相应地更改上面的 chown 命令。如果即使这样也不能解决问题,您可能必须对servernginx 配置中的块中指定的任何其他日志文件执行相同的操作

  • 这非常有效。您应该解决根本问题并在您自己的用户下运行它,而不是使用 sudo 强制执行。谢谢。 (2认同)

Gou*_*laf 6

尝试使用“ sudo”启动它,即使公式中说

默认端口已在/usr/local/etc/nginx/nginx.conf中设置为8080,因此nginx可以在不使用sudo的情况下运行。

sudo brew services Nginx-Full start
Run Code Online (Sandbox Code Playgroud)

  • 切勿使用 sudo 强制启动。alexw 下面的答案是要走的路。 (2认同)