1

我将开发机器设置为将 tmpfs 用于 /var/log。鉴于此,在每次启动时,内容都是空白的,并且逐渐填充了记录其胆量时创建的任何进程。

问题是(根据我对错误消息的解释):nginx 非常不愿意创建自己的日志目录(在这种情况下是 /var/log/nginx),所以在启动过程中它不断向我抛出错误:

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
2012/05/08 21:42:35 [emerg] 2368#0: open() "/var/log/nginx/error.log" failed (2: No such file or directory)
nginx: configuration file /etc/nginx/nginx.conf test failed

一旦我创建了目录,一切都很好。有没有办法告诉 nginx(至少尝试)创建日志目录?

4

2 回答 2

3

作为脚本 /etc/init.d/nginx 中 do_start 函数的第一行,添加以下命令:

# Create the folder "nginx" in /var/log otherwise nginx can't start
mkdir -p /var/log/nginx

我不喜欢这个解决方案,但这也是我发现的最简单/最快的解决方案。

问候

编辑 - 如果使用 Debian,init.d 脚本有点不同。“mkdir”行就在“start”行之后:

start)
    mkdir -p /var/log/nginx
于 2015-02-11T15:42:52.227 回答
0

我意识到这个线程比小行星上的泥土还要古老,但我想在这里包含这个答案,以便为后代勇敢的搜索者提供,这样他们就可以避免我刚刚让自己经历的辛勤工作。

如果您收到以下消息:

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
2012/05/08 21:42:35 [emerg] 2368#0: open() "/var/log/nginx/error.log" failed (2: No such file or directory)
nginx: configuration file /etc/nginx/nginx.conf test failed

确保您的 var/log 文件夹未设置为 tmpfs!!!! 我已经设置了这种方式来减少对系统中 SD 卡的写入,这意味着每次 nginx 启动时,它都无法在 /var/log/nginx 找到日志或 nginx 文件夹 - 所以它失败了并退出。如果在 /etc/fstab 中看到 /var/log 输入,将其注释掉,重新启动,手动创建一次 nginx 文件夹(我还手动创建了 error.log 和 access.log(空白文件))并重新启动 nginx 服务。从那时起,您的 nginx 服务器将运行良好(除非您执行其他操作来破坏它,但那是另一个线程)。

于 2021-06-07T23:15:17.060 回答