Amazon EC2 - проблема перезапуска сервера Apache - PullRequest
9 голосов
/ 04 марта 2012

Когда я запускаю эту команду

sudo /etc/init.d/httpd restart

выдает ошибку ниже

Остановка httpd: [FAILED]

Начальный httpd: (98) Адрес уже используется: make_sock: невозможно привязать к адресу [::]: 80 (98) Адрес уже используется: make_sock: невозможно привязать к адресу 0.0.0.0: 80 нет доступных сокетов прослушивания, выключение Невозможно открыть журналы [СБОЙ]


я проверил запуск программ на порту 80 с помощью

netstat -lnp |grep: 80 (вывод ниже)

tcp 0 0 ::: 80 ::: * LISTEN 21739 / httpd


почему я не могу остановить остановку apache с помощьюsudo /etc/init.d/httpd restart?

приведенные ниже команды работают без проблем

sudo apachectl stop

sudo apachectl start

я использую linuxмикро экземпляр амазонки ec2

Ответы [ 3 ]

15 голосов
/ 30 апреля 2013

Я столкнулся с этой проблемой, когда установил apache из исходного кода, но затем попытался запустить

$ sudo /etc/init.d/httpd restart 

, который использовал предустановленную версию apache.Директива stop в /etc/init.d/httpd не удаляла файл httpd.pid, который был создан при запуске версии apache с установленным исходным кодом.

Чтобы определить, является ли это также причиной вашей проблемынайдите, где устанавливается файл httpd.pid при запуске

$ sudo apachectl start

Если вы установили из исходного кода, а apache2 находится в / usr / local / apache2, то файл httpd.pid должен быть создан в/ USR / местные / apache2 / журналы.Когда вы остановите apache, запустив

$ sudo apachectl stop

, этот файл должен быть удален.Поэтому, чтобы проверить, является ли файл httpd.pid причиной вашей проблемы, запустите apache, вызвав

$ sudo apachectl start

и найдите файл httpd.pid.Затем попробуйте остановить apache, используя

$ sudo /etc/init.d/httpd stop

Если оригинальный файл httpd.pid все еще присутствует, то вот почему apache не может запуститься, когда вы используете

$ sudo /etc/init.d/httpd start

./etc/init.d/httpd файл для правильной работы, я явно положил вызов apachectl в методах start и stop:

#!/bin/bash
# /etc/init.d/httpd
#
# Path to the apachectl script, server binary, and short-form for messages. 
apachectl=/usr/local/apache2/bin/apachectl 
httpd=/usr/local/apache2/bin/httpd 
pid=/usr/local/apache2/logs/httpd.pid 
prog=httpd 
RETVAL=0

start() {
    echo -n $"Starting $prog: "
    $apachectl -k start
    RETVAL=$?
    echo
    return $RETVAL
}
stop() {
    echo -n $"Stopping $prog: "
    $apachectl -k stop
    RETVAL=$?
    echo
}
5 голосов
/ 18 февраля 2017

Я попробовал это, и это работает:

  1. sudo fuser -k -n tcp 80
  2. sudo service httpd start

Надеюсь, это поможетВы!

Приветствия

0 голосов
/ 02 ноября 2012

Я чувствую, что лучше убить сам процесс, узнать идентификатор процесса и уничтожить его, а затем начать заново, он должен работать нормально

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...