Назад | Перейти на главную страницу

Ошибка перезапуска службы httpd на aws amazon linux ami

Спасибо за вашу помощь. Недавно я сделал следующее:

  1. Ран sudo yum update на моем экземпляре ec2 с Amazon Linux ami
  2. Затем я добавил виртуальный хост в свой vhost.conf для поддомена.
  3. Пока сервер все еще доступен, когда я запустил sudo 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>