Я пытаюсь настроить виртуальную машину 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. Что может быть причиной этого?
Я понял это. У меня было дублирование команд Listen 80 в моих httpd.conf и ports.conf
Кроме того, при копировании файла конфигурации для этого виртуализованного сервера я забыл заметить, что каталог журнала ошибок был изменен , Заглянув в этот журнал ошибок, я заметил, что каталог для файла конфигурации mime.types был неправильным в моем httpd.conf файле. Я обновил этот параметр, и сервер начал нормально работать.
Я понял это. У меня было дублирование команд Listen 80 в моих httpd.conf и ports.conf
Кроме того, при копировании файла конфигурации для этого виртуализованного сервера я забыл заметить, что каталог журнала ошибок был изменен , Заглянув в этот журнал ошибок, я заметил, что каталог для файла конфигурации mime.types был неправильным в моем httpd.conf файле. Я обновил этот параметр, и сервер начал нормально работать.
Отвечая на вопрос, как я решил эту проблему. Может быть полезно кому-то в будущем.
Try netstat -ltnp | grep :80
Это вернет нечто вроде
tcp6 0 0 ::: 80 ::: * LISTEN 1047 / apache2Затем запустите
sudo kill -9 1047
, где 1047 - это pid программы, запущенной на порту 80. Вы можете заменить pid, который вы получили из netstat
Когда у меня возникла эта проблема, оказалось, что мой 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 начал правильно после перезагрузки.
Убедитесь, что вы дважды не декларируете Listen 80 в файлах .conf.
Например, вы можете использовать его как в ports.conf, так и в inn sites-enabled/www.conf.
Чтобы узнать, используйте: grep -ri listen /etc/apache2
Держите Listen 80 только в одном месте.
Это означает, что вы уже используете порт 80, либо измените порт для apache2 (который я не рекомендую), отредактировав:
/etc/apache2/ports.conf
Или закройте приложение, запущенное на порту 80 :
netstat -antp | grep 80
Чтобы найти то, что работает на порту 80.
У меня был сервер Nginx, прослушивающий мой сервер AWS EC2, я думаю, что он сконфигурировался, когда я строил EC2, следовательно, я получал ошибку «Адреса» уже в использовании. Поэтому я остановил службу и запустил службу Apache2:
sudo service nginx stop
sudo service apache2 start
Просто подсказка для всех, кто, возможно, использует VirtualBox с сетями NAT. Я нашел, что правило NAT между моим гостем и хостом установило себя, привязывая порт
Не только дубликаты упоминаний
Listen 80
, но и упоминание об этом в дополнение к Listen 80
Include ports.conf
Отвечая на вопрос, как я решил эту проблему. Может быть полезно кому-то в будущем.
Try netstat -ltnp | grep :80
Это вернет нечто вроде
tcp6 0 0 ::: 80 ::: * LISTEN 1047 / apache2Затем запустите
sudo kill -9 1047
, где 1047 - это pid программы, запущенной на порту 80. Вы можете заменить pid, который вы получили из netstat
Когда у меня возникла эта проблема, оказалось, что мой 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 начал правильно после перезагрузки.
Убедитесь, что вы дважды не декларируете Listen 80 в файлах .conf.
Например, вы можете использовать его как в ports.conf, так и в inn sites-enabled/www.conf.
Чтобы узнать, используйте: grep -ri listen /etc/apache2
Держите Listen 80 только в одном месте.
Это означает, что вы уже используете порт 80, либо измените порт для apache2 (который я не рекомендую), отредактировав:
/etc/apache2/ports.conf
Или закройте приложение, запущенное на порту 80 :
netstat -antp | grep 80
Чтобы найти то, что работает на порту 80.
У меня был сервер Nginx, прослушивающий мой сервер AWS EC2, я думаю, что он сконфигурировался, когда я строил EC2, следовательно, я получал ошибку «Адреса уже в использовании». Поэтому я остановил службу и запустил службу Apache2:
sudo service nginx stop
sudo service apache2 start
Просто подсказка для всех, кто, возможно, использует VirtualBox с сетями NAT. Я нашел, что правило NAT между моим гостем и хостом установило себя, привязывая порт
Не только дубликаты упоминаний
Listen 80
, но и упоминание об этом в дополнение к Listen 80
Include ports.conf