Настройка виртуальных хостов Apache на Ubuntu
- Что такое виртуальный хост
- Как настроить виртуальные хосты Apache
- Шаг 1. Создание каталогов и настройка прав
- Шаг 2. Настройка конфигурационных файлов
- Шаг 3. Создание тестовой HTML-страницы
- Шаг 4. Включение виртуального хоста в Apache
- Шаг 5. Проверка работы виртуального хоста
Apache ― это популярный веб-сервер, на котором работает 24% веб-сайтов в интернете. В статье Что такое Apache мы рассказывали о истории его создания, принципах работы и преимуществах. В этой статье мы расскажем, для чего нужны в Apache виртуальные хосты и как их настроить в Ubuntu 18.04 и 20.04.
Что такое виртуальный хост
Виртуальный хост ― это сущность, которая позволяет работать множеству сайтов на одном сервере. Хосты совместно и максимально эффективно используют доступные ресурсы сервера.
Файлы сайтов хранятся на серверах в отдельных директориях. На одном сервере может быть размещено множество сайтов. Чтобы сервер понимал, какую директорию использовать, когда пользователь переходит на сайт, нужно связать домен и директорию между собой. За это отвечают виртуальные хосты. Они связывают доменное имя сайта с директорией, в которой находятся нужные файлы.
Настройка хостов при помощи связи домена с директорией называется Name-based (на основании имени). Есть и другие способы настройки виртуальных хостов. Например, Port-based (на основании порта) и IP-based (на основании IP-адреса).
Мы рассмотрим вариант настройки виртуального хоста на основании домена и покажем, как это сделать в Apache на сервере с Ubuntu 18.04 и 20.04.
Как настроить виртуальные хосты Apache
Если на вашем сервере нет Apache, установите его. Для этого:
Обновите список пакетов:
sudo apt update
Установите Apache:
sudo apt install apache2
Готово, этого будет достаточно, чтобы настроить виртуальный хост и протестировать его работу при помощи HTML. Если в дальнейшем вы хотите запустить сайт на PHP с базой данных, выполните установку остальных компонентов LAMP (Linux, Apache, MySQL/MariaDB, PHP) по инструкции.
Дальше в инструкции мы будем использовать тестовый домен faq-2d.ru. При работе с инструкцией вы можете использовать как его, так и собственный домен.
Всю процедуру настройки виртуального хоста мы разделили на шаги.
Шаг 1. Создание каталогов и настройка прав
Стандартная корневая директория для хостов ― /var/www. Здесь в отдельных каталогах хранятся виртуальные хосты. Создайте директорию для faq-2d.ru:
sudo mkdir -p /var/www/faq-2d.ru
Смените владельца директории на текущего пользователя, под которым вы авторизованы:
chown -R $USER:$USER /var/www/faq-2d.ru
Задайте права для этой директории:
sudo chmod -R 755 /var/www
Шаг 2. Настройка конфигурационных файлов
У каждого виртуального хоста есть свой конфигурационный файл (конфиг). Конфиги отвечают за настройку хоста и за поведение Apache при получении запросов. Они хранятся в директории /etc/apache2/sites-available. Там же есть стандартный файл конфигурации 000-default.conf, который можно использовать в качестве шаблона для новых виртуальных хостов.
Чтобы создать конфигурационный файл для нового виртуального хоста (faq-2d.ru в нашем случае), воспользуйтесь шаблоном:
1. Скопируйте содержимое файла 000-default.conf в новый файл:
sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/faq-2d.ru.conf
Вместо faq-2d.ru введите имя вашего домена.
2. Откройте новый файл при помощи текстового редактора:
sudo nano /etc/apache2/sites-available/faq-2d.ru.conf
3. В файле есть директивы и комментарии (строки, которые начинаются с символа #). Если исключить комментарии, останутся следующие директивы:
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
Где:
- <VirtualHost *:80> и </VirtualHost> ― это раздел виртуального хоста. Все директивы, которые находятся внутри этого раздела, применяются к запросам, которые поступают на 80 порт;
- ServerAdmin webmaster@localhost ― это электронная почта администратора. Замените webmaster@localhost на свой почтовый ящик;
- DocumentRoot /var/www/html ― это корневая директория сайта, которую вы создали на 1 шаге. Вместо /var/www/html укажите путь к корневой папке виртуального хоста;
- ErrorLog и CustomLog ― это логи ошибок и доступа.
3. Добавьте 3 новые директивы после строки <VirtualHost *:80>:
ServerName faq-2d.ru
ServerAlias www.faq-2d.ru
DirectoryIndex index.html
Где:
- ServerName faq-2d.ru ― это основной домен виртуального хоста;
- ServerAlias www.faq-2d.ru ― это псевдоним основного домена. Нужен для того, чтобы сайт открывался и по поддомену www.
- DirectoryIndex index.html ― эта директива указывает, что файл index.html ― это главная страница сайта. Этот файл будет открываться при переходе по домену.
В итоге в файле будут следующие директории:
<VirtualHost *:80>
ServerName faq-2d.ru
ServerAlias www.faq-2d.ru
DirectoryIndex index.html
ServerAdmin admin@faq-2d.ru
DocumentRoot /var/www/faq-2d.ru
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
Готово, вы настроили конфигурационный файл виртуального хоста.
Шаг 3. Создание тестовой HTML-страницы
Чтобы проверить работу хоста, создайте страницу с простым кодом на HTML. Для этого выполните команду:
echo "<h1>faq-2d.ru</h1>" > /var/www/faq-2d.ru/index.html
Вместо /var/www/faq-2d.ru/ введите путь до корневой директории виртуального хоста.
Готово, вы создали тестовую страницу.
Шаг 4. Включение виртуального хоста в Apache
1. Отключите стандартный конфиг:
sudo a2dissite 000-default.conf
2. Активируйте новый виртуальный хост:
sudo a2ensite faq-2d.ru.conf
Вместо faq-2d.ru введите имя вашего домена.
3. Перезапустите веб-сервер Apache:
sudo systemctl restart apache2
Готово, файл для проверки создан.
Шаг 5. Проверка работы виртуального хоста
Если ваш домен привязан к виртуальному серверу, перейдите по домену. Если вы правильно настроили хост, на сайте вы увидите текст, который добавили на 3 шаге:
Если вы использовали домен faq-2d.ru или любой другой домен, который не привязан к серверу или не существует, добавьте в файл hosts запись по инструкции:
123.123.123.123 faq-2d.ru www.faq-2d.ru
Где:
123.123.123.123 ― IP-адрес сервера,
faq-2d.ru ― домен, который вы использовали.
Готово, вы настроили и проверили работу виртуального хоста.