服务器重启后nginx无法启动

时间:2013-06-25 00:44:27

标签: ubuntu nginx init.d

我已经从内置的src nginx 1.2.6安装转移到了Ubuntu 13.04上的1.4.1。

通过Ubuntu PPA http://wiki.nginx.org/Install#Ubuntu_PPA安装。这一切都很有效。

手动,我可以使用

重新加载/启动/停止服务
sudo service nginx <command>

服务器重启后,nginx不会自行启动。

在我以前的手动安装中,我在/ etc / init中有一个手写的Upstart脚本,运行正常。 PPA安装设置了一个/etc/init.d/脚本,所以我想坚持使用PPA方法而不是黑客入侵。

可能是因为我对服务界面并不十分熟悉,因为我缺少了一些东西。

我还检查了/var/log/nginx/access.log和error.log,看到在启动过程中没有记录任何内容。

我该怎么做才能解决这个问题?

6 个答案:

答案 0 :(得分:28)

sudo update-rc.d nginx enable为我工作。

答案 1 :(得分:16)

我对Ubuntu没有太多经验 - 但你尝试过运行chkconfig吗?

您可以尝试:

# sudo update-rc.d nginx defaults

或者:

# sudo apt-get install chkconfig

# sudo chkconfig nginx on

答案 2 :(得分:1)

2016年3月28日更新

我已经向Ubuntu Upstart脚本提交了一些小改进,我在下面提出,作为对NGinX wiki的拉取请求。 My pull request has been accepted and the patch has been merged

我使用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 "<mydomain>: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 <georgyo@gmail.com>"

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

我会通知这个剧本的作者我的发现。

答案 3 :(得分:0)

除了Visionscaper的回答,从标准可信赖的repos安装的nginx使用的是sysvinit服务文件而不是upstart one。因此代替nginx服务为新贵编辑rc-sysinit upstart服务。为此使用upstart覆盖是个好主意:

# echo "start on (filesystem and net-device-up IFACE!=lo) or failsafe-boot" > /etc/init/rc-sysinit.override

答案 4 :(得分:0)

对于Ubuntu:

首先检查它的状态,以确保它没有出错

systemctl status nginx.service

它会显示错误或未启动

如果尚未启动,则需要将其启用

sudo /etc/init.d/systemctl enable nginx
sudo reboot

答案 5 :(得分:0)

对我来说,这是因为我在安装sudo apt-get update --fix-missing之前没有做过sudo apt-get install nginx

体系结构:armv7l

操作系统:raspLITE