Поиск по сайту:

Как настроить виртуальные хосты Apache в Ubuntu 22.04


На этой странице

  1. Что мы рассмотрим?
  2. Начните прямо сейчас...
  3. Тестирование установки виртуального хоста Apache
  4. Заключение

Концепция виртуального хостинга используется компаниями для размещения нескольких веб-сайтов на одном компьютере. Это может быть достигнуто либо методом «на основе 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, просто попробуйте.