我已将开发机器设置为将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(至少尝试)创建日志目录?
作为脚本/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
我意识到这条线索比小行星上的泥土还要古老,但我想在这里包含这个答案,以便为后代勇敢的搜索者提供,这样他们就可以避免我刚刚经历的辛劳时间。
如果您收到消息:
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文件夹 - 因此它失败并退出。 如果你看到/var/log 在/etc/fstab 中输入,请注释掉它,重新启动,手动创建 nginx 文件夹一次(我也手动创建了错误.log和访问.log(空白文件))并重新启动 nginx 服务。 从那时起,您的nginx服务器将运行良好(除非您执行其他操作来破坏它,但这是针对另一个线程的)。