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

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

Виртуальные хосты Apache позволяют запускать более одного веб-сайта на одной машине. С помощью виртуальных хостов вы можете указать корень документа сайта (каталог, содержащий файлы сайта), создать отдельную политику безопасности для каждого сайта, использовать разные сертификаты SSL и многое другое.

Хотя это руководство написано для Ubuntu 18.04 Bionic Beaver, те же шаги можно использовать для Ubuntu 16.04 Xenial Xerus.

Подготовка

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

Создайте структуру каталогов

Корневой каталог документа — это каталог, в котором файлы веб-сайта для доменного имени хранятся и обслуживаются в ответ на запросы. Вы можете установить корень документа в любое место по вашему желанию, в этом руководстве мы будем использовать следующую структуру каталогов:

/var/www/
├── domain1.com
│   └── public_html
├── domain2.com
│   └── public_html
├── domain3.com
│   └── public_html

По сути, мы создадим отдельный каталог для каждого домена, который хотим разместить на нашем сервере, в каталоге /var/www . В каждом из этих каталогов мы создадим каталог public_html котором будут храниться файлы веб-сайта домена.

Начните с создания корневого каталога для домена example.com :

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

В целях тестирования также создайте файл index.html внутри корневого каталога документов домена.

Откройте ваш редактор и создайте демонстрационный файл:

/var/www/example.com/public_html/index.html
<!DOCTYPE html>
<html lang="en" dir="ltr">
  <head>
    <meta charset="utf-8">
    <title>Welcome to example.com</title>
  </head>
  <body>
    <h1>Success! example.com home page!</h1>
  </body>
</html>

В этом руководстве мы запускаем команды от имени пользователя sudo, а вновь созданные файлы и каталоги принадлежат пользователю root.

Чтобы избежать проблем с разрешениями, мы можем изменить владельца корневого каталога документов домена на пользователя apache ( www-data ):

sudo chown -R www-data: /var/www/example.com

Создать виртуальные хосты

По умолчанию в системах Ubuntu файлы конфигурации виртуальных хостов Apache хранятся в каталоге /etc/apache2/sites-available и их можно включить, создав символические ссылки на каталог /etc/apache2/sites-enabled .

Откройте выбранный вами редактор и создайте следующий базовый файл конфигурации виртуального хоста:

/etc/apache2/sites-available/example.com.conf
<VirtualHost *:80>
    ServerName example.com
    ServerAlias www.example.com
    ServerAdmin [email protected]
    DocumentRoot /var/www/example.com/public_html

    <Directory /var/www/example.com/public_html>
        Options -Indexes +FollowSymLinks
        AllowOverride All
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/example.com-error.log
    CustomLog ${APACHE_LOG_DIR}/example.com-access.log combined
</VirtualHost>
  • ServerName : домен, который должен соответствовать данной конфигурации виртуального хоста. Это должно быть ваше доменное имя.
  • ServerAlias : все остальные домены, которые также должны соответствовать этому виртуальному хосту, например субдомен www .
  • DocumentRoot : каталог, из которого Apache будет обслуживать файлы домена.
  • Options : эта директива определяет, какие функции сервера доступны в определенном каталоге.
    • -Indexes : предотвращает -Indexes каталогов.
    • FollowSymLinks : этот параметр указывает вашему веб-серверу следовать символическим ссылкам.
  • AllowOverride : указывает, какие директивы, объявленные в файле .htaccess могут переопределять директивы конфигурации.
  • ErrorLog , CustomLog : указывает расположение файлов журнала.

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

Чтобы включить новый файл виртуального хоста, нам нужно создать символическую ссылку из файла виртуального хоста в каталог с поддержкой sites-enabled , который apache2 читает во время запуска.

Самый простой способ включить виртуальный хост — использовать помощник a2ensite :

sudo a2ensite example.com

Другой вариант — вручную создать символическую ссылку, как показано ниже:

sudo ln -s /etc/apache2/sites-available/example.com.conf /etc/apache2/sites-enabled/

После этого проверьте конфигурацию на наличие синтаксических ошибок с помощью:

sudo apachectl configtest

Если ошибок нет, вы увидите следующий вывод:

Syntax OK

Перезапустите службу Apache, чтобы изменения вступили в силу:

sudo systemctl restart apache2

Наконец, чтобы убедиться, что все работает должным образом, откройте http://example.com в выбранном браузере, и вы увидите что-то вроде этого:

Выводы

Вы узнали, как создать конфигурацию виртуального хоста apache для размещения нескольких доменов на одном сервере Ubuntu. Вы можете повторить описанные выше шаги и создать дополнительные виртуальные хосты для всех ваших доменов.

Если вы столкнулись с какой-либо проблемой, не стесняйтесь оставлять комментарий.

Оставьте комментарий