Запуск веб-сервера — это не просто установка Apache. Это настройка под задачи и нагрузку, оптимизация и защита данных. В нашей статье вы найдёте полную инструкцию по установке Apache на Ubuntu 22.04 и Debian 12: как подготовить систему, установить веб-сервер, развернуть тестовый сайт, подключить HTTPS и повысить производительность.

Подготовка системы
Apache — один из популярнейших веб-серверов на протяжении почти трёх десятков лет. В статье рассмотрена установка Apache на Ubuntu 22.04 и Debian 12 и базовая настройка с акцентом на оптимизацию производительности. Вы узнаете, как настроить виртуальные хосты, активировать SSL-сертификаты и управлять модулями.

Перед установкой Apache на Ubuntu 22.04 LTS и Debian 12 важно обновить ПО и настроить права доступа. Обе операционные системы используют одинаковые команды для работы с пакетами, но в настройке прав доступа есть нюансы.
Обновление пакетов
Чтобы синхронизировать репозитории и обновить установленные пакеты до актуальных версий, выполните команду:
sudo apt update && sudo apt full-upgrade -y
Команда full-upgrade заменяет apt upgrade, чтобы были учтены и обновлены зависимости.
Если в Debian было обновлено ядро, перезагрузите сервер, чтобы изменения вступили в силу:
sudo systemctl reboot
В Ubuntu 22.04 перезагрузка требуется реже, так как обновления ядра применяются без нее (за исключением критических изменений).
Настройка прав sudo
Для установки веб-сервера нужны повышенные привилегии. В Debian 12 при минимальной установке пользователь, созданный по умолчанию, не имеет прав sudo. Если при выполнении команд возникает ошибка «sudo: command not found», выполните следующее:
Войдите в учётную запись суперпользователя:
su -
Установите sudo и добавьте нужного пользователя в группу:
apt install sudo -y
usermod -aG sudo ваш_пользователь
Перезагрузите систему, чтобы применить изменения (reboot).
В Ubuntu 22.04 пользователь, созданный при установке, уже имеет права sudo. Если вы добавили нового пользователя и работаете от его имени, включите его в группу:
sudo usermod -aG sudo новый_пользователь
Проверка состояния системы
Перед установкой Apache просмотрите статус системы — она должна работать без ошибок:
sudo systemctl status
Проверьте свободное пространство на диске:
df -h
В директории /var (где хранятся логи и сайты) должно быть достаточно места.
Убедитесь, что нет конфликтов с другими веб-серверами (например, Nginx):
sudo ss -tulpn | grep ':80\|:443'
Если порты 80 или 443 заняты, остановите службу-конкурент.
Установка базовых инструментов командной строки (только для Debian 12)
В Debian 12 при минимальной установке могут отсутствовать базовые утилиты, которые нам понадобятся (например, curl).
Чтобы установить их, выполните:
sudo apt install curl wget -y
Теперь система готова к установке веб-сервера.
Установка Apache
Установка Apache на Ubuntu 22.04 LTS и Debian 12 выполняется через пакетный менеджер apt, но есть нюансы в версиях пакетов (по умолчанию они разные) и стартовых настройках.
Установка Apache с apt
Для обоих дистрибутивов команда идентична:
sudo apt install apache2 -y
Флаг -y автоматически подтверждает установку необходимых зависимостей.
Проверка работы службы
Apache запустится сразу по окончании процесса. Убедитесь, что служба активна:
sudo systemctl status apache2
Если служба отключена, сделайте это вручную:
sudo systemctl start apache2
Затем настройте автоматическую загрузку:
sudo systemctl enable apache2
Настройка файрвола
Разрешите HTTP/HTTPS трафик через файрвол:
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw reload
В Ubuntu 22.04 ufw включен в базовую систему, но в Debian 12 файрвола может не быть. В этом случае поставьте его:
sudo apt install ufw -y
sudo ufw enable
Тестовая страница Apache
В системе с графическим интерфейсом пройдите в браузере по IP-адресу сервера. Если установка прошла успешно, то браузер должен отобразить страницу Apache по умолчанию:
- Ubuntu — «Apache2 Ubuntu Default Page»;
- Debian — «Apache2 Debian Default Page».
IP-адрес на локальной машине: http://localhost или 127.0.0.1.
Если нужно узнать внешний IP удалённого сервера, подойдут команды:
curl -4 icanhazip.com
Или:
curl ifconfig.me
Внутренний IP (через терминал):
hostname -I
В выводе будут адреса, разделённые пробелами, — использовать можно любой из них.
Проверка конфигурации
На этом этапе убедимся, что Apache корректно обрабатывает запросы.
Посмотрите версию Apache:
apache2 -v
Пример вывода:
Server version: Apache/2.4.52 (Ubuntu)
Также проверьте синтаксис конфигурационных файлов:
sudo apache2ctl configtest
Ожидаемый результат: «Syntax OK».
Что делать, если страница не открывается
Проверьте статус Apache:
sudo systemctl status apache2
Убедитесь, что порт 80 свободен:
sudo ss -tulpn | grep ':80'
Если порт занят (например, Nginx), отключите конкурирующую службу:
sudo systemctl stop nginx
sudo systemctl disable nginx
После успешной установки переходите к созданию виртуальных хостов и получению SSL-сертификата.
Виртуальные хосты
Настройка Apache на Ubuntu и Debian включает работу с виртуальными хостами, модулями и правами доступа. Структура конфигурации идентична, но есть нюансы в активации модулей и параметрах по умолчанию.
Структура каталогов Apache
Путь к конфигурационным файлам одинаков для обоих дистрибутивов. Конфиги лежат здесь:
- /etc/apache2/ — корневая директория;
- /etc/apache2/sites-available/ — конфиги виртуальных хостов (по одному на сайт);
- /etc/apache2/sites-enabled/ — симлинки на активные конфигурации.
Логи находятся здесь: /var/log/apache2/access.log и error.log.
Дефолтная директория сайтов — /var/www/html/ (тестовая страница). Рекомендуем создавать для доменов отдельные директории (на примере adminvps_test.ru):
sudo mkdir -p /var/www/adminvps_test.ru/public_html
В результате будут созданы и отсутствующие родительские каталоги.
Создание виртуального хоста
Создайте файл конфигурации и откройте его для редактирования:
sudo nano /etc/apache2/sites-available/adminvps_test.ru.conf
Скопируйте в него содержимое из дефолтного конфига 000-default.conf или из нашего примера. Нужно указать актуальный e-mail адрес для связи с администратором в случае возникновения ошибок Apache, доменное имя с префиксом www и без, а также путь к папке, в которой размещены файлы нашего сайта:
<VirtualHost *:80>
ServerAdmin admin@adminvps_test.ru
ServerName adminvps_test.ru
ServerAlias www.adminvps_test.ru
DocumentRoot /var/www/adminvps_test.ru/public_html
ErrorLog ${APACHE_LOG_DIR}/adminvps_test.ru_error.log
CustomLog ${APACHE_LOG_DIR}/adminvps_test.ru_access.log combined
<Directory /var/www/adminvps_test.ru/public_html>
Options -Indexes +FollowSymLinks
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
В данном примере:
- 000-default.conf не содержит директивы ServerName, поэтому если вы копируете его содержимое, то добавьте эту строку вручную.
- Директива AllowOverride All разрешает использование файла дополнительной настройки .htaccess.
Затем последовательно отключите дефолтный конфиг, включите новый и проверьте синтаксис:
sudo a2dissite 000-default.conf
sudo a2ensite adminvps_test.ru.conf
sudo apache2ctl configtest # Должно появиться сообщение: Syntax OK
Перезагрузите Apache с новой конфигурацией (изменения будут применены без остановки службы):
sudo systemctl reload apache2
Настройка прав доступа
Установите владельца директории сайта. Изначально в Ubuntu и Debian веб-сервер использует учётную запись www-data, входящую в одноимённую группу. Чтобы назначить www-data владельцем папки и дать ему права рекурсивно:
sudo chown -R www-data:www-data /var/www/adminvps_test.ru/public_html
sudo chmod -R 755 /var/www/adminvps_test.ru
Также можно изменить учётную запись, из-под которой будет запускаться Apache. В терминале:
sudo nano /etc/apache2/envvars
Затем поменяйте значение в строках:
export APACHE_RUN_USER=<user>
export APACHE_RUN_GROUP=<group>
Не забудьте, что этот новый пользователь должен иметь соответствующие права на доступ к папкам сайта.
Проверка работы виртуального хоста
Теперь создадим тестовую страницу сайта — файл index.html:
echo "Привет от adminvps_test.ru!" | sudo tee /var/www/adminvps_test.ru/public_html/index.html
Здесь:
- echo — выводит текст "Привет от adminvps_test.ru!";
- | sudo tee — направляет вывод в файл index.html с правами суперпользователя;
- /var/www/adminvps_test.ru/public_html/ — путь, указанный в DocumentRoot вашего виртуального хоста.
Проверьте, что файл создан:
ls -l /var/www/adminvps_test.ru/public_html/
Вывод должен быть таким:
-rw-r--r-- 1 root root <дата> 1 <время> index.html
После этого откройте браузер и перейдите на сайт. Отобразится страница с приветствием. Если браузер выдаёт ошибку:
- 403 Forbidden — проверьте разрешения на доступ к директории public_html и настройки в <Directory> в конфиге;
- 404 Not Found — возможно, что index.html не существует или путь в DocumentRoot неправильный.
Второй способ проверки — через curl. Выполните в терминале:
curl http://adminvps_test.ru
Команда должна вывести приветствие. Если возникает ошибка Could not resolve host, это означает, что домен не привязан к IP-адресу вашего сервера.
Если DNS не настроен (домен не зарегистрирован), добавьте запись в конец файла /etc/hosts на вашей локальной машине для проверки виртуального хоста:
ваш_IP_сервера adminvps_test.ru www.adminvps_test.ru
После этого обновите страницу в браузере или повторите проверку с curl.
Рассмотрим, что делать, если DNS настроен, но сайт не открывается.
- Проверьте, что виртуальный хост активирован:
sudo apache2ctl -S
В списке виртуальных хостов должен быть ваш.
- Прослушивает ли Apache Port 80:
sudo ss -tulpn | grep ':80'
Вывод должен содержать apache2 рядом с 80-м портом.
- Перезагрузите службу.
Настройка SSL через Let’s Encrypt
Для защиты сервера получите SSL-сертификаты.
Установка Certbot
Для Ubuntu 22.04 (через Snap):
sudo snap install --classic certbot
sudo ln -s /snap/bin/certbot /usr/bin/certbot
Для Debian 12 (через apt):
sudo apt install certbot python3-certbot-apache -y
Получение сертификата
sudo certbot --apache -d adminvps_test.ru -d www.adminvps_test.ru
Certbot автоматически обновит конфигурацию Apache и настроит перенаправление с HTTP на HTTPS.
Автообновление сертификатов
Проверьте, что таймер работает:
sudo systemctl status certbot.timer
Вручную обновите сертификаты:
sudo certbot renew --dry-run
Работа с модулями Apache
Модули расширяют функционал сервера: от переписывания URL до защиты от атак. В Ubuntu 22.04 и Debian 12 управление модулями выполняется через утилиты a2enmod (включение) и a2dismod (отключение).
Управление модулями
Просмотр доступных расширений:
ls /etc/apache2/mods-available/
Активация модуля (например, mod_rewrite):
sudo a2enmod rewrite
Деактивация (например, mod_autoindex):
sudo a2dismod autoindex
После каждого изменения перезагружайте веб-сервер командой restart.
Важные модули
Модуль | Назначение |
mod_ssl | Поддержка HTTPS (обязателен для SSL) |
mod_rewrite | Перезапись URL, редиректы |
mod_security | WAF-фильтр для защиты от атак (например, SQL-инъекций) |
mod_headers | Управление HTTP-заголовками |
mod_cache | Кеширование контента для ускорения работы |
mod_deflate | Сжатие данных (gzip) |
В Debian 12 модули mod_ssl и mod_rewrite часто отключены по умолчанию. В Ubuntu 22.04 mod_ssl обычно активирован, но mod_rewrite может потребовать ручного включения.
Настройка модуля на примере mod_rewrite
Включите модуль, если он отключен:
sudo a2enmod rewrite
В конфиге виртуального хоста добавьте правила в секцию <Directory>:
<Directory /var/www/adminvps_test.ru/public_html>
Options -Indexes +FollowSymLinks
AllowOverride All # Можно использовать .htaccess
Require all granted
</Directory>
Перезапустите Apache:
sudo systemctl restart apache2
Оптимизация производительности и безопасность
KeepAlive-соединение
Благодаря настройке KeepAlive уменьшаются задержки при загрузке страниц за счёт повторного использования TCP-соединений.
Укажите в файле /etc/apache2/apache2.conf:
KeepAlive On # Включает поддержку постоянных соединений
MaxKeepAliveRequests 150 # Максимум запросов за одно соединение
KeepAliveTimeout 5 # Время ожидания нового запроса (указывается в секундах)
Где:
- MaxKeepAliveRequests — для сайтов с высокой нагрузкой рекомендуется значение 100. Если используется много мелких ресурсов (CSS, JS, иконки), его можно увеличить до 150–200.
- KeepAliveTimeout — значение 5 подходит для большинства случаев. Если клиенты медленные (мобильные устройства), можно увеличить до 10-15.
- Для статических сайтов с минимальным трафиком можно отключить KeepAlive (Off), чтобы освободить память.
Текущие настройки можно просмотреть с помощью:
grep -i keepalive /etc/apache2/apache2.conf
MPM Prefork Module
Модуль MPM Prefork оптимизирует использование памяти и обработку параллельных запросов.
Установите и активируйте модуль, затем откройте /etc/apache2/mods-available/mpm_prefork.conf для редактирования:
<IfModule mpm_prefork_module>
StartServers 2 # Количество процессов при старте службы
MinSpareServers 2 # Минимум свободных процессов
MaxSpareServers 8 # Максимум свободных процессов
MaxRequestWorkers 50 # Максимум одновременных запросов
MaxConnectionsPerChild 1000 # Максимум запросов на 1 процесс (для избегания утечек памяти)
</IfModule>
Модуль настраивается в зависимости от доступных ресурсов.
Рекомендации по расчёту параметров:
- MaxRequestWorkers — зависит от доступной памяти. Один процесс Apache занимает от 50 до 100 МБ. Формула для расчёта: MaxRequestWorkers = (общая память сервера - 1 ГБ) / средний размер процесса. Например, для сервера с 4 ГБ RAM это (4096 - 1024) / 70 ≈ 43. То есть сервер сможет обрабатывать около 40-45 процессов.
- MaxConnectionsPerChild — значение 1000-3000 предотвращает утечки памяти в долгоживущих процессах.
Не забывайте перезапускать Apache после внесения изменений.
Заключение
Теперь ваш веб-сервер готов к работе. Вы установили Apache на Ubuntu/Debian, настроили виртуальные хосты, защитили сайты SSL-сертификатами и оптимизировали базовые параметры производительности.
Читайте в блоге:
- Пересылка журналов Apache в OpenSearch через Logstash
- Как защитить Apache с помощью Let's Encrypt в Ubuntu 20.04 и 22.04
- Что такое Apache Tomcat: простое руководство для начинающих