Установка Apache на Ubuntu — вопрос трёх команд, но прежде стоит понять, зачем выбирать именно его, когда вокруг все ставят Nginx. Спор «Apache или Nginx» старше многих читателей этой статьи, и правильный ответ — «зависит от задачи». Apache незаменим там, где нужны файлы .htaccess, переносимость конфигурации со старого виртуального хостинга и богатая экосистема модулей. В этом руководстве мы установим Apache 2.4 на Ubuntu 24.04 LTS, настроим виртуальный хост, включим mod_rewrite — и честно разберём, в каких сценариях Apache выигрывает у Nginx, а в каких проигрывает.
Apache или Nginx: в чём разница архитектур
Apache исторически работает по модели «обработчик на соединение»: модуль MPM выделяет процесс или поток под каждый запрос. Nginx использует событийную модель: несколько worker-процессов обслуживают тысячи соединений одновременно. Отсюда практические следствия:
| Критерий | Apache | Nginx |
|---|---|---|
| Отдача статики под высокой нагрузкой | Хорошо | Отлично |
| Расход RAM на тысячи соединений | Выше | Минимальный |
| Конфигурация на уровне каталога (.htaccess) | Да | Нет |
| Динамическая подгрузка модулей | Да, a2enmod | Только на этапе сборки |
| Совместимость с инструкциями «из коробки» для CMS | Максимальная | Часто нужен перевод правил |
| Роль обратного прокси | Возможна | Основной сценарий |
Важно: начиная с ветки 2.4 у Apache есть MPM event, который сильно сокращает отставание от Nginx по соединениям. В Ubuntu 24.04 он включён по умолчанию, если вы не ставите mod_php.
Когда Apache действительно лучше Nginx
- Переезд со старого виртуального хостинга. Сайт годами жил на shared-хостинге и оброс правилами в
.htaccess— редиректы, защита каталогов, ЧПУ. На Apache всё заработает без переделки; для Nginx правила придётся переписывать вручную. Если вы как раз переносите проект, пригодится инструкция как перенести сайт с хостинга на VPS без простоя. - CMS и «коробочные» продукты, заточенные под Apache. Многие документации, плагины и старые движки предполагают наличие
mod_rewriteи.htaccessпо умолчанию. - Много сайтов с разными требованиями на одном сервере. Каждый владелец каталога может менять поведение своего сайта через
.htaccess, не трогая общую конфигурацию и не имея root-доступа. - Специфические модули. Экосистема Apache огромна: от
mod_securityдо аутентификации через LDAP — многое включается одной командойa2enmod. - Нестандартная логика обработки запросов. Гибкость директив
<Directory>,<Files>,<Location>с наследованием правил иногда проще, чем location-блоки Nginx.
А вот для отдачи тяжёлой статики, работы обратным прокси и выжимания максимума из слабого железа лучше подойдёт Nginx — его установку мы разбирали в статье про установку и базовую настройку Nginx на Ubuntu.
Установка Apache на Ubuntu 24.04
Понадобится VPS с Ubuntu 24.04 и sudo-доступом. Apache с PHP и базой комфортно живёт на тарифе Start от Cheap-Host — 6 vCPU, 8 ГБ RAM, 96 ГБ NVMe за 450 ₽/мес, KVM-виртуализация с полным root: ставьте любые модули без ограничений хостинга.
Шаг 1. Обновляем пакеты и ставим Apache
sudo apt update && sudo apt upgrade -y
sudo apt install apache2 -y
Служба стартует автоматически. Проверяем состояние и версию:
systemctl status apache2
apache2 -v
В Ubuntu 24.04 это Apache 2.4 — актуальная ветка, обновляемая весь срок поддержки LTS.
Шаг 2. Открываем порты в файрволе
Apache, как и Nginx, регистрирует в UFW готовые профили приложений:
sudo ufw allow OpenSSH
sudo ufw allow 'Apache Full'
sudo ufw enable
sudo ufw status
Профиль Apache Full открывает порты 80 и 443. Правило OpenSSH добавляйте первым, иначе после включения файрвола потеряете SSH-доступ.
Шаг 3. Проверяем работу
Откройте http://IP_сервера в браузере — увидите дефолтную страницу «Apache2 Default Page». Или из терминала:
curl -I http://localhost
Ответ HTTP/1.1 200 OK с заголовком Server: Apache означает, что установка Apache прошла успешно.
Настройка виртуального хоста
Виртуальные хосты позволяют держать несколько сайтов на одном сервере. Создадим каталог и конфигурацию для домена (замените example.com на свой; про DNS — в статье как привязать домен к VPS).
sudo mkdir -p /var/www/example.com
sudo chown -R $USER:$USER /var/www/example.com
echo '<h1>Apache works!</h1>' > /var/www/example.com/index.html
sudo nano /etc/apache2/sites-available/example.com.conf
Содержимое конфигурации:
<VirtualHost *:80>
ServerName example.com
ServerAlias www.example.com
ServerAdmin webmaster@example.com
DocumentRoot /var/www/example.com
ErrorLog ${APACHE_LOG_DIR}/example.com-error.log
CustomLog ${APACHE_LOG_DIR}/example.com-access.log combined
</VirtualHost>
Включаем сайт, отключаем дефолтный, проверяем синтаксис и перезагружаем:
sudo a2ensite example.com.conf
sudo a2dissite 000-default.conf
sudo apachectl configtest
sudo systemctl reload apache2
Утилиты a2ensite/a2dissite (и парные a2enmod/a2dismod для модулей) — фирменная особенность Debian/Ubuntu: они управляют симлинками между sites-available и sites-enabled. Команда apachectl configtest должна ответить Syntax OK.
Включаем mod_rewrite и .htaccess
Главный козырь Apache — конфигурация на уровне каталога. Чтобы она заработала, нужно два действия. Первое — включить модуль перезаписи URL:
sudo a2enmod rewrite
sudo systemctl restart apache2
Второе — разрешить переопределение настроек в каталоге сайта. Добавьте в ваш VirtualHost (или в отдельный конфиг) блок:
<Directory /var/www/example.com>
Options -Indexes +FollowSymLinks
AllowOverride All
Require all granted
</Directory>
Директива AllowOverride All разрешает .htaccess, а Options -Indexes заодно отключает листинг каталогов. После правки — снова configtest и reload. Теперь любой файл .htaccess в каталоге сайта применяется мгновенно, без перезагрузки сервера — то, чего в Nginx нет в принципе.
Учтите цену удобства: Apache проверяет наличие .htaccess в каждом каталоге по пути к файлу при каждом запросе. На NVMe-дисках, которые стоят во всех тарифах Cheap-Host, эти лишние обращения к диску почти незаметны, но на нагруженных проектах правила лучше переносить в основной конфиг и ставить AllowOverride None.
Подключение PHP: с PHP-FPM, а не mod_php
Классический libapache2-mod-php заставляет Apache переключиться на MPM prefork — самый прожорливый по памяти режим. Современный способ — PHP-FPM плюс MPM event:
sudo apt install php8.3-fpm -y
sudo a2enmod proxy_fcgi setenvif
sudo a2enconf php8.3-fpm
sudo systemctl reload apache2
Так PHP выполняется отдельным пулом процессов, а Apache остаётся в экономичном событийном режиме. Дальше можно ставить CMS — например, по инструкции установка WordPress на VPS, а для HTTPS выпустить бесплатный сертификат Let's Encrypt — certbot умеет настраивать Apache автоматически.
Шпаргалка по управлению Apache
sudo systemctl reload apache2— применить конфигурацию без разрыва соединений;sudo systemctl restart apache2— полный перезапуск (нужен после включения модулей);sudo apachectl configtest— проверка синтаксиса конфигурации;sudo a2enmod / a2dismod— включить или выключить модуль;sudo a2ensite / a2dissite— включить или выключить сайт;apachectl -M— список загруженных модулей;- логи — в
/var/log/apache2/.
FAQ
Можно ли запустить Apache и Nginx на одном сервере?
Да, частая схема: Nginx на портах 80/443 принимает трафик и отдаёт статику, а Apache слушает 8080 и обрабатывает PHP с .htaccess. Порт Apache меняется в /etc/apache2/ports.conf и в VirtualHost.
Apache медленнее Nginx?
На статике при тысячах одновременных соединений — да. Но со связкой MPM event + PHP-FPM разница для сайта на несколько тысяч посетителей в день практически незаметна: узким местом раньше станут PHP и база данных.
Что такое .htaccess и почему его нет в Nginx?
Это файл с правилами Apache, лежащий прямо в каталоге сайта и применяемый на лету. Nginx сознательно не поддерживает такие файлы ради скорости: его конфигурация читается один раз при старте.
Какая версия Apache в Ubuntu 24.04?
Ветка 2.4 (пакет apache2) — актуальная, с обновлениями безопасности на весь срок поддержки LTS.
Нужен ли мощный VPS для Apache?
Apache требует больше RAM, чем Nginx, особенно в режиме prefork. Для небольшого сайта хватит VPS с 8 ГБ RAM — на Apache, PHP-FPM и MySQL с запасом.
Вывод
Установка Apache на Ubuntu 24.04 сводится к apt install apache2, профилю UFW и одному VirtualHost-файлу. Выбирайте Apache, когда проекту нужны .htaccess, привычная совместимость с CMS и модули по щелчку a2enmod; выбирайте Nginx для статики, прокси и максимальной плотности соединений — а иногда разумно использовать оба вместе. Если для этой задачи вам нужен сервер — у Cheap-Host тариф Start от 450 ₽/мес: 6 vCPU, 8 ГБ RAM, NVMe, полный root на KVM и безлимитный трафик, автодеплой за 45–60 секунд. Тарифы — на cheap-host.onl.