Многие новички, которые пытаются настроить свой домашний веб-сервер на основе Apache часто сталкиваются с ошибкой, что Apache не запускается. Благо сейчас в Ubuntu веб-сервер будет правильно работать по умолчанию и запустится, если вы не будете менять настройки, но раньше и в других дистрибутивах приходилось настраивать различные параметры и возникали ошибки.
В этой небольшой статье мы рассмотрим почему Apache не работает, что может стать причиной этой проблемы и как ее решить. Инструкция подойдет не только для Ubuntu, но и для других Linux дистрибутивов.
Содержание статьи
Почему не запускается Apache?
Вы можете столкнуться с такой проблемой по разным причинам, давайте сначала рассмотрим основные из них, чтобы вы знали что дальше делать:
- Ошибка в конфигурационном файле - вы меняли конфигурацию и настроили что-то неправильно из-за этого программа не может запустится;
- Права доступа - у программы нет прав доступа к каким-то важным для нее файлам, например, файлам логов, модулей или конфигурационным файлам;
- Не запускается служба apache при загрузке, но при запуске из консоли все работает - проблема в том, что на момент запуска загружены еще не все необходимые службы;
- Неверно указанно доменное имя - такая ошибка довольно часто встречается на локальных компьютерах;
А теперь рассмотрим более подробно почему так происходит и как решить проблему.
Как решить проблему с Apache?
Самое первое что вам нужно сделать в любом случае, если что-то не работает - это смотреть логи и информацию об ошибках. Только там вы сможете точно узнать что произошло. Самый простой способ это сделать, воспользоваться подсказкой systemd, которую она выдает при ошибке запуска:
То есть нам нужно выполнить 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
Дальше было достаточно перезапустить Apache и все начинало работать.
Выводы
В этой статье мы рассмотрели несколько причин почему не запускается Apache и примеров их решения. Причин может быть множество, но мы разобрали только самые главные, которые встречаются наиболее часто. Надеюсь, эта информация была для вас полезной, если у вас остались вопросы, спрашивайте в комментариях! А для тех кого интересует еще один способ решения проблемы xampp apache не запускается для Windows есть видео:
Anubis – это максимально легкое open-source решение, созданное специально для защиты небольших веб-ресурсов от бесконечного потока запросов от ботов и AI парсеров. Этот инструмент можно считать "ядерным вариантом", потому что он заставляет ботов выполнять вычисления похожие на майнинг криптовалюты. Но это неплохая альтернатива для тех, кто не может или не хочет использовать Cloudflare. Посмотреть детали








Вопрос изначально задан неверно. Нужно спросить не "Почему Апач не запускается", а "Почему я использую Апач в 2017-ом году"...
хех, вспомнилось, как то прикупил дешевый VPS, выбрал предустановленный дистр, зашел по ssh, обновился, увидел что влепило мне Апач по умолчанию, проверил в браузере - таки да, выдает стартовую апача, грохнул апач, установил nginx, захожу проверить - всеравно апач висит, чищу кэш браузера, проверяю - опять апач, лезу на сервак, проверяю запущен ли nginx служба, ищу по всему серверу упоминания апача, удаляю недобитков, пропущенных apt, ребучу навсякий случай, проверяю - апач висит.
Начинается легкая истерика.
И только немного погодя, до меня доходит проверить `/var/www/` (не помню как там по-дефолту путь указан) и оказывается что апач влепил свою страничку, а nginx услужливо не стал ничего менять.
Спасибо! Инструкция помогла.
А по поводу комментария выше «Почему я использую Апач в 2017-ом году».
Потому что есть наследие старого кода и старых технологий, которые приходится поддерживать.
Спасибо, огромное спасибо просто спасли. Сразу нашла где всё сломала.
Не могу найти решение
Проблема в следующем. стоит Apache c SSL на Centos, apache не запускается автоматически при запуске железа, так как требуется вводить пароль от сертификата, если есть решение, то прошу подсказать, заранее Спасибо!
У меня чуть другая проблема, он не желает стартовать автоматически, в Docker. Вручную, все хорошо, стартует. Правда, с предупреждением, но я так понимаю оно ни на что не повлияет:
AH00548: NameVirtualHost has no effect and will be removed in the next release /etc/apache2/ports.conf:
И меня явно это не страивает, мне нужно запустить и чтобы сайт уже крутился, а не идти в консоль и запускать руками. Не сталкивались случайно?