Установка Apache на Debian 13, 12, 11: подробное руководство

Apache HTTP Server (httpd) — это один из самых популярных веб-серверов в мире. Он используется для хостинга сайтов, приложений и как reverse-прокси. В Debian Apache устанавливается из пакета apache2 (не httpd, как в Red Hat). Главные сложности для новичка: правильно настроить UFW (сначала разрешить SSH, иначе потеряете доступ), создать виртуальный хост (аналог server block в Nginx), а также разобраться с разными названиями профилей UFW для разных версий Debian (Apache Full на Debian 13, WWW Full на Debian 12/11). Для HTTPS используется Certbot.

💡 В этом руководстве вы установите Apache на Debian, настроите UFW, создадите виртуальный хост, получите SSL-сертификат Let’s Encrypt, научитесь управлять сервисом и решать типичные проблемы.

В этой статье вы узнаете:

  • Как установить Apache на Debian
  • Как настроить UFW для HTTP и HTTPS (с учётом версии Debian)
  • Как создать виртуальный хост
  • Как получить SSL-сертификат Let’s Encrypt
  • Как управлять сервисом и мониторить состояние
  • Как решить типичные проблемы: порт занят, 403 Forbidden, ошибки конфигурации

Для кого: администраторы веб-серверов, разработчики, а также все, кто хочет поднять веб-сайт на Apache на Debian 11, 12 или 13.

Оглавление

1. 🔧 Предварительные требования

Перед установкой убедитесь, что:

  • У вас установлена Debian 11, 12 или 13
  • Подключение к интернету стабильно
  • У вас есть права sudo
  • Порт 80 (HTTP) и 443 (HTTPS) свободны (если вы планируете использовать веб-сервер)

⚠️ ВАЖНО: Проверьте права sudo перед установкой

Если вы не уверены, есть ли у вашего пользователя права администратора, выполните в терминале:

sudo whoami

Что делает: sudo выполняет команду от имени суперпользователя, whoami показывает имя текущего пользователя.

Зачем: Эта команда проверяет, есть ли у вас права sudo. Без них вы не сможете устанавливать пакеты.

✅ Если выводит root — всё в порядке, можете продолжать.

❌ Если выводит is not in the sudoers file — сначала пройдите наше руководство по настройке sudo.

1.1 Обновление системы

Перед установкой всегда обновляйте список пакетов:

sudo apt update && sudo apt upgrade -y

Что делает:

  • sudo — права суперпользователя
  • apt update — обновляет список доступных пакетов из репозиториев
  • && — выполняет следующую команду только если предыдущая успешна
  • apt upgrade -y — обновляет все установленные пакеты до последних версий

Зачем: Это стандартная práctica безопасности перед установкой нового ПО.

2. 📦 Установка Apache

2.1 Установка пакета

sudo apt install apache2 -y

Что делает: Устанавливает Apache2 из официальных репозиториев Debian.

2.2 Проверка версии

sudo apache2ctl -v

Что делает: Показывает установленную версию Apache. sudo нужен, потому что apache2ctl находится в /usr/sbin.

Ожидаемый вывод в терминале (Debian 13):

Server version: Apache/2.4.66 (Debian)

Какие версии в разных Debian (актуальные на момент написания):

Версия DebianКодовое имяВерсия Apache
Debian 13 (Trixie)trixie2.4.66
Debian 12 (Bookworm)bookworm2.4.66
Debian 11 (Bullseye)bullseye2.4.66

2.3 Проверка статуса сервиса и слушателя порта

Проверка статуса сервиса:

systemctl status apache2 --no-pager

Ожидаемый вывод в терминале (сокращённо):

● apache2.service - The Apache HTTP Server
     Loaded: loaded (/usr/lib/systemd/system/apache2.service; enabled)
     Active: active (running)

Важно: Имя сервиса — apache2, не httpd.

Проверка, что Apache слушает порт 80:

sudo ss -ltnp 'sport = :80'

Ожидаемый вывод:

LISTEN 0      511          0.0.0.0:80        0.0.0.0:*    users:(("apache2",pid=1234,fd=4))

3. 🔥 Настройка UFW (фаервол)

⚠️ Важно: Если вы настраиваете сервер удалённо (по SSH), сначала разрешите SSH, иначе потеряете доступ.

3.1 Разрешить SSH

sudo ufw allow ssh

3.2 Проверка доступных профилей UFW

Перед открытием портов посмотрите, какие профили доступны:

sudo ufw app list | grep -E 'Apache|WWW'

Ожидаемый вывод (Debian 13):

Apache
Apache Full
Apache Secure

Ожидаемый вывод (Debian 12/11):

WWW
WWW Cache
WWW Full
WWW Secure

3.3 Включить UFW

sudo ufw enable

3.4 Открыть порты HTTP и HTTPS

Для Debian 13 (Trixie):

sudo ufw allow 'Apache Full'

Для Debian 12 (Bookworm) и Debian 11 (Bullseye):

sudo ufw allow 'WWW Full'

Что делают эти профили: Открывают оба порта — 80 (HTTP) и 443 (HTTPS).

Если вы хотите открыть только HTTP (порт 80):

  • Debian 13: sudo ufw allow 'Apache'
  • Debian 12/11: sudo ufw allow 'WWW'

3.5 Проверка правил

sudo ufw status

Ожидаемый вывод (Debian 13):

Status: active

To                         Action      From
--                         ------      ----
22/tcp                     ALLOW       Anywhere
Apache Full                ALLOW       Anywhere

4. 📝 Создание виртуального хоста (Virtual Host)

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

4.1 Создание корневой директории сайта

sudo mkdir -p /var/www/example.com/html

4.2 Назначение прав

sudo chown -R $USER:$USER /var/www/example.com
sudo chmod -R 755 /var/www/example.com

4.3 Создание тестовой страницы

nano /var/www/example.com/html/index.html

Добавьте:

<html>
    <head>
        <title>Welcome to example.com</title>
    </head>
    <body>
        <h1>Success! The example.com virtual host is working!</h1>
    </body>
</html>

4.4 Создание конфигурации виртуального хоста

sudo nano /etc/apache2/sites-available/example.com.conf

Добавьте:

<VirtualHost *:80>
    ServerAdmin webmaster@example.com
    ServerName example.com
    ServerAlias www.example.com
    DocumentRoot /var/www/example.com/html
    ErrorLog ${APACHE_LOG_DIR}/example.com-error.log
    CustomLog ${APACHE_LOG_DIR}/example.com-access.log combined
</VirtualHost>

4.5 Активация виртуального хоста

sudo a2dissite 000-default.conf
sudo a2ensite example.com.conf

Что делает: Отключает стандартный сайт по умолчанию и включает ваш.

4.6 Проверка конфигурации

sudo apache2ctl configtest

Ожидаемый вывод: Syntax OK

4.7 Перезагрузка Apache

sudo systemctl reload apache2

5. 🔐 SSL-сертификат Let’s Encrypt (HTTPS)

5.1 Установка Certbot и плагина для Apache

sudo apt install python3-certbot-apache -y

5.2 Получение сертификата

sudo certbot --apache --agree-tos --redirect --email admin@example.com -d example.com -d www.example.com

Что делает: Получает сертификат, настраивает HTTPS и редирект с HTTP.

5.3 Проверка автоматического обновления

sudo systemctl status certbot.timer

6. 📊 Мониторинг Apache (опционально)

6.1 Включение модуля статуса

Модуль mod_status показывает live-информацию о работе сервера.

sudo a2enmod status
sudo systemctl reload apache2

6.2 Доступ к статусу

По умолчанию доступ к /server-status разрешён только с локального хоста. Откройте в браузере:

http://your_server_ip/server-status

6.3 Просмотр уникальных IP-адресов из логов

sudo awk '{print $1}' /var/log/apache2/access.log | sort | uniq | head -20

6.4 Поиск конкретных ошибок в логах

sudo grep "404" /var/log/apache2/error.log
sudo grep "403" /var/log/apache2/error.log

7. 🛠️ Управление Apache

КомандаЧто делает
sudo systemctl reload apache2Перезагружает конфигурацию без потери
соединений (после изменения конфигов)
sudo systemctl restart apache2Полностью перезапускает сервер
(после обновления модулей)
sudo systemctl start apache2Запускает сервер
sudo systemctl stop apache2Останавливает сервер
systemctl status apache2Показывает статус сервера
sudo apache2ctl configtestПроверяет конфигурацию на синтаксические
ошибки
sudo tail -f /var/log/apache2/error.logПросмотр логов ошибок в реальном времени

8. ⚠️ Решение типичных проблем

8.1 Ошибка: Address already in use (порт 80 или 443 занят)

Симптом: Apache не запускается, systemctl status apache2 показывает failed.

Причина: Другой веб-сервер (например, Nginx) уже слушает порт 80 или 443.

Решение: Остановите конфликтующий сервис:

sudo systemctl stop nginx
sudo systemctl start apache2

8.2 Ошибка: 403 Forbidden

Симптом: При открытии сайта возвращается 403 Forbidden.

Причина: Неправильные права на директорию с сайтом.

Решение: Проверьте права:

ls -la /var/www/example.com/html/

Директории должны иметь права 755, файлы — 644. Исправьте:

sudo chmod 755 /var/www/example.com /var/www/example.com/html
sudo chmod 644 /var/www/example.com/html/index.html

8.3 Ошибка: apache2ctl configtest показывает предупреждение AH00558

Симптом: sudo apache2ctl configtest выводит:

AH00558: apache2: Could not reliably determine the server's fully qualified domain name
Syntax OK

Причина: Не указан глобальный ServerName.

Решение: Добавьте конфигурацию:

echo 'ServerName example.com' | sudo tee /etc/apache2/conf-available/servername.conf
sudo a2enconf servername
sudo systemctl reload apache2

8.4 Ошибка: виртуальный хост показывает страницу по умолчанию

Симптом: Вместо вашего сайта открывается страница «Apache2 Debian Default Page».

Причина: Виртуальный хост не активирован, или стандартный сайт не отключён.

Решение: Убедитесь, что стандартный сайт отключён:

ls /etc/apache2/sites-enabled/

Не должно быть 000-default.conf. Если есть — отключите:

sudo a2dissite 000-default.conf
sudo systemctl reload apache2

9. ❌ Удаление Apache

9.1 Удаление пакетов

sudo systemctl stop apache2
sudo apt remove --purge apache2 -y
sudo apt autoremove -y

9.2 Удаление файлов конфигурации, сайтов и servername.conf

sudo rm -rf /var/www/html /var/www/example.com
sudo rm -f /etc/apache2/sites-available/example.com.conf
sudo rm -f /etc/apache2/sites-enabled/example.com.conf
sudo rm -f /etc/apache2/conf-available/servername.conf
sudo rm -f /etc/apache2/conf-enabled/servername.conf

10. 📝 Чек-лист: всё готово к работе

  • [ ] Система обновлена (sudo apt update && sudo apt upgrade -y)
  • [ ] Apache установлен (sudo apache2ctl -v показывает версию)
  • [ ] sudo ss -ltnp 'sport = :80' показывает, что Apache слушает порт 80
  • [ ] UFW настроен и разрешает Apache Full (или WWW Full)
  • [ ] systemctl status apache2 показывает active (running)
  • [ ] Приветственная страница Debian открывается по IP или через localhost
  • [ ] Создан виртуальный хост и он работает
  • [ ] SSL-сертификат получен и сайт открывается по HTTPS

Заключение

Вы установили Apache на Debian. Теперь у вас есть работающий веб-сервер. Вы можете размещать статические сайты, настраивать виртуальные хосты для нескольких доменов и защищать их с помощью SSL-сертификатов Let’s Encrypt. Главное, что нужно запомнить: при настройке UFW сначала разрешите SSH, иначе потеряете доступ. Для Debian 13 используйте профиль Apache Full, для Debian 12/11 — WWW Full. Всегда проверяйте конфигурацию через apache2ctl configtest перед перезагрузкой. Для мониторинга используйте mod_status и анализ логов через grep.

Что дальше:

  • Настройте PHP для динамических сайтов
  • Установите MariaDB или MySQL
  • Настройте WordPress или другой CMS
  • Защитите сервер с помощью Fail2Ban
  • Для увеличения производительности рассмотрите установку Nginx как reverse-прокси перед Apache

Связанные статьи: