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. На віртуальній машині відкотитися легше, ніж намагатися згадати, що ви змінили годину тому.