Apache: установка и виртуальные хосты
В этой статье вы установите веб-сервер Apache на свой VPS mHost, настроите виртуальный хост (VirtualHost) под отдельный сайт, проверите конфигурацию и откроете нужные порты в файрволе — в результате получите рабочий Apache, который отдаёт содержимое вашего сайта по HTTP.
Что понадобится
- Доступ к серверу по SSH под пользователем
rootили под пользователем сsudo. - VPS mHost на одной из поддерживаемых ОС: Ubuntu 22.04/24.04, Debian 11/12, AlmaLinux/Rocky Linux 8/9.
- (по желанию) доменное имя, A-запись которого указывает на IP-адрес сервера — для проверки подойдёт и просто IP.
Шаг 1. Установите Apache
Debian / Ubuntu
Пакет называется apache2:
sudo apt update
sudo apt install apache2AlmaLinux / Rocky Linux
Пакет называется httpd:
sudo dnf install httpdШаг 2. Включите автозапуск и запустите Apache
Debian / Ubuntu
sudo systemctl enable --now apache2
sudo systemctl status apache2AlmaLinux / Rocky Linux
sudo systemctl enable --now httpd
sudo systemctl status httpdФлаг --now сразу и включает автозапуск при загрузке сервера, и запускает службу. В выводе status должно быть active (running). Откройте http://<IP>/ (IP-адрес вашего сервера) в браузере — должна открыться тестовая страница Apache по умолчанию.
Шаг 3. Создайте виртуальный хост (VirtualHost)
Виртуальный хост описывает отдельный сайт на сервере: свой DocumentRoot (каталог с файлами), доменное имя и логи. Ниже — пример для домена example.com, замените на свой.
Создайте каталог для файлов сайта и тестовую страницу (одинаково для всех систем):
sudo mkdir -p /var/www/example.com/public_html
echo "<h1>It works: example.com</h1>" | sudo tee /var/www/example.com/public_html/index.htmlDebian / Ubuntu
Создайте файл /etc/apache2/sites-available/example.com.conf:
sudo nano /etc/apache2/sites-available/example.com.confи вставьте в него:
<VirtualHost *:80>
ServerName example.com
ServerAlias www.example.com
ServerAdmin admin@example.com
DocumentRoot /var/www/example.com/public_html
<Directory /var/www/example.com/public_html>
Options FollowSymLinks
AllowOverride All
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/example.com-error.log
CustomLog ${APACHE_LOG_DIR}/example.com-access.log combined
</VirtualHost>AlmaLinux / Rocky Linux
Создайте файл /etc/httpd/conf.d/example.com.conf:
sudo nano /etc/httpd/conf.d/example.com.confи вставьте в него (пути логов другие — переменной APACHE_LOG_DIR тут нет):
<VirtualHost *:80>
ServerName example.com
ServerAlias www.example.com
ServerAdmin admin@example.com
DocumentRoot /var/www/example.com/public_html
<Directory /var/www/example.com/public_html>
Options FollowSymLinks
AllowOverride All
Require all granted
</Directory>
ErrorLog /var/log/httpd/example.com-error.log
CustomLog /var/log/httpd/example.com-access.log combined
</VirtualHost>Шаг 4. Включите сайт и модули: a2ensite / a2enmod
Debian / Ubuntu
Debian и Ubuntu хранят все сайты в sites-available/, а подключают — символьной ссылкой в sites-enabled/; вручную ссылки создавать не нужно, это делает a2ensite (имя сайта указывайте вместе с .conf):
sudo a2ensite example.com.confМодули Apache включаются похожей командой a2enmod — например, mod_rewrite (часто нужен вместе с AllowOverride All для правил в .htaccess):
sudo a2enmod rewrite
sudo systemctl restart apache2AlmaLinux / Rocky Linux
Отдельной команды-аналога a2ensite здесь нет: любой файл *.conf из /etc/httpd/conf.d/ Apache подключает автоматически при старте — через директиву IncludeOptional conf.d/*.conf в /etc/httpd/conf/httpd.conf. Большинство стандартных модулей (включая mod_rewrite) в AlmaLinux/Rocky уже включены по умолчанию — их директивы LoadModule лежат в /etc/httpd/conf.modules.d/.
Шаг 5. Проверьте конфигурацию и перезапустите Apache
Перед перезапуском всегда проверяйте синтаксис конфигурации — команда одна и та же на всех дистрибутивах:
sudo apachectl configtestПри корректной конфигурации в ответ придёт Syntax OK; при ошибке apachectl укажет файл и строку.
Debian / Ubuntu
sudo systemctl reload apache2AlmaLinux / Rocky Linux
sudo systemctl reload httpdПроверить, что виртуальный хост ответил именно нужным сайтом, можно ещё до того, как домен указывает на сервер, — через заголовок Host:
curl -H 'Host: example.com' http://localhost/В ответе должна прийти тестовая страница «It works: example.com».
Шаг 6. Откройте порты в файрволе
Apache слушает порт 80 (HTTP), а после подключения TLS — ещё и 443 (HTTPS); порты нужно открыть в файрволе, иначе сайт останется недоступен снаружи.
Debian / Ubuntu
Пакет apache2 сам регистрирует в ufw профиль Apache Full, который открывает оба порта разом:
sudo ufw app list
sudo ufw allow 'Apache Full'Если такого профиля в списке нет (например, на Debian он не всегда регистрируется), откройте порты по номерам:
sudo ufw allow 80/tcp
sudo ufw allow 443/tcpAlmaLinux / Rocky Linux
Порты открываются через firewalld:
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --reloadЧто дальше
Apache установлен, виртуальный хост настроен, порты открыты — сайт доступен по HTTP. Дальше можно:
- добавить ещё один VirtualHost по той же схеме (Шаг 3) — для второго домена на этом же сервере;
- настроить TLS-сертификат, чтобы сайт открывался по HTTPS;
- если ещё не заходили в панель — начните со статьи «Как войти в VMmanager 6»; полный список готовых рецептов (включая LAMP) — в статье «Готовые рецепты VMmanager 6».