SystemdDoctor
служба не работает apache порты

Apache: could not bind to address

Сообщение could not bind to address означает, что Apache не смог занять адрес. Чаще всего на машине уже работает другой веб-сервер или второй экземпляр самого Apache.

Вероятные причины

По порядку: сверху то, что встречается чаще.

  1. Порт занят другим веб-сервером

    Установка nginx поверх Apache или наоборот оставляет обе службы в автозапуске. Кто успел, того и порт.

  2. Порт объявлен дважды в конфигурации

    Директива прослушивания попала и в основной файл, и во включённый фрагмент. Apache пытается занять порт второй раз.

  3. Нет прав на привилегированный порт

    Если Apache запускается не от root (редко, но бывает в контейнерах), порты ниже 1024 ему недоступны.

Диагностика

Команды идут в том порядке, в котором их стоит выполнять: каждая следующая проверяет то, что осталось после предыдущей.

Кто занимает веб-порты.

sudo ss -tlnp | grep -E ":(80|443)\s"

Проверка конфигурации: заодно найдёт двойное объявление.

sudo apachectl configtest

Все объявления портов.

sudo grep -rn "^Listen" /etc/apache2/

Решение

Решение своё для каждой причины. Сначала определите, какая из них ваша, — иначе правки наложатся друг на друга.

1. Порт занят другим веб-сервером
Почему происходит
Установка nginx поверх Apache или наоборот оставляет обе службы в автозапуске. Кто успел, того и порт.
Как проверить
Посмотрите владельца порта.
sudo ss -tlnp | grep -E ":(80|443)\s"
Как исправить
Оставьте один веб-сервер, второй отключите полностью, чтобы он не вернулся после перезагрузки.
sudo systemctl disable --now nginx
2. Порт объявлен дважды в конфигурации
Почему происходит
Директива прослушивания попала и в основной файл, и во включённый фрагмент. Apache пытается занять порт второй раз.
Как проверить
Поищите все объявления порта.
sudo grep -rn "^Listen" /etc/apache2/ 2>/dev/null | grep -v "^.*#"
Как исправить
Уберите повторное объявление: обычно достаточно правки ports.conf.
3. Нет прав на привилегированный порт
Почему происходит
Если Apache запускается не от root (редко, но бывает в контейнерах), порты ниже 1024 ему недоступны.
Как проверить
Посмотрите пользователя и возможности службы.
systemctl show apache2 -p User -p AmbientCapabilities
Как исправить
Дайте возможность CAP_NET_BIND_SERVICE или выберите порт выше 1024.

Пример вывода

Порт 80 занят nginx. Пример показательный: он собран на тестовой машине специально для этой страницы, а не взят из чужого журнала.

apachectl[4200]: (98)Address already in use: AH00072: make_sock: could not bind to address [::]:80
apachectl[4200]: no listening sockets available, shutting down
systemd[1]: apache2.service: Control process exited, code=exited, status=1/FAILURE

Связанные ошибки

Где встречается чаще всего

Источники

  • Документация Apache: директива Listen документация программы
    сверено 15 сентября 2026
  • Воспроизведено на тестовой машине, systemd 255 (Ubuntu 24.04)
    Воспроизведено одновременной установкой apache2 и nginx.
    собственная проверка, systemd 255
    сверено 15 сентября 2026