Спасибо за вашу помощь. Недавно я сделал следующее:
sudo yum update
на моем экземпляре ec2 с Amazon Linux amisudo httpd restart
Я получил следующее:.
Stopping httpd: [FAILED]
Starting httpd: AH00548: NameVirtualHost has no effect and will be removed in the next release /etc/httpd/conf.d/vhost.conf:1
(98)Address already in use: AH00072: make_sock: could not bind to address [::]:80
(98)Address already in use: AH00072: make_sock: could not bind to address 0.0.0.0:80
no listening sockets available, shutting down
AH00015: Unable to open logs
[FAILED]
Кроме того, если я запустил команду перезапуска без sudo service httpd restart
Я получаю следующее сообщение:
rm: cannot remove `/var/run/httpd/httpd.pid': Permission deniedLED]
rm: cannot remove `/var/run/httpd/httpd.pid': Permission denied
Starting httpd: AH00548: NameVirtualHost has no effect and will be removed in the next release /etc/httpd/conf.d/vhost.conf:1
(13)Permission denied: AH00058: Error retrieving pid file /var/run/httpd/httpd.pid
AH00059: Remove it before continuing if it is corrupted.
[FAILED]
Из того, что вы предоставили, кажется, что есть другой процесс, использующий порт 80
Попробуйте сделать следующее:
Сначала вам нужно быть пользователем root, чтобы выполнять их, либо вы добавляете sudo перед командой, либо, прежде чем что-либо делать, переключитесь на пользователя root следующим образом:
su -root
и введите пароль root.
Затем продолжайте:
netstat -tulpn| grep :80
Приведенная выше команда отображает список подключений, использующих порт 80.
Затем выполните следующую команду, чтобы убить процесс, использующий порт 80.
kill -9 <process id>
Замените идентификатор процесса на номер процесса, который отображается на экране из предыдущей команды.
Затем выполните эту команду, чтобы запустить процесс httpd:
service httpd start
If the above did not work with you then try this Попробуйте это, я только что его протестировал:
for i in `lsof -i :80 | grep http | awk {' print $2'}`; do kill -9 $i; done
Затем выполните перезагрузку:
service httpd restart
Итак, ответ о другом процессе, использующем порт 80 или 443 или что-то еще, вероятно, более или менее верен, но это выглядит как классическая ошибка, и я решил поделиться ею. Вы никогда не должны убивать -9 pidof httpd
или как-то иначе убить apache резко. Если вы это сделаете, вы будете получать эту ошибку до тех пор, пока система не уничтожит все оставшиеся TCP-подключения к / от порта 80. Попробуйте netstat -alpn | grep ': 80' и проверьте, есть ли куча соединений в TCP_TIME_WAIT или что-то в этом роде. Вы должны оставить сервер apache выключенным, пока они ВСЕ не исчезнут.
Очевидно, у вас также может быть проблема, например, когда nginx или lighttpd работают на одной машине, блокируя порты, но держу пари, что кто-то убил apache. Все эти связи исчезнут примерно через две минуты.
Проверить пользователя:
id
Проверьте разрешение:
ls -l /var/run/httpd/httpd.pid
Запустите его, чтобы получить <process id>
:
netstat -tulpn| grep :80
Чтобы узнать, кто запускал httpd:
ps -ef|grep <process id>