Apache не запускается, адрес уже используется (но не совсем)

Я пытаюсь настроить виртуальную машину под управлением Ubuntu 12.04. У меня есть два виртуальных хоста, настроенных с использованием порта 80, но Apache не запустится.

Я получаю эту ошибку:
(98) Address already in use: make_sock: could not bind to address 0.0.0.0:80

Вывод netstat -tulpn показывает, что ничто не использует порт 80. Что может быть причиной этого?

58
задан 2 April 2013 в 18:59

11 ответов

Я понял это. У меня был дубликат, Слушают 80 команд и в моем httpd.conf и в ports.conf

кроме того, в копировании файла конфигурации для того сервера, это виртуализируется, я забыл замечать, что каталог журнала ошибок был изменен. Изучая тот журнал ошибок, я заметил, что каталог для mime.types файл конфигурации был неправильным в моем httpd.conf файл. Я обновил тот параметр и сервер запущенный штраф.

4
ответ дан 2 April 2013 в 18:59

я получил эту ошибку на новой установке при запуске apache2 Ubuntu 12.10.

, Это - ошибка в apache2. Это подвешивается в фоновом режиме. Вот моя пошаговая демонстрация туда, где ошибки могли бы быть в программном обеспечении.

Вот ошибка, которую я получил:

el@titan:~$ sudo service apache2 start
 * Starting web server apache2               
(98)Address already in use: make_sock: could not bind to address 0.0.0.0:80
no listening sockets available, shutting down
Unable to open logs
Action 'start' failed.
The Apache error log may have more information.
                                                                         [fail]

Адрес, уже используемый? Что могло использовать его?Попробуйте:

el@titan:~$ grep -ri listen /etc/apache2
/etc/apache2/apache2.conf:#   supposed to determine listening ports for incoming connections, and which
/etc/apache2/apache2.conf:# Include list of ports to listen on and which to use for name based vhosts
/etc/apache2/ports.conf:Listen 80
/etc/apache2/ports.conf:    Listen 443
/etc/apache2/ports.conf:    Listen 443

, Который означает, apache2 препятствует тому, чтобы apache2 запустился. Причудливый. Это подтвердит:

el@titan:~$ ps -ef | grep apache2
root      1146   954  0 15:51 ?        00:00:00 /bin/sh /etc/rc2.d/S91apache2 start
root      1172  1146  0 15:51 ?        00:00:00 /bin/sh /usr/sbin/apache2ctl start
root      1181  1172  0 15:51 ?        00:00:00 /usr/sbin/apache2 -k start
root      1193  1181  0 15:51 ?        00:00:00 /bin/bash /usr/share/apache2/ask-for-passphrase 127.0.1.1:443 RSA
el        5439  5326  0 16:23 pts/2    00:00:00 grep --color=auto apache2

Да, в этом случае apache2 работает, я пытался запустить apache2 во второй раз на том же порте.

то, Что смущает меня, - то, что service отчеты, что apache2 НЕ работает:

el@titan:~$ sudo service apache2 status
Apache2 is NOT running.

И когда Вы запрашиваете apache2ctl для его состояния, он зависает.

root@titan:~# /usr/sbin/apache2ctl status
**hangs until Ctrl-C is pressed.

, Таким образом, Ubuntu, кажется, испытывает затруднения при управлении apache2 на начальной загрузке. Время для остановки apache2:

root@titan:~# /usr/sbin/apache2ctl stop
httpd (no pid file) not running

А большая подсказка! Вы пытаетесь остановить apache2, и он потерял идентификатор процесса! Таким образом, Ubuntu не может остановить apache2, потому что это не знает, где это!

Вы думали бы, что перезагрузка зафиксирует его, но это не делает, потому что apache2 запускается на начальной загрузке и зависает. Нормальный процесс начальной загрузки для apache2 не работает правильно.

Поэтому, Как зафиксировать его?

я смог зафиксировать это путем анализа ps вывод команды. Заметьте, что эти ps команда говорит нам, что тот процесс был запущен "/etc/rc2.d/S91apache2, запускаются".

, Который является незаконной программой, для которой нужен быстрый удар.

/etc/rc2.d/S91apache2 символьная ссылка, используемая для запуска apache2 для Вас когда запуски компьютера. По некоторым причинам это, кажется, запускает apache2 и затем зависает. Таким образом, мы должны будем сказать этому не делать это.

Так идут, смотрят на это /etc/rc2.d/S91apache2.

el@titan:/etc/rc2.d$ ls -l
lrwxrwxrwx   1 root root    17 Nov  7 21:45 S91apache2 -> ../init.d/apache2*

Это - символьная ссылка, которой мы не хотим, чтобы это было там. Сделайте это, чтобы препятствовать тому, чтобы apache2 запустился на начальной загрузке:

root@titan:~# sudo update-rc.d -f apache2 remove
 Removing any system startup links for /etc/init.d/apache2 ...
   /etc/rc0.d/K09apache2
   /etc/rc1.d/K09apache2
   /etc/rc2.d/S91apache2
   /etc/rc3.d/S91apache2
   /etc/rc4.d/S91apache2
   /etc/rc5.d/S91apache2
   /etc/rc6.d/K09apache2

Перезагружают компьютер, чтобы удостовериться, что apache2 не запускается и зависает. Хорошо хороший. Теперь Вы, COULD поместила apache2, поддерживаете способ, которым это было, но это заставит его перестать работать снова.

root@titan:~$ sudo update-rc.d apache2 defaults     //(don't do this)
 Adding system startup for /etc/init.d/apache2 ...
   /etc/rc0.d/K20apache2 -> ../init.d/apache2
   /etc/rc1.d/K20apache2 -> ../init.d/apache2
   /etc/rc6.d/K20apache2 -> ../init.d/apache2
   /etc/rc2.d/S20apache2 -> ../init.d/apache2
   /etc/rc3.d/S20apache2 -> ../init.d/apache2
   /etc/rc4.d/S20apache2 -> ../init.d/apache2
   /etc/rc5.d/S20apache2 -> ../init.d/apache2

Вместо этого запустите apache2 как это:

sudo service apache2 start

И apache2 вернулся и служащие страницы снова. Кажется, существуют некоторые серьезные ошибки с apache2/Ubuntu 12.10, который заставляет apache2 запускаться и зависать. Это - обходное решение, я предполагаю, что фиксация должна получить более новые версии apache2 и Ubuntu и надеяться на лучшее.

11
ответ дан 2 April 2013 в 18:59

Это означает, что Вы - порт 80, уже используется, любое изменение порт для apache2 (который я не рекомендую) путем редактирования:

/etc/apache2/ports.conf

Или близко работа приложения порта 80:

netstat -antp | grep 80

Для нахождения, что работает на порте 80.

2
ответ дан 2 April 2013 в 18:59

Не только копируют упоминания о

Listen 80

, но также и упоминание об этом, кроме того, для Слушания 80

Include ports.conf
2
ответ дан 2 April 2013 в 18:59

Когда у меня была эта проблема, это оказалось, потому что мой Apache не мог запуститься на начальной загрузке, потому что у меня был сайт SSL, который потребовал, чтобы пароль был введен для сертификата.

А хороший способ сказать, должен ли дело обстоит так для Вас работать ps -ef | grep apache: если это возвращает процессы, которые похожи /bin/bash /usr/share/apache2/ask-for-passphrase mysite.com:443 RSA затем, это ожидает пароля, который будет вводиться в терминал, который Вы никогда не будете видеть.

Первый, я уничтожил подвешенный процесс (отправляющий kill -HUP к идентификатору процесса для процесса/usr/sbin/apache2, должен быть достаточно, чтобы уничтожить другие также, но сделать другой ps -ef | grep apache, чтобы быть уверенным).

Затем я следовал инструкциям в этом сообщении для создания файла паролей SSL, который не потребовал, чтобы пароль был введен. Затем service apache2 start хорошо работал, и Apache, запущенный правильно после перезагрузки.

13
ответ дан 2 April 2013 в 18:59

Просто подсказка для любого, кто, возможно, выполняет VirtualBox с сетями NAT. Я нашел, имея правило NAT между моим гостем, и хост собрался, связав порт

2
ответ дан 2 April 2013 в 18:59

Ответ путем я решил эту проблему. Может быть полезно кому-то в будущем.

Попытка netstat -ltnp | grep :80

Это возвратило бы что-то как

, tcp6 0 0::: 80:::* СЛУШАЕТ, 1047/apache2

Затем работает

sudo kill -9 1047

, Где 1047 pid работы программы порта 80. Можно заменить pid, который Вы получили от netstat

19
ответ дан 2 April 2013 в 18:59

Удостоверьтесь, что Вы не объявляете Listen 80 дважды в .conf файлах.

, Например, у Вас мог бы быть он и в ports.conf и гостиница sites-enabled/www.conf.

Для обнаружения используйте: grep -ri listen /etc/apache2

Сохраняют Listen 80 в просто единственном месте.

38
ответ дан 2 April 2013 в 18:59

У меня был сервер Nginx, слушающий на моем сервере AWS EC2, я думаю, что он был настроен, когда я создавал EC2, следовательно был я уже получающий Адрес используемая ошибка. Таким образом, я остановил сервис и запустил сервис Apache2:

sudo service nginx stop
sudo service apache2 start
10
ответ дан 2 April 2013 в 18:59

Попробуйте sudo service apache2 stop И Перезапуск Apach снова

0
ответ дан 16 November 2019 в 10:16

Я не мог определить, в чем была моя проблема. Не было дубликатов для прослушивания порта 80 с помощью grep -ri listen / etc / apache2 , и я не видел другого приложения, использующего порт 80 с netstat .

У меня есть веб-сайт с установленным сертификатом, и в конце концов я решил, что мне даже не нужно прослушивать порт 80 (поправьте меня, если я ошибаюсь, пожалуйста), поэтому я просто удалил Listen 80 Строка в /etc/apache2/ports.conf , и теперь она работает.

0
ответ дан 26 December 2019 в 23:34

Другие вопросы по тегам:

Похожие вопросы: