2016年3月28日更新
我使用Ubuntu 14.04 LTS并遇到同样的问题; NginX可以使用sudo service nginx restart启动,但在启动服务器时它不会自动启动。
我按照NGinX Ubuntu Upstart Wiki页面的说明操作,但它不起作用(最初)。所以我挖了一下。首先我发现Ubuntu在启动时尝试启动NGinX但失败了:
$ sudo cat /var/log/boot.log
...
* Starting nginx http daemon [fail]
...
然后我找到了initctl upstart作业的日志文件:
$ cat /var/log/upstart/nginx.log
...
nginx: [emerg] host not found in upstream ":443" in /etc/nginx/sites-enabled/mydomain:2
...
所以,我发现NGinX启动脚本是在网络接口启动之前运行的。 This server fault answer给了我修复NginX Ubuntu Upstart脚本所需的提示。总之,一个'!'遗失了,IFACE=lo需要更改为IFACE!=lo。为方便起见,我已粘贴下面的完整脚本:
# nginx
description "nginx http daemon"
author "George Shammas "
start on (filesystem and net-device-up IFACE!=lo)
stop on runlevel [!2345]
env DAEMON=/usr/sbin/nginx
env PID=/var/run/nginx.pid
expect fork
respawn
respawn limit 10 5
#oom never
pre-start script
$DAEMON -t
if [ $? -ne 0 ]
then exit $?
fi
end script
exec $DAEMON
重新启动后,我检查了NGinX现在是否正在运行:
$ sudo initctl list | grep nginx
nginx start/running, process 1551
我会通知这个剧本的作者我的发现。