我已经从内置的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,看到在启动过程中没有记录任何内容。
我该怎么做才能解决这个问题?
答案 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