Виртуальные хосты в Apache (Virtual Hosts): 2 сайта на одном сервере
Как запустить несколько доменов на одном Apache сервере?
Веб-сервер Apache позволяет размещать десятки различных сайтов на одном сервере и общем IP-адресе благодаря механизму Virtual Hosts (Виртуальные хосты). Когда пользователь вводит в браузере адрес site1.ru или site2.ru, Apache анализирует HTTP-заголовок Host: и открывает файлы из строго соответствующей изолированной директории.
Структура размещения файлов сайтов:
/var/www/
├── site1.ru/
│ └── public_html/index.html
└── site2.ru/
└── public_html/index.html Пошаговое создание двух виртуальных хостов в Apache
Шаг 1. Создаем структуру директорий для сайтов
sudo mkdir -p /var/www/site1.ru/public_html sudo mkdir -p /var/www/site2.ru/public_htmlШаг 2. Выдаем правильные права доступа веб-серверу
Владельцем файлов сайта должен быть системный пользователь веб-сервера (
www-data):sudo chown -R www-data:www-data /var/www/site1.ru sudo chown -R www-data:www-data /var/www/site2.ru sudo chmod -R 755 /var/wwwШаг 3. Создаем тестовые страницы index.html
echo "<h1>Добро пожаловать на Site 1!</h1>" | sudo tee /var/www/site1.ru/public_html/index.html echo "<h1>Добро пожаловать на Site 2!</h1>" | sudo tee /var/www/site2.ru/public_html/index.htmlШаг 4. Создаем конфигурационные файлы хостов
Создайте конфиг для первого сайта:
sudo nano /etc/apache2/sites-available/site1.ru.confВставьте следующее содержимое:
<VirtualHost *:80> ServerAdmin admin@site1.ru ServerName site1.ru ServerAlias www.site1.ru DocumentRoot /var/www/site1.ru/public_html ErrorLog ${APACHE_LOG_DIR}/site1_error.log CustomLog ${APACHE_LOG_DIR}/site1_access.log combined </VirtualHost>(Повторите этот же шаг для второго сайта, создав файл
site2.ru.confс путями к папке site2.ru).Шаг 5. Активируем сайты и перезапускаем Apache
# Включаем созданные виртуальные хосты утилитой a2ensite: sudo a2ensite site1.ru.conf sudo a2ensite site2.ru.conf # Проверяем синтаксис: sudo apache2ctl configtest # Применяем настройки: sudo systemctl restart apache2
Частые вопросы (FAQ)
Что делает директива ServerAlias?
Директива ServerAlias позволяет сайту открываться по альтернативным именам, например, с приставкой www (www.site1.ru).
Что делать, если при открытии сайта выдается Forbidden 403?
Проверьте права доступа к папке DocumentRoot. Пользователь www-data должен иметь права на чтение и исполнение (chmod 755).
Как отключить дефолтный сайт-заглушку Apache?
Выполните команду отключения стандартного хоста: sudo a2dissite 000-default.conf && sudo systemctl reload apache2.
Как включить поддержку файлов переопределения .htaccess?
Внутри блока VirtualHost добавьте директиву: <Directory /var/www/site1.ru/public_html> AllowOverride All </Directory> и включите модуль rewrite: sudo a2enmod rewrite.