Установка и базовая настройка Apache на VPS
Apache — проверенный временем веб-сервер с гибкой системой модулей и удобными .htaccess. Ставим его на чистый VPS, настраиваем виртуальные хосты, включаем нужные модули и выпускаем бесплатный HTTPS — с рабочими командами для Ubuntu и Debian.
Содержание
Обсудить статью, задать вопрос или начать новую тему
Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.
Перейти в сообщество →Когда выбирают Apache
Apache остаётся стандартом для многих CMS и PHP-приложений: он понимает .htaccess (правила прямо в каталоге сайта, без доступа к главному конфигу), имеет богатую экосистему модулей и отлично документирован. Для классического хостинга сайтов и legacy-приложений он часто удобнее Nginx.
- .htaccess — настройки на уровне папки, удобно для shared-подобных схем.
- mod_rewrite — мощные правила ЧПУ и редиректов.
- Модульность — включаешь только то, что нужно.
Часто Apache ставят в связке с PHP-FPM или прячут за Nginx-фронтендом. Начнём с базовой установки на чистый сервер.
Нужен сервер под эту задачу?
Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США и РФ. Оплата картой РФ и по СБП.
Арендовать VPS для сайта на ApacheУстанавливаем Apache
На Ubuntu/Debian пакет называется apache2. Обновляемся и ставим.
sudo apt update && sudo apt -y install apache2
Сразу включим автозапуск и проверим, что сервис поднялся.
sudo systemctl enable --now apache2
sudo systemctl status apache2
Открой IP сервера в браузере — должна показаться дефолтная страница Apache. Если не открывается, почти всегда дело в файрволе (см. ниже) или занятом 80 порту.
Проверить, кто держит 80 порт, помогает ss — частая причина конфликта в том, что порт уже занял ранее установленный Nginx.
sudo ss -tlnp | grep ':80'
Открываем порты в файрволе
Если включён ufw, Apache не будет доступен снаружи, пока не разрешишь порты. У Apache есть готовые профили ufw.
sudo ufw allow OpenSSH
sudo ufw allow 'Apache Full'
sudo ufw enable
sudo ufw status
Профиль Apache Full открывает и 80 (HTTP), и 443 (HTTPS). Если нужен только незашифрованный доступ на время настройки — используй Apache вместо Apache Full, но в бой всегда выводи с HTTPS.
Настраиваем virtual host
Виртуальный хост описывает один сайт: домен и каталог с файлами. Конфиги живут в /etc/apache2/sites-available/. Создадим хост для домена.
sudo mkdir -p /var/www/example.com/public
sudo tee /etc/apache2/sites-available/example.com.conf > /dev/null <<'EOF'
<VirtualHost *:80>
ServerName example.com
ServerAlias www.example.com
DocumentRoot /var/www/example.com/public
ErrorLog ${APACHE_LOG_DIR}/example_error.log
CustomLog ${APACHE_LOG_DIR}/example_access.log combined
</VirtualHost>
EOF
Активируем сайт, отключаем дефолтный и перезагружаем. Apache проверяет конфиг командой apachectl configtest.
sudo a2ensite example.com.conf
sudo a2dissite 000-default.conf
sudo apachectl configtest
sudo systemctl reload apache2
Модули и HTTPS
Модули включаются утилитой a2enmod. Для ЧПУ и заголовков почти всегда нужны rewrite и headers.
sudo a2enmod rewrite headers ssl
sudo systemctl restart apache2
Бесплатный сертификат Let's Encrypt проще всего выпустить через certbot с плагином Apache — он сам поправит конфиг и настроит редирект на HTTPS.
sudo apt -y install certbot python3-certbot-apache
sudo certbot --apache -d example.com -d www.example.com
certbot спросит email и согласие, выпустит сертификат и предложит включить автоматический редирект с HTTP на HTTPS — соглашайся. Обновление сертификата ставится в cron автоматически, проверить можно так.
sudo certbot renew --dry-run
Частые ошибки
- .htaccess не работает — для него в конфиге каталога должно стоять
AllowOverride All, по умолчанию оно None. - Конфликт с Nginx — оба веб-сервера не могут одновременно слушать 80/443; либо разнеси порты, либо оставь один.
- Забыли configtest — синтаксическая ошибка в конфиге не даст Apache перезапуститься; всегда проверяй перед reload.
- Права на каталог — файлы сайта должны быть доступны пользователю
www-data, иначе 403.
Логи ошибок — первый источник правды при разборе проблем. Смотри их в реальном времени.
sudo tail -f /var/log/apache2/example_error.log
Apache стабильно держит нагрузку, но при десятках сайтов на сервере многое упирается в диск и ядро — быстрый NVMe и AMD EPYC у MAATRIX заметно ускоряют отдачу статики и работу PHP.
Нужен сервер под эту задачу?
Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США и РФ. Оплата картой РФ и по СБП.
Арендовать VPS для сайта на ApacheОбсудить статью, задать вопрос или начать новую тему
Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.
Перейти в сообщество →Частые вопросы
Apache или Nginx — что ставить?
Apache удобнее для CMS с .htaccess и legacy-приложений, Nginx — для высокой конкуррентности и статики. Часто их совмещают: Nginx спереди, Apache с PHP сзади.
Можно ли держать несколько сайтов на одном Apache?
Да, для этого и нужны virtual hosts: каждый сайт — отдельный конфиг с своим ServerName и DocumentRoot, все на одном IP.
Как включить PHP в Apache?
Поставь php и libapache2-mod-php или, лучше, php-fpm с проксированием — FPM производительнее и не блокирует воркеры Apache.