1. Что такое виртуальный хост?

Виртуальные хосты Apache – это набор директив конфигурации, которые позволяют размещать как можно больше веб-сайтов, используя один веб-сервер. Веб-сервер Apache поддерживает два типа виртуальных хостов:

  • Виртуальные хосты на основе имен
  • Виртуальные хосты на основе IP

Виртуальный хост на основе имени обычно используется для размещения нескольких веб-сайтов на одном сервере, в то время как на виртуальном хосте на базе IP мы можем настроить только один веб-сайт на одном IP-адресе. В этой статье вы узнаете, как создавать виртуальные хосты на основе имен. Для этой цели мы разместим два веб-сайта с использованием следующих доменных имен: domain1.ru и domain2.ru. Вы также можете заменить их фактическими именами доменов.

2. Создайте каталоги webroot

Перед настройкой виртуальных хостов нам необходимо создать корневые каталоги документов для наших веб-сайтов. Создадим их в каталоге /var/www/html со следующими командами:

mkdir -p /var/www/html/domain1.ru
mkdir -p /var/www/html/domain2.ru

Давайте также создадим тестовую демонстрационную страницу для каждого из наших доменов, чтобы позже проверить нашу конфигурацию.
Перейдите в корневой каталог документа domain1.ru:

cd /var/www/domain1.ru

Создайте новую страницу index.html с помощью:

nano index.html

Добавьте следующий контент:


 
  

Это domain1.ru!

Теперь давайте сделаем следующее для домена domain2.ru.

cd /var/www/domain2.ru
nano index.html

Добавьте следующий контент:


 
  

Это domain2.ru!

Теперь мы успешно создали тестовые страницы для обоих доменов. Чтобы наш веб-сервер Apache имел возможность доступа к этим файлам, нам также необходимо предоставить им соответствующие разрешения и установить пользователя и группу в www-data. Мы обновляем разрешения для всего каталога /var/www/html с помощью следующей команды.

chown -R www-data: /var/www/html

3. Создайте файлы виртуальных хостов

Теперь мы можем создавать файлы виртуального хоста. Файлы конфигурации виртуального хоста обычно заканчиваются расширением .conf.

Выполните следующую команду для создания файла конфигурации виртуального хоста для нашего первого домена domain1.ru :

nano /etc/apache2/sites-available/domain1.ru.conf

И добавьте в файл следующий контент:



ServerAdmin admin@domain1.ru
ServerName domain1.ru
ServerAlias www.domain1.ru
DocumentRoot /var/www/html/domain1.ru

ErrorLog ${APACHE_LOG_DIR}/domain1.ru_error.log
CustomLog ${APACHE_LOG_DIR}/domain2.ru_access.log combined

Теперь давайте сделаем то же самое для нашего второго доменного имени domain2.ru:

nano /etc/apache2/sites-available/domain2.ru.conf

И добавьте следующий код:



ServerAdmin admin@domain2.ru
ServerName domain2.ru
ServerAlias www.domain2.ru
DocumentRoot /var/www/html/domain2.ru

ErrorLog ${APACHE_LOG_DIR}/domain2.ru_error.log
CustomLog ${APACHE_LOG_DIR}/domain2.ru_access.log combined

Ниже приведено краткое описание каждой строки в наших файлах виртуального хоста.

Следующие строки показывают, что виртуальный хост прослушивает порт 80:

ServerAdmin устанавливает адрес контакта, который сервер включает в любые сообщения об ошибках, которые он возвращает клиенту. Здесь вы можете указать свой адрес электронной почты или даже удалить строку.

ServerAdmin admin@domain1.ru

ServerName – это имя домена, а ServerAlias ​​определяет дополнительные имена, которые должны совпадать, как если бы они являлись исходными именами доменов.

ServerName domain1.ru
ServerAlias www.domain1.ru

DocumentRoot определяет место, где должен искать Apache при обработке запроса для домена, определенного в ServerName или ServerAlias.

DocumentRoot /var/www/html/domain1.ru

Последние две строки определяют местоположение файлов журнала:

ErrorLog ${APACHE_LOG_DIR}/domain1.ru_error.log
CustomLog ${APACHE_LOG_DIR}/domain1.ru_access.log combined

4. Включение виртуальных хостов

Следующим шагом будет создание виртуальных хостов, которые мы только что создали. Вы можете сделать это со следующими командами:

a2ensite domain1.ru.conf
a2ensite domain2.ru.conf

Другой альтернативный способ сделать это – создать символическую ссылку для каждого виртуального хоста в /etc/apache2/sites-enabled

ln -s /etc/apache2/sites-available/domain1.ru.conf /etc/apache2/sites-enabled/
ln -s /etc/apache2/sites-available/domain2.ru.conf /etc/apache2/sites-enabled/

После включения виртуальных хостов, используя один из вышеперечисленных методов, вам необходимо перезапустить веб-сервер Apache:

systemctl restart apache2

Вот и все. Если вы все инструкции правильно, вы должны теперь открыть каждый из доменов в своем веб-браузере и получить результат с текстом:

Это http://domain1.ru!

Это http://domain2.ru!