Как настроить виртуальные хосты Apache в Ubuntu 18.04 LTS
Что такое виртуальные хосты Apache?
Термин Виртуальный хост относится к методу запуска более чем одного веб-сайта, такого как хост1.домен.com, хост2.домен.com или www.домен1.com, www.домен2.com и т. д., на единая система. В Apache существует два типа виртуального хостинга, а именно виртуальный хостинг на основе IP и виртуальный хостинг на основе имени. С помощью виртуального хостинга на основе IP вы можете разместить несколько веб-сайтов или доменов в одной системе, но каждый веб-сайт/домен имеет разные IP-адреса. С помощью виртуального хостинга на основе имени вы можете разместить несколько веб-сайтов/доменов на одном IP-адресе. Виртуальный хостинг может быть полезен, если вы хотите разместить несколько веб-сайтов и доменов на одном физическом сервере или VPS. Надеюсь, вы получили общее представление о виртуальных хостах Apache. Сегодня мы увидим, как настроить виртуальные хосты Apache в Ubuntu 18.04 LTS.
Настройка виртуальных хостов Apache в Ubuntu 18.04 LTS
IP-адрес моего тестового окна — 192.168.225.22, а имя хоста — ubuntuserver.
Сначала мы увидим, как настроить виртуальные хосты на основе имен на веб-сервере Apache.
Настройка виртуальных хостов на основе имени
1. Установите веб-сервер Apache
Убедитесь, что у вас установлен веб-сервер Apache. Чтобы установить его в Ubuntu, запустите:
sudo apt-get install apache2
После установки Apache проверьте, работает ли он, просмотрев тестовую страницу Apache в браузере.
Откройте веб-браузер и укажите в нем адрес http://IP_Address или http://localhost. Вы должны увидеть страницу, как показано ниже.
Хороший! Веб-сервер Apache запущен и работает!
2. Создайте веб-каталог для каждого хоста
Я собираюсь создать два виртуальных хоста, а именно ostechnix1.lan и ostechnix2.lan.
Давайте создадим каталог для первого виртуального хоста ostechnix1.lan. Этот каталог необходим для хранения данных наших виртуальных хостов.
Для этого введите:
sudo mkdir -p /var/www/html/ostechnix1.lan/public_html
Аналогичным образом создайте каталог для второго виртуального хоста ostechnix2.lan, как показано ниже.
sudo mkdir -p /var/www/html/ostechnix2.lan/public_html
Вышеупомянутые два каталога принадлежат пользователю root. Нам нужно сменить владельца на обычного пользователя.
Для этого запустите:
sudo chown -R $USER:$USER /var/www/html/ostechnix1.lan/public_html
sudo chown -R $USER:$USER /var/www/html/ostechnix2.lan/public_html
Здесь $USER относится к текущему вошедшему в систему пользователю.
Затем установите права чтения для корневого каталога Apache, т.е. /var/www/html/, используя команду:
sudo chmod -R 755 /var/www/html/
Мы делаем это потому, что уже создали для каждого виртуального хоста отдельный каталог для хранения их данных. Поэтому мы сделали корневой каталог Apache доступным только для чтения для всех пользователей, кроме пользователя root.
Мы создали необходимые каталоги для хранения данных каждого виртуального хоста, настроили соответствующие разрешения. Теперь пришло время создать несколько примеров страниц, которые будут обслуживаться с каждого виртуального хоста.
3. Создайте демонстрационные веб-страницы для каждого хоста
Давайте создадим образец страницы для сайта ostechnix1.lan. Для этого запустите:
sudo vi /var/www/html/ostechnix1.lan/public_html/index.html
Добавьте в него следующие строки:
<html>
<head>
<title>www.ostechnix.lan</title>
</head>
<body>
<h1>Hello, This is a test page for ostechnix1.lan website</h1>
</body>
</html>
Сохраните и закройте файл.
Аналогично создайте образец страницы для сайта ostechnix2.lan:
sudo vi /var/www/html/ostechnix2.lan/public_html/index.html
Добавьте в него следующие строки:
<html>
<head>
<title>www.ostechnix.lan</title>
</head>
<body>
<h1>Hello, This is a test page for ostechnix2.lan website</h1>
</body>
</html>
Сохраните и закройте файл.
4. Создайте файл конфигурации для каждого хоста
Далее нам нужно создать файлы конфигурации для каждого виртуального хоста. Сначала давайте сделаем это для сайта ostechnix1.lan.
Скопируйте содержимое файла виртуального хоста по умолчанию с именем 000-default.conf в новые файлы виртуального хоста, как показано ниже.
sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/ostechnix1.lan.conf
sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/ostechnix2.lan.conf
Помните, что все файлы конфигурации необходимо сохранять с расширением .conf в конце, иначе ничего не получится.
Теперь измените файлы конфигурации, чтобы они соответствовали нашим виртуальным хостам.
Отредактируйте файл ostechnix.lan1.conf:
sudo vi /etc/apache2/sites-available/ostechnix1.lan.conf
Отредактируйте/измените значения ServerAdmin, ServerName, ServerAlias и DocumentRoot, соответствующие виртуальному хосту.
<VirtualHost *:80>
# The ServerName directive sets the request scheme, hostname and port that
# the server uses to identify itself. This is used when creating
# redirection URLs. In the context of virtual hosts, the ServerName
# specifies what hostname must appear in the request's Host: header to
# match this virtual host. For the default virtual host (this file) this
# value is not decisive as it is used as a last resort host regardless.
# However, you must set it for any further virtual host explicitly.
#ServerName www.example.com
ServerAdmin webmaster@ostechnix1.lan
ServerName ostechnix1.lan
ServerAlias www.ostechnix1.lan
DocumentRoot /var/www/html/ostechnix1.lan/public_html
Available loglevels: trace8, ..., trace1, debug, info, notice, warn,
# error, crit, alert, emerg.
# It is also possible to configure the loglevel for particular
# modules, e.g.
#LogLevel info ssl:warn
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
For most configuration files from conf-available/, which are
# enabled or disabled at a global level, it is possible to
# include a line for only one particular virtual host. For example the
# following line enables the CGI configuration for this host only
# after it has been globally disabled with "a2disconf".
#Include conf-available/serve-cgi-bin.conf
</VirtualHost>
Сохраните и закройте файл.
Затем отредактируйте файл ostechnix2.lan.conf:
sudo vi /etc/apache2/sites-available/ostechnix2.lan.conf
Внесите необходимые изменения.
<VirtualHost *:80>
# The ServerName directive sets the request scheme, hostname and port that
# the server uses to identify itself. This is used when creating
# redirection URLs. In the context of virtual hosts, the ServerName
# specifies what hostname must appear in the request's Host: header to
# match this virtual host. For the default virtual host (this file) this
# value is not decisive as it is used as a last resort host regardless.
# However, you must set it for any further virtual host explicitly.
#ServerName www.example.com
ServerAdmin webmaster@ostechnix2.lan
ServerName ostechnix2.lan
ServerAlias www.ostechnix2.lan
DocumentRoot /var/www/html/ostechnix2.lan/public_html
Available loglevels: trace8, ..., trace1, debug, info, notice, warn,
# error, crit, alert, emerg.
# It is also possible to configure the loglevel for particular
# modules, e.g.
#LogLevel info ssl:warn
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
For most configuration files from conf-available/, which are
# enabled or disabled at a global level, it is possible to
# include a line for only one particular virtual host. For example the
# following line enables the CGI configuration for this host only
# after it has been globally disabled with "a2disconf".
#Include conf-available/serve-cgi-bin.conf
</VirtualHost>
Сохраните/закройте файл.
5. Включить файлы конфигурации виртуального хоста
После внесения необходимых изменений отключите файл конфигурации виртуального хоста по умолчанию, то есть 000.default.conf, и включите все вновь созданные файлы конфигурации виртуального хоста, как показано ниже.
sudo a2dissite 000-default.conf
sudo a2ensite ostechnix1.lan.conf
sudo a2ensite ostechnix2.lan.conf
Перезапустите веб-сервер Apache, чтобы изменения вступили в силу.
sudo systemctl restart apache2
Вот и все. Мы успешно настроили виртуальные хосты в Apache. Давайте продолжим и проверим, работают они или нет.
6. Тестирование виртуальных хостов
Откройте файл /etc/hosts в любом редакторе:
sudo vi /etc/hosts
Добавьте все свои виртуальные веб-сайты/домены один за другим, как показано ниже.
[...]
192.168.225.22 ostechnix1.lan
192.168.225.22 ostechnix2.lan
[...]
Обратите внимание: если вы хотите получить доступ к виртуальным хостам из любой удаленной системы, вам необходимо добавить указанные выше строки в файл /etc/hosts каждой удаленной системы.
Сохраните и закройте файл.
Откройте веб-браузер и укажите в нем адрес http://ostechnix1.lan или http://ostechnix2.lan.
Тестовая страница ostechnix1.lan:
Тестовая страница ostechnix2.lan:
Поздравляем! Теперь вы можете получить доступ ко всем своим веб-сайтам. Отныне вы можете загружать данные и обслуживать их с разных веб-сайтов.
Как вы заметили, мы использовали один и тот же IP-адрес (т. е. 192.168.225.22) для размещения двух разных веб-сайтов (http://ostechnix1.lan и http://ostechnix2.lan). Это то, что мы называем виртуальным хостингом на основе имени. Надеюсь это поможет. В следующем руководстве я покажу вам, как настроить виртуальный хостинг на базе IP. А пока следите за обновлениями!
Ресурс:
- Документация по виртуальному хосту Apache