Как перезапустить nginx?


95

Для меня я запускаю "killall nginx" и запускаю его "sbin / nginx", у кого-нибудь есть лучший скрипт перезапуска?

Кстати: я устанавливаю nginx из исходного кода, я не нахожу команду 'service nginx' или /etc/init.d/nginx


1
Почему вы устанавливаете из источника? Пакеты Nginx доступны для большинства хороших дистрибутивов Linux. Или вы можете свернуть свои собственные пакеты, но неиспользование пакетов является ошибкой для удобства обслуживания.
— Том О'Коннор

из - за mod_rails
— Larry

Ответы:


150

Пакет nginx предоставляет скрипт /etc/init.d/nginx, который обеспечивает обычную функциональность start | stop | restart | reload ....

/etc/init.d/nginx restart

перезапустит nginx

как будет

service nginx restart

редактировать

Вот ссылка на скрипт, который вы можете использовать как /etc/init.d/nginx.


2
Зависит от вашего хранилища. Исходный код Nginx не содержит сценариев инициализации, поэтому, если вам нравится обновляться и компилироваться из исходного кода, вам нужно будет получить его из вики.
— Мартин Фьордвальд,

1
Мне нужно больше кофе, прежде чем отвечать на вопросы ...
— user9517 16.12.10

На что указывает перезапуск службы nginx и уместно ли что-то перезагружать при внесении изменений в init.d / nginx? Две мои команды (/etc/init.d/nginx и service nginx) кажутся не синхронизированными.
— Дэнни

@Danny: не знаю, я написал это> 2 года назад.
— user9517

15

http://wiki.nginx.org/CommandLine

внутри ссылок есть какая-то команда для запуска и остановки nginx сервера

для запуска nginx:

/usr/bin/nginx

для остановки nginx:

/usr/bin/nginx -s stop

/usr/bin зависит от того, где вы устанавливаете свой nginx


4

По какой-то причине во встроенной системе я работаю над этим:

systemctl restart nginx

1
Этот вопрос и большинство ответов ему восемь лет и устарели. Это «какая-то причина». Это правильный способ сделать это в современных операционных системах Linux.
— Майкл Хэмптон

Ладно, может быть, это не только так для встраиваемых систем
— кардамон

1

После редактирования файлов конфигурации я перезагружаю его следующим образом в OpenBSD:

kill -HUP `cat /var/run/nginx.pid` && date && sleep 1 && \
    tail -2 /var/www/logs/error.log ; date

HUPСигнала делает его перечитать конфигурационные файлы, на tailшоу были ли встретившиеся какие - либо ошибки, то dateставит эти ошибки в контекст ( в случае ошибки только , если время от dateсовпадения времени из журнала), и sleep 1гарантирует , что есть не было никаких расхождений между чтением из журнала до того, как nginx успел написать в него.

Вот как это выглядит:

Cns# kill -HUP `cat /var/run/nginx.pid` && date && sleep 1 && tail -2 /var/www/logs/error.log ; date
Tue Feb 12 10:58:52 PST 2013
2013/02/12 10:03:35 [emerg] 8120#0: directive "set" is not terminated by ";" in /etc/nginx/conf.d/etc.ngx.grok/bxr.su.conf:226
2013/02/12 10:04:19 [emerg] 8120#0: invalid return code "$uri_def" in /etc/nginx/conf.d/etc.ngx.grok/bxr.su.conf:231
Tue Feb 12 10:58:53 PST 2013
Cns# 

Тот факт, что время из журнала не dateуказано между указанными временами, указывает на то, что на этот раз ошибок не было, и новая конфигурация является хорошей.


0

Вы можете найти сценарии инициализации в NginX Wiki: http://wiki.nginx.org/Configuration#Init_Scripts

Функция перезапуска выполняет следующую команду:

BASEDIR=
$BASEDIR/sbin/nginx -s stop
$BASEDIR/sbin/nginx $BASEDIR/conf/nginx.conf

Если вы установили nginx в / opt / nginx, замените BASEDIR=на BASEDIR=/opt/nginx.


0

Обычно пакеты, установленные из исходного кода, не устанавливают сценарий запуска в /etc/init.d/. У вас есть два варианта.

1- Вы можете найти скрипт в каталоге с исходным кодом или на веб-сайте и настроить его при необходимости.

2- Вы можете скопировать сценарий запуска для другого пакета из вашей системы и настроить его.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.