Я столкнулся с этой проблемой, когда установил 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
}