Установка Apache на Ubuntu: когда он лучше Nginx

Сайты и веб-серверы
Установка Apache на Ubuntu: когда он лучше Nginx

Установка Apache на Ubuntu — вопрос трёх команд, но прежде стоит понять, зачем выбирать именно его, когда вокруг все ставят Nginx. Спор «Apache или Nginx» старше многих читателей этой статьи, и правильный ответ — «зависит от задачи». Apache незаменим там, где нужны файлы .htaccess, переносимость конфигурации со старого виртуального хостинга и богатая экосистема модулей. В этом руководстве мы установим Apache 2.4 на Ubuntu 24.04 LTS, настроим виртуальный хост, включим mod_rewrite — и честно разберём, в каких сценариях Apache выигрывает у Nginx, а в каких проигрывает.

Apache или Nginx: в чём разница архитектур

Apache исторически работает по модели «обработчик на соединение»: модуль MPM выделяет процесс или поток под каждый запрос. Nginx использует событийную модель: несколько worker-процессов обслуживают тысячи соединений одновременно. Отсюда практические следствия:

КритерийApacheNginx
Отдача статики под высокой нагрузкойХорошоОтлично
Расход 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.

Читайте также