Не вдалося перезавантажити Nginx - як відстежити, чому?


96

Привіт. У мене сервер Nginx деякий час працював на сервері Ubuntu 12.04.

Я поступово зав'язував різні шматочки, і домігся оптимізації часу завантаження на своїй сторінці WordPress.

Внісши кілька змін у файл хостів, я вирішив:

sudo /etc/init.d/nginx reload

До якої я отримую:

  • Перезавантаження конфігурації nginx nginx [невдача]

Ніякої додаткової інформації або міркувань не надається Як я можу перезапустити сервер, щоб він друкував будь-які заяви про помилки під час перезавантаження, щоб я міг почати відслідковувати помилку.

Для бонусного питання:

Для тих Nginx sysadmins, коли ви внесли купу змін до хостів і зафіксували декілька інших біт і раптом ваш сервер nginx не перезавантажиться (до речі, все ще, здається, працює!), Як ви починаєте свій підхід до ізоляції чому або почати ламати речі до налагодження!


4
Перевірте свій синтаксис за допомогою sudo nginx -t(або sudo nginx -p /etc/nginx -c nginx.confде /etc/nginxє ваш префікс конфігурації та nginx.confосновний файл конфігурації).
Лекенштейн

Перезавантаження sudo nginx -s також здавалося, що вона дає мені можливість прочитати!
Хью

Відповіді:


145

Перевірте syslog (/ var / log / syslog) на наявність повідомлень про проблеми конфігураційних файлів.

З командного рядка можна запустити:

nginx -c /etc/nginx/nginx.conf -t

щоб nginx перевірив вашу конфігурацію на наявність помилок.


а-ха! дуже корисно мені здається: розташування "/ blog / wp-admin" є поза місцезнаходженням "/blog/.*\.php$" в /etc/nginx/site-configs/wordpress.conf:1 ... цікаво , дає мені щось продовжувати!
Хью

2
ARGH! Три години пошуку, і виявляється, я пропустив; Дякуємо за всю допомогу, яка виявилася важливою для її відстеження. До речі, якщо хтось коли-небудь стикається з цим питанням після того, як слідкує за повідомленнями Ars Technica в Інтернеті. Я думаю, я зараз пережив їх за допомогою тонкої гребінця для зубів!
Хью

4
виконання цієї команди дає мені, nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successfulі все ж я все ще не можу запустити nginx для запуску
Білл Гаррісон

1
@BillGarrison перевірити syslog та журнал помилок nginx для отримання додаткової інформації
Dlloyd


7

Ви, ймовірно, повинні перевірити наявність помилок у /var/log/nginx/error.log.

У моєму випадку я не додав порт для ipv6. Ви також повинні зробити це (якщо ви працюєте з nginx на іншому порту, ніж 80): listen [::]:8000 default_server ipv6only=on;


1
Примітка: якщо ваші дозволи не /var/log/nginx/error.logввімкнуті, nginx не зможе записати на нього помилку і вимкнеться беззвучно. Перевірка конфігурації як у прийнятій відповіді ( nginx -c /etc/nginx/nginx.conf -t) допоможе.
користувач898763452

5

Я запустив ці команди, щоб повернути nginx до резервного копіювання та роботи:

# remove nginx conf files
apt-get purge nginx

# reinstall
apt-get install nginx

# make sure the default site is enabled
ln -s /etc/nginx/sites-available/default /etc/nginx/sites-enabled/default

# start nginx
sudo /etc/init.d/nginx start 

nginx зараз працює !!


2
Не потрібно видаляти і чистити, просто очистити. І важко зрозуміти, чи це не буде відповідь на питання, оскільки чистка видалить усі конфігураційні файли.
Пантера

1
В ідеалі - а для інших користувачів я вважав за краще отримати максимальну кількість даних про те, де стався збій, і відремонтувати мою поточну установку замість очищення та починати з нуля
Huw

1
@ bodhi.zazen я виправив свою відповідь. А щодо того, що сказав "Хью", я згоден. Просто я був на початку встановлення та налаштування, nginxтому не було великої справи просто видалити його та почати заново, а не простежувати помилку. Дякую обом за ваше наполягання.
Аарон Лелев'є

в моєму випадку я тільки мені довелося почати використовувати цю команду sudo /etc/init.d/nginx start
Шифлінг Код

3

Перевірте вашу /etc/nginx/sites-available/defaultабо будь-яку іншу копію, яку ви використовуєте, і переконайтесь, що ви відмежуєте (видаляєте #) все, що }вам може знадобитися, стосовно того, {що, ймовірно, було прокоментовано. Це було моє питання.


2

Потрібно очистити nginx, а потім введіть у командному рядку:

ln -s /etc/nginx/sites-availbale/default .etc/nginx/sites-enabled/default

Ви маєте на увазі apt-get purge?
RolandiXor

2

виконайте повторне відкриття всіх файлів, використовуючи

nginx -s reopen

потім використовуйте

nginx -s reload

Оскільки довідка nginx показує, що буде, перезавантажте nginx, відправивши сигнал до master.it повинен працювати.

Запит: будь ласка, не вводьте purgeкоманди без обережності, оскільки це може спричинити проблему для початківців (всі конфігурації будуть втрачені) .... ВЕЛИКІ проблеми.


1

Якщо він дає вам такі помилки, ви можете перевірити journalctl -xe.
У ньому є купа інформації про те, що сталося в операційній системі.
ви можете знайти рядок або просто journalctl -xe | grep nginxзнайти те, що сталося з nginx, коли він намагався запустити себе.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.