Главная >> Инструкции >> Почему Apache не запускается

Почему Apache не запускается

Многие новички, которые пытаются настроить свой домашний веб-сервер на основе Apache часто сталкиваются с ошибкой, что Apache не запускается. Благо сейчас в Ubuntu веб-сервер будет правильно работать по умолчанию и запустится, если вы не будете менять настройки, но раньше и в других дистрибутивах приходилось настраивать различные параметры и возникали ошибки.

В этой небольшой статье мы рассмотрим почему Apache не работает, что может стать причиной этой проблемы и как ее решить. Инструкция подойдет не только для Ubuntu, но и для других Linux дистрибутивов.


Содержание статьи

Почему не запускается Apache?

Вы можете столкнуться с такой проблемой по разным причинам, давайте сначала рассмотрим основные из них, чтобы вы знали что дальше делать:

  • Ошибка в конфигурационном файле - вы меняли конфигурацию и настроили что-то неправильно из-за этого программа не может запустится;
  • Права доступа - у программы нет прав доступа к каким-то важным для нее файлам, например, файлам логов, модулей или конфигурационным файлам;
  • Не запускается служба apache при загрузке, но при запуске из консоли все работает - проблема в том, что на момент запуска загружены еще не все необходимые службы;
  • Неверно указанно доменное имя - такая ошибка довольно часто встречается на локальных компьютерах;

А теперь рассмотрим более подробно почему так происходит и как решить проблему.

Как решить проблему с Apache?

Самое первое что вам нужно сделать в любом случае, если что-то не работает - это смотреть логи и информацию об ошибках. Только там вы сможете точно узнать что произошло. Самый простой способ это сделать, воспользоваться подсказкой systemd, которую она выдает при ошибке запуска:

See "systemctl status apache2.service" and "journalctl -xe" for details

То есть нам нужно выполнить systemctl status apache2.service или journalctl -xe чтобы получить больше сведений. Выполните сначала первую команду:

systemctl status apache2.service

Мы сразу же видим причину проблемы - ошибка в конфигурационном файле, в директиве Listen, а теперь пробуем другую команду:

journalctl -xe

Только ее нужно выполнять сразу же, как была выполнена попытка перезапуска apache, потому что скоро буфер лога будет затерт и вы там ничего не увидите. Но здесь сообщается то же сообщение об ошибке в конфигурационном файле, даже видно строку - 54. Еще можно посмотреть error.log, но туда сообщения пишутся не всегда:

cat /var/log/apache2/error.log

 

Дальше вы можете проверить конфигурационный файл на корректность с помощью такой команды:

apache2ctl -t

Тут будут показаны даже предупреждения, которые не влияют на работу сервиса. Все серьезные ошибки нужно исправить если таковые имеются, возможно именно они препятствуют запуску.

Следующая важная проблема - это права доступа. Если Apache запускается от имени пользователя www-data, то у этого пользователя должен быть доступ на чтение к папке где лежат документы веб-сайта, а также ко всем папкам выше нее, также должен быть доступ на чтение и запись для логов и конфигурационных файлов. Проверить права можно с помощью команды namei, это аналог ls, который отображает полное дерево прав:

namei -l /var/www/public_html/

Таким же образом проверяем папку с логами:

namei -l /var/log/apache2/

 

Как видите, у меня папка /var/www/public_html принадлежит пользователю root, но на папку public_html установлены права чтения и записи для всех пользователей. Поэтому проблем нет, а на папку с логами в качестве группы установлена adm, в эту группу входит пользователь www-data, так что тут тоже проблем нет. Если у вас что-то отличается и вы видите что прав недостаточно, то либо измените владельца папки с файлами веб-сайтов на www-data, либо дайте больше разрешений:

chown -R www-data /var/www/public_html/

Также, если в вашей системе включен SELinux, то вы можете его отключить на время, чтобы понять не в нем ли проблема:

setenforce 0

Другой момент, который может вызвать ошибку, это если на порту, который вы хотите использовать для веб-сервера уже запущен какой-то процесс, например, nginx или lighttpd, в таком случае, его нужно остановить:

sudo systemctl stop nginx
sudo systemctl stop lighttpd

Или вы можете попытаться изменить порт на другой, для этого откройте конфигурационный файл веб-сервера и найдите там строку Listen:

Listen 80

Если такой строки еще нет, то вы можете ее создать. Далее просто измените номер порта с 80 на любой удобный, например, 8080

Listen 8080

Дальше про ошибку старта при загрузке. Такая ошибка случалась в версиях ниже 2.2.4, если вы используете эту или более новую версию, то эта проблема вам не страшна. Она была вызвана тем, что Apache с SSL не хотел запускаться без папки /var/run/apache2, которой не было на момент загрузки. Самый простой способ решить проблему - отключить модуль ssl:

a2dismod ssl

Второй способ более сложный - добавьте в конфигурационный файл /etc/init.d/apache2 такую строку:

[ -d /var/run/apache2 ] || mkdir /var/run/apache2

Последняя проблема, о которой мы говорили - это когда неверно указанно имя сервера, на котором запускается Apache. Этой ошибке тоже были подвержены только ранние версии программы. Тогда при попытке запуска программа выдавала сообщение:

Failed to resolve server name for localhost

И дальше не запускалась. Чтобы решить эту проблему нужно было либо создавать виртуальные хосты, либо прописать в основном конфигурационном файле директиву ServerName, в которой будет указанно имя этого компьютера:

ServerName sergiy-pc

А также ассоциировать это имя с localhost в файле hosts:

sudo vi /etc/hosts

sergiy-pc localhost

Дальше было достаточно перезапустить Apache и все начинало работать.

Выводы

В этой статье мы рассмотрели несколько причин почему не запускается Apache и примеров их решения. Причин может быть множество, но мы разобрали только самые главные, которые встречаются наиболее часто. Надеюсь, эта информация была для вас полезной, если у вас остались вопросы, спрашивайте в комментариях! А для тех кого интересует еще один способ решения проблемы xampp apache не запускается для Windows есть видео:

6 комментариев к “Почему Apache не запускается”

  1. хех, вспомнилось, как то прикупил дешевый VPS, выбрал предустановленный дистр, зашел по ssh, обновился, увидел что влепило мне Апач по умолчанию, проверил в браузере - таки да, выдает стартовую апача, грохнул апач, установил nginx, захожу проверить - всеравно апач висит, чищу кэш браузера, проверяю - опять апач, лезу на сервак, проверяю запущен ли nginx служба, ищу по всему серверу упоминания апача, удаляю недобитков, пропущенных apt, ребучу навсякий случай, проверяю - апач висит.
    Начинается легкая истерика.
    И только немного погодя, до меня доходит проверить `/var/www/` (не помню как там по-дефолту путь указан) и оказывается что апач влепил свою страничку, а nginx услужливо не стал ничего менять.

    Ответить
  2. Спасибо! Инструкция помогла.
    А по поводу комментария выше «Почему я использую Апач в 2017-ом году».
    Потому что есть наследие старого кода и старых технологий, которые приходится поддерживать.

    Ответить
  3. Не могу найти решение
    Проблема в следующем. стоит Apache c SSL на Centos, apache не запускается автоматически при запуске железа, так как требуется вводить пароль от сертификата, если есть решение, то прошу подсказать, заранее Спасибо!

    Ответить
  4. У меня чуть другая проблема, он не желает стартовать автоматически, в Docker. Вручную, все хорошо, стартует. Правда, с предупреждением, но я так понимаю оно ни на что не повлияет:
    AH00548: NameVirtualHost has no effect and will be removed in the next release /etc/apache2/ports.conf:
    И меня явно это не страивает, мне нужно запустить и чтобы сайт уже крутился, а не идти в консоль и запускать руками. Не сталкивались случайно?

    Ответить

Оставьте комментарий