Установка и настройка Apache на Ubuntu 22.04 LTS и Debian 12

Установка и настройка Apache на Ubuntu 22.04 LTS и Debian 12

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

Apache logo

Подготовка системы

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

Debian logo

Перед установкой 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_securityWAF-фильтр для защиты от атак (например, SQL-инъекций)
mod_headersУправление HTTP-заголовками
mod_cacheКеширование контента для ускорения работы
mod_deflateСжатие данных (gzip)
Ключевые модули Apache и их назначение

В 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-сертификатами и оптимизировали базовые параметры производительности.

Читайте в блоге:

Loading spinner
0 Комментарий
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии

VPN на VPS-сервере

Узнайте, как создать собственный VPN на VPS-сервере для защиты ваших конфиденциальных данных!

Что будем искать? Например,VPS-сервер

Мы в социальных сетях