Помилка під час встановлення Nginx на Ubuntu 16.04


5

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

Вдячний за будь-яку допомогу!

Job for nginx.service failed because the control process exited with error code. See "systemctl status nginx.service" and "journalctl -xe" for details.
invoke-rc.d: initscript nginx, action "start" failed.
● nginx.service - A high performance web server and a reverse proxy server
   Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
   Active: failed (Result: exit-code) since Mon 2017-03-27 21:38:51 PHT; 10ms ago
  Process: 28178 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=1/FAILURE)
  Process: 28174 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS)

Mar 27 21:38:49 nico-Aspire-E5-575G nginx[28178]: nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
Mar 27 21:38:49 nico-Aspire-E5-575G nginx[28178]: nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
Mar 27 21:38:50 nico-Aspire-E5-575G nginx[28178]: nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
Mar 27 21:38:50 nico-Aspire-E5-575G nginx[28178]: nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
Mar 27 21:38:51 nico-Aspire-E5-575G nginx[28178]: nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
Mar 27 21:38:51 nico-Aspire-E5-575G nginx[28178]: nginx: [emerg] still could not bind()
Mar 27 21:38:51 nico-Aspire-E5-575G systemd[1]: nginx.service: Control process exited, code=exited status=1
Mar 27 21:38:51 nico-Aspire-E5-575G systemd[1]: Failed to start A high performance web server and a reverse proxy server.
Mar 27 21:38:51 nico-Aspire-E5-575G systemd[1]: nginx.service: Unit entered failed state.
Mar 27 21:38:51 nico-Aspire-E5-575G systemd[1]: nginx.service: Failed with result 'exit-code'.
dpkg: error processing package nginx-core (--configure):
 subprocess installed post-installation script returned error exit status 1
dpkg: dependency problems prevent configuration of nginx:
 nginx depends on 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); however:
  Package nginx-core is not configured yet.
  Package nginx-full is not installed.
  Package nginx-light is not installed.
  Package nginx-extras is not installed.
 nginx depends on 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~); however:
  Package nginx-core is not configured yet.
  Package nginx-full is not installed.
  Package nginx-light is not installed.
  Package nginx-extras is not installed.

dpkg: error processing package nginx (--configure):
 dependency problems - leaving unconfigured
No apport report written because the error message indicates its a followup error from a previous failure.
                                                                                                          Processing triggers for systemd (229-4ubuntu16) ...
Processing triggers for ureadahead (0.100.0-19) ...
Processing triggers for ufw (0.35-0ubuntu2) ...
Errors were encountered while processing:
 nginx-core
 nginx
E: Sub-process /usr/bin/dpkg returned an error code (1)

2
схоже, ви вже використовуєте той самий IP для іншої послуги? Це повідомлення вказувало б на щось подібне "27 березня 21:38:49 nico-Aspire-E5-575G nginx [28178]: nginx: [emerg] прив'язувати () до 0,0.0,0:80 не вдалося (98: Адреса вже використовується ) "
Антонелло П'ємонте

Відповіді:


8

Щось вже працює на порту 80, тому коли nginx намагається запустити і прийняти цей порт, це не вдасться. Перевірте, що працює на вашому порту 80, і зупиніть це. Ви можете дізнатися для чого використовується порт 80 за допомогою:

sudo netstat -lnp | grep 0.0.0.0:80

Як тільки ви знайдете, що використовує порт, зробіть його, systemctl stopщоб зупинити його, і спробуйте запустити nginx знову. Майте на увазі, що вам доведеться назавжди відключити цю іншу службу, щоб nginx працював належним чином.


Що робити, якщо ця команда повернеться порожньою?
Натаніел Форд

1
@NathanielFord тоді це означає, що на цьому порту немає нічого прослуховування і проблема в чомусь іншому.
дедуліч

1
Місцевий ip не повинен бути 0.0.0.0. У двигуні обчислень Google, яким я користувався, було :::80. Просто киньте grepі прочитайте на виході нічого не працює на 80/443.
notsopopularguy

2

Схоже, що NGINX та деякі інші серверні програми обов`язково використовують порт 80 як порт за замовчуванням.

Найпростішим рішенням буде змінити порт NGINX на щось інше, що можна зробити за допомогою редагування /etc/nginx/sites-available/default(або будь-якого конфігураційного файла) для прив’язки до іншого порту.

Шукайте рядок, який говорить приблизно так:

Listen 80;

Змініть 80 на вільний порт (наприклад, 851):

Listen 851;

Перезапустіть NGINX, і він повинен запускатися знову без проблем.

Зауважте, що якщо ви хочете фактично використовувати NGINX як ваш веб-хост, вам потрібно буде змінити конфігурацію іншого веб-сервера.


2

Я потрапив у цю ж ситуацію, вибравши параметр за замовчуванням на Debian 9 під час встановлення віртуальної машини на VirtualBox. Я припускаю, що щось подібне могло статися з ОП.

(...)
Choose software to install
[ ] Desktop environment
[*] Web Server
(...)

Це дозволить встановити Apache та ввімкнути / запустити його сервіс одразу. Якщо ваш дистрибутив використовує systemd, ви можете перевірити, чи це так:

sudo systemctl list-units | grep apache

Що показує:

apache2.service
      loaded active running   The Apache HTTP Server

Ви можете зупинити послугу Apache:

sudo systemctl stop apache2.service

А також відключити службу de, щоб вона не перезапускалася автоматично при наступному перезавантаженні:

sudo systemctl disable apache2.service

Після цього ви можете перезапустити nginx:

sudo systemctl restart nginx

Ви можете перевірити, чи працює він із браузером командного рядка, таким як Lynx:

lynx 127.0.0.1

                                    Apache2 Debian Default Page: It works (p1 of 4)
   Debian Logo Apache2 Debian Default Page
   It works!

   This is the default welcome page used to test the correct operation of the
   Apache2 server after installation on Debian systems. (...)

І вам може здатися дивним / заплутаним те, що привітальна сторінка Apache все ще завантажується nginx. Це тому , що Apache створив HTML - файл за умовчанням , який Nginx вказує на за замовчуванням: /var/www/html/index.html. Файл привітального файлу nginx html у моєму випадку був /var/www/html/index.nginx-debian.html. Ви можете змінити, яку сторінку за замовчуванням завантажуєте, змінивши файл конфігурації за замовчуванням nginx (і зберігаючи його з відповідними дозволами):

sudo nano /etc/nginx/sites-available/default

(...)
# Default server configuration
#
server {
      (...)
      # original index directive:
      # index index.html index.htm index.nginx-debian.html;
      # modified index directive:
      index index.htm index.nginx-debian.html;
      (...)
}

Виключаючи index.htmlз аргументів до indexдирективи, шукається наступний файл-кандидат. У моєму випадку index.htmне існує, тому index.nginx-debian.htmlвикористовується. Ця зміна не набирає чинності, поки nginx не буде перезавантажено, тому ви можете надіслати їй сигнал перезавантаження:

sudo nginx -s reload.

Тепер ви можете перевірити стандартну вітальну сторінку nginx:

lynx 127.0.0.1

                                                                 Welcome to nginx!
                                 Welcome to nginx!

   If you see this page, the nginx web server is successfully installed and
   working. Further configuration is required.
   (...)

2
Debian 9, до речі, не Ubuntu. Ті самі проблеми, які виникають у Debian, не стосуються Ubuntu.
Томас Уорд

@ThomasWard дякую за коментар, я закінчив читати про те, що слід, а що не слід заносити на кожен конкретний сайт SE. Я створив цю відповідь нетерпляче, тому що це був перший результат google для цієї проблеми. Ви не проти видалити цю відповідь? Я б оновив його після тестування в системі Ubuntu, але я просто не впевнений, коли мені вдасться це зробити.
членистоногий

1
@ arthropod це мені дуже допомогло, і я не вважаю за потрібне видаляти таку гарну відповідь. Незважаючи на те, що Debian і Ubuntu не зовсім однакові, спільність зменшує різницю. Створення окремої, ймовірно важкої для розкриття теми на Debian з тієї ж проблеми навряд чи буде поліпшенням у речах.
MichM

0

На підставі повідомлення про помилку:

  Package nginx-full is not installed.
  Package nginx-light is not installed.
  Package nginx-extras is not installed.

Я рекомендую вам бігти sudo apt-get install nginx-full nginx-light nginx-extras


Нерелевантні. У nginxметапакеті є кілька альтернативних залежностей, як вони перераховані лише на два рядки вище тих, що ви цитували: nginx depends on 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); however: Package nginx-core is not configured yet. nginx-commonвстановлюється сам по собі, і їх має вистачити для встановлення nginx-core.
Урхіксидур
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.