Nginx не запускается после обновления Ubuntu (16.04)

Вопрос или проблема

Недавно я обновил свой сервер Ubuntu до версии 16.04. С тех пор я не могу запустить службу nginx.

Результаты service nginx restart :

Работа для nginx.service завершилась неудачно, так как процесс управления завершился с ошибкой. См. "systemctl status nginx.service" и "journalctl -xe" для получения подробной информации.

Что говорят системные логи (cat /var/log/syslog) :

20 мая 17:03:53: Остановлен высокопроизводительный веб-сервер и обратный прокси-сервер.
20 мая 17:03:53: Запуск высокопроизводительного веб-сервера и обратного прокси-сервера...
20 мая 17:03:53: nginx.service: Ошибка на этапе EXEC при создании /usr/sbin/nginx: Нет такого файла или каталога
20 мая 17:03:53: nginx.service: Процесс управления завершился кодом выхода, code=exited status=203
20 мая 17:03:53: Не удалось запустить высокопроизводительный веб-сервер и обратный прокси-сервер.
20 мая 17:03:53: nginx.service: Юнит вошел в состояние ошибки.
20 мая 17:03:53: nginx.service: Завершился с результатом 'exit-code'.

Результаты cat /lib/systemd/system/nginx.service :

# Остановка для nginx
# =======================
#
# ExecStop отправляет SIGSTOP (гладкая остановка) процессу nginx.
# Если через 5 секунд (--retry QUIT/5) nginx все еще работает, systemd берет управление
# и отправляет SIGTERM (быстрое завершение) основному процессу.
# Через еще 5 секунд (TimeoutStopSec=5), и если nginx жив, systemd отправляет
# SIGKILL всем оставшимся процессам в группе процессов (KillMode=mixed).
#
# nginx сигнал контроля документация:
# http://nginx.org/en/docs/control.html
#
[Unit]
Description=Высокопроизводительный веб-сервер и обратный прокси-сервер
After=network.target

[Service]
Type=forking
PIDFile=/run/nginx.pid
ExecStartPre=/usr/sbin/nginx -t -q -g 'daemon on; master_process on;'
ExecStart=/usr/sbin/nginx -g 'daemon on; master_process on;'
ExecReload=/usr/sbin/nginx -g 'daemon on; master_process on;' -s reload
# Используйте TERM вместо QUIT, чтобы избежать оставления устаревшего Unix-сокета и ошибки при следующем запуске (https://trac.nginx.org/nginx/ticket/753)
ExecStop=-/sbin/start-stop-daemon --quiet --stop --retry TERM/5 --pidfile /run/nginx.pid
# Дайте Passenger возможность очиститься перед тем, как systemd его убьет.
ExecStop=/bin/sleep 1
TimeoutStopSec=5
KillMode=mixed

[Install]
WantedBy=multi-user.target

Действительно, нет файла по адресу /usr/sbin/nginx, поэтому я попробовал apt install nginx, но вот результат :

Чтение списков пакетов... Готово
Построение дерева зависимостей
Чтение информации о состоянии... Готово
Некоторые пакеты не могут быть установлены. Это может означать, что вы запросили невозможную ситуацию или если вы используете нестабильную дистрибуцию, что некоторые необходимые пакеты еще не созданы или были перемещены из Incoming.
Следующая информация может помочь разрешить ситуацию:

Следующие пакеты имеют неудовлетворенные зависимости:
 nginx : Зависит: nginx-core (>= 1.10.0-0ubuntu0.16.04.4), но он не будет установлен или
                  nginx-full (>= 1.10.0-0ubuntu0.16.04.4), но он не будет установлен или
                  nginx-light (>= 1.10.0-0ubuntu0.16.04.4), но он не будет установлен или
                  nginx-extras (>= 1.10.0-0ubuntu0.16.04.4), но он не будет установлен
         Зависит: nginx-core (< 1.10.0-0ubuntu0.16.04.4.1~), но он не будет установлен или
                  nginx-full (< 1.10.0-0ubuntu0.16.04.4.1~), но он не будет установлен или
                  nginx-light (< 1.10.0-0ubuntu0.16.04.4.1~), но он не будет установлен или
                  nginx-extras (< 1.10.0-0ubuntu0.16.04.4.1~), но он не будет установлен
E: Невозможно исправить проблемы, у вас есть удерживаемые поврежденные пакеты.

Обновление 1 :

Результаты systemctl status nginx.service после запуска updatedb :

● nginx.service - Высокопроизводительный веб-сервер и обратный прокси-сервер
   Загружено: загружен (/lib/systemd/system/nginx.service; включено; предустановка поставщика: включена)
   Активно: ошибка (Результат: код выхода) с Sat 2017-05-20 17:41:49 CEST; 1min 30s назад
     Документация: man:nginx(8)
  Процесс: 11212 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (код=exited, статус=1/FAILURE)
  Процесс: 11210 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (код=exited, статус=0/SUCCESS)

May 20 17:41:48 ns3031916.ip-178-32-217.eu nginx[11212]: nginx: [emerg] listen() to [::]:80, backlog 511 failed (98: Address already in use)
May 20 17:41:48 ns3031916.ip-178-32-217.eu nginx[11212]: nginx: [emerg] listen() to 0.0.0.0:80, backlog 511 failed (98: Address already in use)
May 20 17:41:48 ns3031916.ip-178-32-217.eu nginx[11212]: nginx: [emerg] listen() to [::]:80, backlog 511 failed (98: Address already in use)
May 20 17:41:49 ns3031916.ip-178-32-217.eu nginx[11212]: nginx: [emerg] listen() to 0.0.0.0:80, backlog 511 failed (98: Address already in use)
May 20 17:41:49 ns3031916.ip-178-32-217.eu nginx[11212]: nginx: [emerg] listen() to [::]:80, backlog 511 failed (98: Address already in use)
May 20 17:41:49 ns3031916.ip-178-32-217.eu nginx[11212]: nginx: [emerg] still could not bind()
May 20 17:41:49 ns3031916.ip-178-32-217.eu systemd[1]: nginx.service: Процесс управления завершился, код=exited статус=1
May 20 17:41:49 ns3031916.ip-178-32-217.eu systemd[1]: Не удалось запустить высокопроизводительный веб-сервер и обратный прокси-сервер.
May 20 17:41:49 ns3031916.ip-178-32-217.eu systemd[1]: nginx.service: Юнит вошел в состояние ошибки.
May 20 17:41:49 ns3031916.ip-178-32-217.eu systemd[1]: nginx.service: Завершился с результатом 'exit-code'.

Как новичок, я довольно потерян в этом mess и мне действительно нужна помощь.

Большое спасибо за ваше время.

Проблема решена здесь:
https://askubuntu.com/questions/917147/nginx-wont-start-since-ubuntu-upgrade-16-04/917152#917152

Копия/вставка ответа Томаса Ворда, который решил мою проблему:

Таким образом, у вас есть две вещи, которые находятся в конфликте и, по-видимому, привели к исчезновению бинарников nginx: версия репозитория Xenial и NGINX PPA. Как поддерживающий обе, позвольте объяснить конфликт.

В Xenial мы выпустили 1.10.0 сразу после выпуска в качестве обновления. Это обновление перевело нас на ‘стабильную’ ветку, но не имело
модулей с динамической загрузкой, доступных для установки. Это было связано с ограничением времени, а также с конфликтами в сборке, возникшими во время тестов. Мы
в конце концов смогли обеспечить поддержку динамических модулей в Zesty.

В PPA, мы всегда клонировали непосредственно из Debian. Это означает, что у нас всегда была поддержка ‘динамических модулей’ от Debian, которая конфликтовала с
пакетами Xenial и приводила к некоторым конфликтам при установке и обновлении.


Здесь есть небольшой конфликт – вы не можете совмещать nginx-core (который является стандартным вариантом установки для пакета
nginx в Ubuntu) и PPA, так как это иногда приводит к исчезновению компонентов. Поэтому проблема здесь состоит в том, что нам нужно удалить
существующий пакет Ubuntu и затем установить только из PPA.

Для разрешения этой ситуации сначала вам следует сделать резервное копирование ваших конфигураций nginx, которые вы хотите сохранить для ваших сайтов. То есть, скопируйте
вашу директорию /etc/nginx/sites-available/ куда-либо еще (даже в домашнюю директорию вашего пользователя это подходит, нам просто нужна копия конфигураций сайтов).
Также нам понадобится резервная копия ваших данных сайта, так что скопируйте их куда-либо еще (НЕ в стандартную корневую директорию документов, чтобы они
не были повреждены).

После того как вы сделаете копию, вам нужно будет удалить существующие пакеты nginx. Это можно сделать с помощью следующей команды:

sudo apt-get remove nginx nginx-common nginx-doc nginx-core nginx-full nginx-extras nginx-light

После этого выполните sudo apt-get update снова, чтобы убедиться, что у нас есть последние версии пакетов.

Затем установите nginx из PPA – sudo apt-get install nginx nginx-full nginx-common должно это сделать.

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

.

Ответ или решение

Ваша проблема с Nginx, возникшая после обновления до Ubuntu 16.04, связана с конфликтом пакетов, установленным из стандартных репозиториев Ubuntu и PPA NGINX. Эти две разные версии Nginx имеют различную поддержку модулей, что приводит к конфликтам во время обновления и установки компонентов.

Функция (Function): После обновления до Ubuntu 16.04 Nginx перестал запускаться, и там обнаружена недостающая бинарная часть — файл /usr/sbin/nginx. Система сообщает об ошибках зависимости при попытке установки Nginx из репозиториев.

Осведомленность (Opportunity): Данная ситуация предоставляет возможность улучшить ваше знание об управлении пакетами и конфигурациях в Ubuntu, а также понять, как разрешать конфликты между различными источниками пакетов.

Решение (Resolution):

  1. Сначала убедитесь, что вы сохранили все важные конфигурации и данные сайтов. Сделайте резервные копии каталогов /etc/nginx/sites-available/ и вашего веб-контента.

  2. Удалите текущие пакеты Nginx, чтобы избежать конфликта. Используйте следующую команду, чтобы выполнить очистку системы:

    sudo apt-get remove nginx nginx-common nginx-doc nginx-core nginx-full nginx-extras nginx-light

    Это удалит все возможные компоненты Nginx из системы, подчистив предыдущие конфликты.

  3. После этого обновите информацию о пакетах, чтобы убедиться, что у вас самые последние версии:

    sudo apt-get update
  4. Установите Nginx из PPA, используя команду:

    sudo apt-get install nginx nginx-full nginx-common

    Это установит Nginx с поддержкой динамических модулей, что избавит от потенциальных конфликтов между версиями.

Экспертный подход (Expertise): Убедитесь, что ваши конфигурации Nginx остаются в актуальном состоянии после установки, верните резервные копии, если они, возможно, перезаписаны новым пакетом. Проверьте конфигурации ваших виртуальных хостов и другие настройки.

Тренды и дополнительные рекомендации (Trends): Впредь, при работе с системами Linux и управлении пакетами, старайтесь избегать одновременно использования нескольких источников пакетов для одного и того же приложения, если это только не предусмотрено для специфических целей.

Следуя данному решению, вы сможете вернуть работоспособность вашего веб-сервера Nginx на Ubuntu 16.04, минимизировав будущие конфликты и оптимизируя производительность системы.

Оцените материал
Добавить комментарий

Капча загружается...