Как настроить виртуальные хосты Apache в Ubuntu 22.04
На этой странице
- Что мы рассмотрим?
- Начните прямо сейчас...
- Тестирование установки виртуального хоста Apache
- Заключение
Концепция виртуального хостинга используется компаниями для размещения нескольких веб-сайтов на одном компьютере. Это может быть достигнуто либо методом «на основе IP», либо методом «на основе имени». В хостинге на основе IP у нас есть разные IP-адреса для каждого веб-сайта. В случае хостинга на основе имени у нас есть несколько имен, работающих на каждом IP-адресе.
Что мы будем освещать?
В этом руководстве мы увидим, как мы можем разместить два виртуальных хоста в системе Ubuntu 22.04, используя виртуальный хостинг на основе имени. Мы будем использовать веб-сервер Apache.
Начать сейчас...
Шаг 1. Обновите репозиторий и операционную систему:
sudo apt update
sudo apt upgrade -y
Шаг 2. Установите веб-сервер Apache для Ubuntu с помощью команды:
sudo apt install apache2 -y
sudo systemctl restart apache2
sudo systemctl status apache2
Пример вывода:
? apache2.service - The Apache HTTP Server
Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor prese>
Active: active (running) since Mon 2022-06-27 09:32:14 UTC; 18s ago
Docs: https://httpd.apache.org/docs/2.4/
Process: 13093 ExecStart=/usr/sbin/apachectl start (code=exited, status=0/S>
Main PID: 13098 (apache2)
Tasks: 55 (limit: 1146)
Memory: 4.7M
CPU: 25ms
CGroup: /system.slice/apache2.service
??13098 /usr/sbin/apache2 -k start
??13099 /usr/sbin/apache2 -k start
??13100 /usr/sbin/apache2 -k start
Шаг 4. Создайте два новых каталога внутри папки «www». Пусть эти каталоги будут host1 и host2.
Опять же, внутри этих каталогов создайте еще одну папку для хранения ваших веб-файлов. Пусть эти каталоги будут public_html и public_html. Эти каталоги будут содержать соответствующие файлы index.html для этих двух хостов:
sudo mkdir -p /var/www/host1/public_html
sudo mkdir -p /var/www/host2/public_html
Каталоги «/var/www/host1/public_html» и «/var/www/host2/public_html» также представляют корень документа для двух виртуальных хостов.
Шаг 5. Созданные выше каталоги принадлежат пользователю root. Чтобы позволить обычному пользователю изменять файлы в этих каталогах, необходимо изменить владельца с помощью команд:
sudo chown -R $USER:$USER /var/www/host1/public_html
sudo chown -R $USER:$USER /var/www/host2/public_html
Переменная ‘$USER’ будет использовать значение текущего вошедшего в систему пользователя. «public_html» теперь будет принадлежать этому пользователю.
Шаг 6. Теперь установите разрешение «доступ на чтение» для общего веб-каталога apache:
sudo chmod -R 755 /var/www
Шаг 7. Теперь мы установим страницу по умолчанию, т.е. index.html для каждого виртуального хоста. Это можно сделать прямо из терминала с помощью команды «echo». Для виртуального хоста1:
sudo echo “Welcome to Virtual Host 1.” > /var/www/host1/public_html/index.html
Для виртуального хоста2:
sudo echo “Welcome to Virtual Host 2.” > /var/www/host2/public_html/index.html
Шаг 8. Прежде чем двигаться дальше, мы используем промежуточный шаг. Здесь мы изменим файл hosts, чтобы сопоставить локальный адрес хоста с двумя доменными именами виртуальных хостов: www.host1.com и www.host2.com. Это делается для того, чтобы избежать публичной регистрации наших доменных имен.
sudo sh -c "echo 127.0.0.1 www.host1.com >> /etc/hosts"
sudo sh -c "echo 127.0.0.1 www.host2.com >> /etc/hosts"
Вышеописанные шаги показаны на картинке ниже:
«000-default.conf» можно использовать в качестве базового файла для каждого виртуального хоста. Просто скопируйте этот файл в то же место с двумя разными именами: host1.conf и host2.conf:
sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/host1.conf
sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/host2.conf
Шаг 10. Теперь откройте файлы и измените их для каждого виртуального хоста. Например, для виртуального хоста1 следующие параметры должны быть изменены следующим образом:
<VirtualHost *:80>
ServerAdmin
ServerName host1
ServerAlias www.host1.com
DocumentRoot /var/www/host1/public_html
ErrorLog ${APACHE_LOG_DIR}/error.log
</VirtualHost>
Для второго файла (host2.conf) замените записи host1 на host2. Кроме того, вы можете создать два новых файла и ввести вышеуказанное содержимое, соответствующее каждому виртуальному хосту. Файл host2.conf будет выглядеть так:
<VirtualHost *:80>
ServerAdmin
ServerName host2
ServerAlias www.host2.com
DocumentRoot /var/www/host2/public_html
ErrorLog ${APACHE_LOG_DIR}/error.log
</VirtualHost>
Шаг 10. Теперь, когда мы создали файлы виртуального хоста, пришло время активировать эти файлы. Для этой цели Apache предоставляет инструмент под названием «a2ensite». Используйте команду ниже, чтобы включить их:
sudo a2ensite host1.conf
sudo a2ensite host2.conf
Шаг 11. На терминале вы увидите сообщение о необходимости перезагрузки apache для активации новой конфигурации, но перед этим отключите сайт по умолчанию, представленный \000-default.conf, с помощью команды:
sudo a2dissite 000-default.conf
Шаг 12. Проверьте файлы конфигурации на наличие синтаксических ошибок, используя:
sudo apache2ctl configtest
Шаг 13. Наконец, перезагрузите службу apache2, чтобы применить сделанные выше изменения:
sudo systemctl reload apache2
Тестирование установки Apache vhost
Теперь проверим, все ли настроено правильно. Откройте терминал на своем компьютере и выполните команду:
$ curl www.host1.com
Приведенная выше команда должна возвращать сообщение со страницы индекса виртуального хоста1, аналогично приведенная ниже команда должна отображать сообщение от виртуального хоста2:
$ curl www.host2.com
Заключение
Наконец-то мы добрались, наш виртуальный хостинг работает как положено. Мы также можем выполнить это руководство с помощью Terraform, просто попробуйте.