Я пытаюсь настроить виртуальную машину под управлением 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. Что может быть причиной этого?
12.04
apache2
virtualization
Наводчик барнс
источник
источник
grep -ri listen /etc/apache
иsudo netstat -ntlp | grep 80
.grep -ri listen /etc/apache2
выходные данные: etc / apache2 / httpd.conf: прослушивание 80 /etc/apache2/httpd.conf: прослушивание 443 /etc/apache2/ports.conf: прослушивание 80 /etc/apache2/httpd.conf: прослушивание 443 / etc / apache2 / httpd.conf: слушай, 443sudo netstat -ntlp | grep 80
вообще ничего не выводит.Ответы:
Убедитесь, что вы не объявляете
Listen 80
дважды в файлах .conf.Например, у вас может быть как в, так
ports.conf
и в гостиницеsites-enabled/www.conf
.Чтобы узнать, используйте:
grep -ri listen /etc/apache2
Хранить
Listen 80
только в одном месте.источник
Отвечая так, как я решил эту проблему. Может быть полезным для кого-то в будущем.
Пытаться
netstat -ltnp | grep :80
Это вернет что-то вроде
Тогда беги
Где 1047 - это pid программы, работающей на порту 80. Вы можете заменить pid, полученный с
netstat
источник
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN -
Когда у меня возникла эта проблема, оказалось, что мой Apache не мог запуститься при загрузке, потому что у меня был сайт SSL, который требовал ввода пароля для сертификата.
Хороший способ определить, так ли это для вас, - запустить
ps -ef | grep apache
: если он возвращает процессы, которые выглядят так,/bin/bash /usr/share/apache2/ask-for-passphrase mysite.com:443 RSA
то он ожидает ввода пароля в терминале, который вы никогда не увидите.Во-первых, я убил зависший процесс (отправка a
kill -HUP
на идентификатор процесса для / usr / sbin / apache2 процесса должна быть достаточной, чтобы убить и другие, ноps -ef | grep apache
для уверенности сделаю другое ).Затем я следовал инструкциям в этом посте, чтобы создать файл паролей SSL, который не требует ввода пароля. Затем он
service apache2 start
работал нормально, и после перезагрузки Apache начал нормально работать.источник
Я получил эту ошибку при новой установке при запуске apache2 Ubuntu 12.10.
Это ошибка в apache2. Это зависает на заднем плане. Вот мое пошаговое руководство по обнаружению ошибок в программном обеспечении.
Вот ошибка, которую я получил:
Адрес уже используется? Что может быть с его помощью? Проверьте это:
Это означает, что apache2 предотвращает запуск apache2. Bizarre. Это подтвердит:
Да, в этом случае apache2 работает, я пытался запустить apache2 второй раз на том же порту.
Что меня смущает, так это
service
сообщения о том, что apache2 НЕ работает:И когда вы запрашиваете у apache2ctl его статус, он зависает.
Таким образом, Ubuntu, похоже, испытывает проблемы с управлением apache2 при загрузке. Время остановить apache2:
Большая подсказка! Вы пытаетесь остановить apache2, и он потерял идентификатор процесса! Так что Ubuntu не может остановить apache2, потому что он не знает, где он находится!
Вы могли бы подумать, что перезагрузка это исправит, но это не так, потому что apache2 запускается при загрузке и зависает. Нормальный процесс загрузки для apache2 не работает правильно.
Так как это исправить?
Я смог исправить это , проанализировав
ps
вывод команды. Обратите внимание, чтоps
команда сообщает нам, что этот процесс был запущен с помощью «/etc/rc2.d/S91apache2 start».Это оскорбительная программа, которая нуждается в быстром ударе.
/etc/rc2.d/S91apache2
символическая ссылка, используемая для запуска apache2 для вас при запуске компьютера. По какой-то причине кажется, что он запускает apache2, а затем зависает. Поэтому мы должны сказать это, чтобы не делать этого.Так что иди посмотри на это
/etc/rc2.d/S91apache2
.Это символическая ссылка, которую мы не хотим, чтобы она была там. Сделайте это, чтобы предотвратить запуск apache2 при загрузке:
Перезагрузите компьютер, чтобы убедиться, что apache2 не запускается и не зависает. Хорошо. Теперь вы МОЖЕТЕ вернуть Apache2 обратно, как это было, но это снова привело бы к сбою.
Вместо этого запустите apache2 следующим образом:
И apache2 снова работает и снова обслуживает страницы. Кажется, есть некоторые серьезные ошибки с apache2 / Ubuntu 12.10, которые вызывают запуск и зависание apache2. Это обходной путь, я полагаю, что исправление состоит в том, чтобы получить более новые версии apache2 и Ubuntu и надеяться на лучшее.
источник
У меня был сервер Nginx, прослушивающий мой сервер AWS EC2, я думаю, что он был настроен, когда я собирал EC2, поэтому я получал адрес, который уже используется, ошибка. Поэтому я остановил службу и запустил службу Apache2:
источник
Я понял это. В моем httpd.conf и ports.conf были дублированные команды Listen 80
Кроме того, копируя файл конфигурации для того сервера, который виртуализируется, я не заметил, что каталог журнала ошибок был изменен. Просматривая этот журнал ошибок, я заметил, что каталог для
mime.types
файла конфигурации был неверным в моемhttpd.conf
файле. Я обновил этот параметр, и сервер запустился нормально.источник
Listen 80
команды в моемhttpd.conf
иports.conf
Это означает, что ваш порт 80 уже используется, либо измените порт для apache2 (который я не рекомендую), отредактировав:
Или закройте приложение, работающее на порту 80:
Чтобы найти то, что работает на порту 80.
источник
netstat -antp | grep 80
ничего не выводит.Просто подсказка для любого, кто, возможно, работает VirtualBox с сетями NAT. Я обнаружил, что правило NAT между моим гостем и хостом настроило себя, привязав порт
источник
Не просто повторяющиеся упоминания
но и упоминание об этом в дополнение к Listen 80
источник