Nginx не запускается после перезагрузки сервера

Я перешел из встроенной версии src nginx 1.2.6 в 1.4.1 на Ubuntu 13.04.

Установлен через Ubuntu PPA, http://wiki.nginx.org/Install#Ubuntu_PPA. Все это отлично работало.

Вручную, я могу перезагрузить/запустить/остановить службу, используя

sudo service nginx <command>

После перезагрузки сервера nginx не подходит сам по себе.

В моей предыдущей ручной установке у меня был написанный вручную Upstart script в /etc/init, который работал нормально. Установка PPA установила /etc/init.d/script, поэтому я хотел бы придерживаться методов PPA, а не взломать что-то.

Возможно, потому, что я не очень хорошо знаком с интерфейсом службы, там что-то мне не хватает.

Я также проверил /var/log/nginx/access.log и error.log и не видел ничего, записанного во время процесса запуска.

Что мне делать, чтобы исправить это?

Ответ 1

sudo update-rc.d nginx enable работал у меня.

Ответ 2

У меня нет большого опыта работы с Ubuntu, но вы попробовали запустить chkconfig?

Вы можете попробовать:

# sudo update-rc.d nginx defaults

Или:

# sudo apt-get install chkconfig

# sudo chkconfig nginx on

Ответ 3


ОБНОВЛЕНИЕ 28 марта 2016 года

Я представил небольшое усовершенствование Ubuntu Upstart script, которое я предложил ниже, в качестве запроса на тягу к вики NGinX. Мой запрос на перенос был принят, и патч был объединен.


Я на Ubuntu 14.04 LTS и имел ту же проблему; NginX может начать нормально с помощью sudo service nginx restart, но он не запускался автоматически при загрузке сервера.

Я следил за инструкциями страницы Wiki-страницы NGinX Ubuntu Upstart, но она не работала (первоначально). Поэтому я немного порылся. Сначала я обнаружил, что Ubuntu попытался запустить NGinX при запуске, но не удалось:

$ sudo cat /var/log/boot.log
...
* Starting nginx http daemon                                            [fail]
...

Затем я нашел файл журнала инициализации upstart:

$ cat /var/log/upstart/nginx.log
...
nginx: [emerg] host not found in upstream "<mydomain>:443" in /etc/nginx/sites-enabled/mydomain:2
...

Итак, я понял, что запуск NGINX script был запущен до того, как был запущен сетевой интерфейс. Этот ответ на ошибку сервера дал мне подсказки, необходимые для исправления NginX Ubuntu Upstart script. Таким образом, '!', IFACE=lo необходимо изменить на IFACE!=lo. Для удобства я вставил полный script ниже:

# nginx

description "nginx http daemon"
author "George Shammas <[email protected]>"

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

Я сообщу автору этого script о моих выводах.

Ответ 4

В дополнение к запросу Visionscaper nginx, установленный из стандартных надежных репозиториев, использует sysvinit служебный файл, а не upstart. Таким образом, вместо службы nginx для upstart отредактируйте rc-sysinit upstart service. Для этого рекомендуется использовать переопределения выскочек:

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

Ответ 5

Для Ubuntu:

Сначала проверьте его состояние, чтобы убедиться, что оно не выдает ошибку

systemctl status nginx.service

Он либо покажет ошибку, либо покажет, что она не запущена

Если это не началось тогда, это должно быть включено

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