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

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

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

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

sudo service nginx <command>

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

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

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

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

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


person Geuis    schedule 25.06.2013    source источник


Ответы (6)


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

person webjay    schedule 24.03.2015
comment
Здорово. update-rc.d nginx defaults мне ничего не сделал, сказав, что init.d уже существует. - person shukshin.ivan; 04.03.2016

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

Можешь попробовать:

# sudo update-rc.d nginx defaults

Or:

# sudo apt-get install chkconfig

# sudo chkconfig nginx on
person badazzhindu    schedule 25.06.2013
comment
Кажется, это может работать. Перезагрузка сейчас. ~$ sudo update-rc.d nginx defaults Добавление запуска системы для /etc/init.d/nginx ... /etc/rc0.d/K20nginx -› ../init.d/nginx /etc/rc1.d/ K20nginx -> ../init.d/nginx /etc/rc6.d/K20nginx -> ../init.d/nginx /etc/rc2.d/S20nginx -> ../init.d/nginx /etc/ rc3.d/S20nginx -> ../init.d/nginx /etc/rc4.d/S20nginx -> ../init.d/nginx /etc/rc5.d/S20nginx -> ../init.d/ нгинкс - person Geuis; 25.06.2013
comment
Дополнительное примечание: chkconfig нельзя установить через apt-get. - person Geuis; 25.06.2013
comment
Ага, сработало. Кажется, chkconfig недоступен в Ubuntu 13.04. - person Geuis; 25.06.2013
comment
Вы можете проверить конфигурацию nginx, используя: sudo nginx -t Это обычно выделяет любые проблемы. У вас одновременно установлены две версии nginx? - person outrunthewolf; 25.06.2013

Для Убунты:

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

systemctl status nginx.service

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

Если он не запущен, его необходимо включить

sudo /etc/init.d/systemctl enable nginx
sudo reboot
person David    schedule 18.05.2019


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

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


Я на 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 был запущен до того, как сетевой интерфейс был запущен. Этот ответ об ошибке сервера дал мне подсказки, необходимые для исправления сценария NginX Ubuntu Upstart. Таким образом, '!' отсутствовал, IFACE=lo нужно было заменить на IFACE!=lo. Для удобства я вставил полный скрипт ниже:

# 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

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

person Visionscaper    schedule 12.03.2016
comment
У меня та же проблема, однако я не вижу, где находится опубликованный вами скрипт (на вашем ящике). В моем случае я использую Ubuntu 15.10 и подозреваю, что проблема с неудачным запуском возникает из-за того, что мое экспресс-приложение запускается после nginx (я использую pm2). По какой-то причине, если я загружаюсь в режиме графического интерфейса, все в порядке, но при загрузке в безголовом режиме nginx не запускается. - person Pavel P; 23.03.2016
comment
Привет, @Pavel, пожалуйста, ознакомьтесь со сценарием Ubuntu Upstart [1]. Там указано Сохранить этот файл как /etc/init/nginx.conf, так что это расположение скрипта. Может ли быть так, что в GUI-режиме сетевой интерфейс уже работает при запуске NGinX, а в headless-режиме нет? [1] nginx.com/resources/wiki/start/topics /примеры/ubuntuupstart/# - person Visionscaper; 28.03.2016
comment
После некоторого поиска в Google и тестирования я увидел в журналах nginx, почему он не запускался, и похоже, что он терпел неудачу, потому что не мог подключиться к моему приложению node.js, которое было объявлено как localhost: 3333 (nginx является обратным прокси). похоже, что из-за времени, по-видимому, localhost может не разрешиться при запуске (wtf!?). В моем случае мне пришлось заменить его на 127.0.0.1, и это решило проблему. - person Pavel P; 28.03.2016

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

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

Для меня это было потому, что я не сделал sudo apt-get update --fix-missing перед установкой sudo apt-get install nginx

Архитектура: armv7l

ОС: rasplite

person Maddocks    schedule 19.12.2019