Tutorial

Настройка виртуальных хостов Apache в Ubuntu 18.04 [Краткое руководство]

ApacheQuickstartUbuntu 18.04

Введение

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

Более подробную версию настоящего обучающего руководства с более подробным описанием каждого действия можно найти в статье Настройка виртуальных хостов Apache в Ubuntu 18.04.

Предварительные требования

Для выполнения этого обучающего руководства вам потребуется доступ к следующим компонентам на сервере Ubuntu 18.04:

  • Пользователь sudo на сервере
  • Веб-сервер Apache2, который можно установить с помощью команды sudo apt install apache2

Шаг 1 — Создание структуры директорий

Сначала мы создадим структуры директорий, где будут храниться данные сайта, которые мы будем предоставлять для посетителей в нашей директории Apache верхнего уровня. Мы будем использовать примеры доменных имен, как показано ниже. Вы можете заменить их на ваши реальные доменные имена.

  • sudo mkdir -p /var/www/example.com/public_html
  • sudo mkdir -p /var/www/test.com/public_html

Шаг 2 — Предоставление разрешений

Теперь нам нужно изменить разрешения для текущего пользователя без привилегий root, чтобы получить возможность изменять файлы.

  • sudo chown -R $USER:$USER /var/www/example.com/public_html
  • sudo chown -R $USER:$USER /var/www/test.com/public_html

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

  • sudo chmod -R 755 /var/www

Шаг 3 — Создание демонстрационных страниц для каждого виртуального хоста

Давайте создадим содержимое для отображения, мы создадим демонстрационную страницу index.html для каждого сайта. Мы можем открыть файл index.html в текстовом редакторе для нашего первого сайта с помощью, например, nano.

  • nano /var/www/example.com/public_html/index.html

В этом файле необходимо создать HTML-документ для конкретного домена, например, следующий:

/var/www/example.com/public_html/index.html
<html>
  <head>
    <title>Welcome to Example.com!</title>
  </head>
  <body>
    <h1>Success! The example.com virtual host is working!</h1>
  </body>
</html>

Сохраните и закройте файл, а затем скопируйте этот файл для использования в качестве основы для второго сайта:

  • cp /var/www/example.com/public_html/index.html /var/www/test.com/public_html/index.html

Откройте файл и измените соответствующие части информации:

  • nano /var/www/test.com/public_html/index.html
/var/www/test.com/public_html/index.html
<html>
  <head>
    <title>Welcome to Test.com!</title>
  </head>
  <body> <h1>Success! The test.com virtual host is working!</h1>
  </body>
</html>

Сохраните и закройте этот файл.

Шаг 4 — Создание новых файлов виртуального хоста

Apache имеет файл виртуального хоста с именем 000-default.conf, который мы будем использовать в качестве шаблона. Мы скопируем его, чтобы создать файл виртуального хоста для каждого из наших доменов.

Создание первого файла виртуального хоста

Скопируйте файл для первого домена:

  • sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/example.com.conf

Откройте новый файл в вашем редакторе (ниже мы используем nano) с привилегиями root:

  • sudo nano /etc/apache2/sites-available/example.com.conf

Мы настроим данный файл для нашего собственного домена. Измените выделенный текст ниже согласно вашим собственным условиям.

/etc/apache2/sites-available/example.com.conf
<VirtualHost *:80>
    ServerAdmin admin@example.com
    ServerName example.com
    ServerAlias www.example.com
    DocumentRoot /var/www/example.com/public_html
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

Сохраните и закройте файл.

Копирование первого виртуального хоста и настройка для второго домена

Теперь у нас есть первый файл виртуального хоста, и мы можем создать второй файл посредством копирования первого и его надлежащей настройки.

Для начала скопируйте файл:

  • sudo cp /etc/apache2/sites-available/example.com.conf /etc/apache2/sites-available/test.com.conf

Откройте новый файл в редакторе с привилегиями root:

  • sudo nano /etc/apache2/sites-available/test.com.conf

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

/etc/apache2/sites-available/test.com.conf
<VirtualHost *:80>
    ServerAdmin admin@test.com
    ServerName test.com
    ServerAlias www.test.com
    DocumentRoot /var/www/test.com/public_html
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

Сохраните файл и закройте его после завершения.

Шаг 5 — Активация новых файлов виртуального хоста

После создания файлов виртуальных хостов мы должны активировать их. Для этой цели мы используем инструмент a2ensite.

  • sudo a2ensite example.com.conf
  • sudo a2ensite test.com.conf

Отключите сайт по умолчанию, заданный в файле 000-default.conf:

  • sudo a2dissite 000-default.conf

После завершения нужно перезапустить Apache для вступления изменений в силу и использовать команду systemctl status для подтверждения успешного перезапуска.

  • sudo systemctl restart apache2

Теперь наш сервер должен быть настроен для обслуживания двух сайтов.

Шаг 6 — Настройка файлов локальных хостов (необязательно)

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

Введите на локальном компьютере Mac или Linux следующую команду:

  • sudo nano /etc/hosts

Если вы используете локальный компьютер Windows, см. инструкции по изменению файла хостов здесь.

Для доменов, указанных в настоящем руководстве, замените IP-адрес сервера на your_server_IP, и ваш файл будет выглядеть примерно так:

/etc/hosts
127.0.0.1   localhost
127.0.1.1   guest-desktop
your_server_IP example.com
your_server_IP test.com

Сохраните и закройте файл. При таких настройках все запросы доменов example.com и test.com на нашем компьютере будут перенаправляться на наш сервер.

Шаг 7 — Проверка результатов

Мы настроили виртуальные хосты и теперь можем протестировать настройки, открыв в браузере настроенные домены:

http://example.com

Вы должны увидеть страницу, выглядящую примерно так:

Пример виртуального хоста Apache

Также вы можете открыть вторую страницу и увидеть файл, созданный для второго сайта.

http://test.com

Тестирование виртуального хоста Apache

Если все эти сайты работают ожидаемым образом, вы успешно настроили два виртуальных хоста на одном сервере.

Если вы изменили файл хостов домашнего компьютера, удалите добавленные вами строки.

Другие обучающие руководства

Ниже представлены ссылки на более подробные материалы, связанные с настоящим обучающим руководством:

Creative Commons License