Skip to content
VDS · Сайти та вебсервери

Apache: встановлення та віртуальні хости

Встановлення Apache на VPS, налаштування віртуальних хостів і модулів, вирішення типових конфліктів з Nginx на порту 80.

Оновлено 23 серпня 2026 р.

Apache обирають, коли потрібен .htaccess, стара CMS або готова інструкція від розробника застосунку. Він споживає більше пам'яті, ніж Nginx, але на VDS-1 з одним невеликим сайтом ви цього не помітите.

Встановлення

apt update && apt install -y apache2        # Debian, Ubuntu
dnf install -y httpd && systemctl enable --now httpd   # AlmaLinux, CentOS Stream

Назва служби відрізняється: apache2 на Debian і Ubuntu, httpd у родині RHEL. Каталоги конфігурації теж різні — /etc/apache2 і /etc/httpd.

Перевірка:

systemctl status apache2
curl -I http://127.0.0.1

Віртуальний хост

Файл /etc/apache2/sites-available/example.ru.conf:

<VirtualHost *:80>
    ServerName example.ru
    ServerAlias www.example.ru
    DocumentRoot /var/www/example.ru

    <Directory /var/www/example.ru>
        Options -Indexes +FollowSymLinks
        AllowOverride All
        Require all granted
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/example.ru-error.log
    CustomLog ${APACHE_LOG_DIR}/example.ru-access.log combined
</VirtualHost>

Увімкнення та перевірка:

a2ensite example.ru
a2dissite 000-default
apachectl configtest && systemctl reload apache2

AllowOverride All потрібен, лише якщо ви справді використовуєте .htaccess. Якщо ні, встановіть None: Apache перестане шукати ці файли в кожному каталозі на кожен запит.

Модулі

a2enmod rewrite headers ssl
systemctl restart apache2

Щоб побачити список увімкнених — apache2ctl -M. Не вмикайте все: кожен модуль завантажується в кожен робочий процес.

Для PHP використовуйте PHP-FPM замість застарілого mod_php: PHP-FPM.

Apache і Nginx разом

Обидва сервери за замовчуванням слухають порт 80, тож другий просто не запуститься і видасть Address already in use. У вас два варіанти:

  • залишити лише один сервер;
  • поставити Nginx попереду, перевести Apache на Listen 127.0.0.1:8080 і проксіювати до нього — див. зворотний проксі.

Щоб побачити, що займає порт:

ss -tulpn | grep :80

Типові помилки

СимптомПричина
AH00558: Could not reliably determine ... server's fully qualified domain nameНе задано ServerName — це попередження, але все одно задайте його
.htaccess не працюєAllowOverride None у блоці Directory
Служба не запускається після правкиСинтаксис — завжди запускайте apachectl configtest перед перезавантаженням
403 на каталозіБракує Require all granted або www-data не має прав

Логи: /var/log/apache2/ (Debian, Ubuntu) або /var/log/httpd/ (AlmaLinux).

Копіюйте конфігурацію перед кожною правкою: cp file file.bak. На віртуальній машині відкотитися легше, ніж намагатися згадати, що ви змінили годину тому.