Я пытаюсь настроить веб-сервер Amazon EC2 в «виртуальном частном облаке». Я использую его вместо стандартного экземпляра EC2, потому что мне нужно было назначить несколько общедоступных IP-адресов, а это требует использования VPC.
В любом случае, после долгих прыжков я наконец-то запустил и подключил экземпляр через SSH. Я создал экземпляр из изображения стандартного веб-сервера, которое работает нормально. Однако, похоже, я не могу запустить Apache:
# service httpd status
httpd is stopped
# service httpd start
Starting httpd: (98)Address already in use: make_sock: could not bind to address [::]:80
(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
[FAILED]
# netstat -ltnp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1243/sshd
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1275/sendmail
tcp 0 0 0.0.0.0:9306 0.0.0.0:* LISTEN 1225/searchd
tcp 0 0 0.0.0.0:9312 0.0.0.0:* LISTEN 1225/searchd
tcp 0 0 :::80 :::* LISTEN 1289/httpd
tcp 0 0 :::22 :::* LISTEN 1243/sshd
tcp 0 0 :::443 :::* LISTEN 1289/httpd
# ps aux | grep httpd
root 1287 0.0 0.2 108476 1780 ? S 21:17 0:00 /bin/bash /etc/rc3.d/S85httpd start
root 1288 0.0 0.2 11348 1332 ? S 21:17 0:00 /bin/bash -c ulimit -S -c 0 >/dev/null 2>&1 ; /usr/sbin/httpd
root 1289 0.0 1.2 211888 7764 ? S 21:17 0:00 /usr/sbin/httpd
Так что я немного запутался. Apache не работает (как служба, и я не настраивал ее для запуска другими способами), и я не могу запустить службу, но разве это не говорит о том, что Apache IS работает? Есть идеи, как решить?
Добавлено 04 дек.2012
Apache установлен и настроен на автоматический запуск при загрузке с chkconfig --levels 235 httpd on
, поэтому процесс httpd запускается при загрузке. Однако когда вы входите service httpd status
он все еще читал как остановленный и был недоступен через веб-браузер.
Чтобы действительно перезапустить Apache, похоже, вам нужно изящно убить процесс (kill -15 1289
работает, где 1289 был идентификатором процесса), а затем введите service httpd start
. Теперь вы можете без проблем запускать, останавливать, перезапускать и перезагружать Apache.
Однако я хотел иметь возможность сразу же использовать служебную команду, и дальнейшие поиски привели меня к выводу, который никто не мог реально представить: для одного из ключей SSL требуется кодовая фраза, и ее нельзя было ввести при загрузке ( ясно), поэтому процесс не мог запуститься должным образом. Я удалил кодовую фразу (которая нам в любом случае не нужна) и перезагрузился. Теперь, когда я проверяю service httpd status
я получил httpd dead but subsys locked
. Я должен удалить /var/lock/subsys/httpd
чтобы процесс снова начался правильно.
Итак, это было похоже на прогресс, но процесс по-прежнему не запускается автоматически.
Идеи, пожалуйста?
tcp 0 0 ::: 80 ::: * СЛУШАТЬ 1289 / httpd
Httpd запущен и имеет идентификатор процесса 1289. Если по какой-то необычной причине это не Apache, а что-то еще с именем httpd, то вы можете найти дополнительную информацию с помощью такой команды, как lsof -n -p 1289
.
Вы могли бы просто kill
хотя этот процесс.
Я бы сказал, что apache IS запущен, и вы можете увидеть это на дисплее .... netstat указывает, что процесс 1289 прослушивает порт 80, и действительно, ps тоже показывает это. httpd - это apache!
Таким образом, вы, вероятно, можете просто убить -9 1289 (как root), а затем перезапустить.