Виртуальный хост – это директива конфигурации Apache, которая позволяет вам запускать более одного веб-сайта на одном сервере. С помощью виртуальных хостов вы можете указать корневой каталог документа сайта (каталог, содержащий файлы сайта), создать отдельную политику безопасности для каждого сайта, использовать разные сертификаты SSL и многое другое.
В этой статье описывается, как настроить виртуальные хосты Apache в Ubuntu 20.04.
Предпосылки
Убедитесь, что вы выполнили следующие требования, прежде чем продолжить статью:
- Один или несколько доменных имен, указывающих на IP вашего публичного сервера.
- Apache установлен в вашей системе Ubuntu.
- Вы вошли как root или пользователь с привилегиями sudo.
Создание структуры каталогов
Корень документа – это каталог, в котором файлы веб-сайта для доменного имени хранятся и обслуживаются в ответ на запросы. Вы можете установить корневой каталог документа в любое место, которое вы хотите, в этом примере мы будем использовать следующую структуру каталогов:
/var/www/ ├── domain1.ru │ └── public_html ├── domain2.ru │ └── public_html
Для каждого домена, размещенного на сервере, корневой каталог документа будет установлен на /var/www/<domain_name>/public_html.
Начните с создания корневого каталога для домена:
sudo mkdir -p /var/www/domain1.ru/public_html
Мы также создадим файл index.html в корневом каталоге документов домена, который будет отображаться при посещении домена в браузере:
<!DOCTYPE html> <html lang="en" dir="ltr"> <head> <meta charset="utf-8"> <title>Добро пожаловать на domain1.ru</title> </head> <body> <h1>Успех! Главная страница domain1.ru!</h1> </body> </html>
Поскольку приведенные выше команды выполняются от имени пользователя sudo, вновь созданные файлы и каталоги принадлежат пользователю root. Чтобы избежать каких-либо проблем с разрешениями, измените владельца корневого каталога документов домена и всех файлов в этом каталоге на пользователя apache (www-data):
sudo chown -R www-data: /var/www/domain1.ru
Создание виртуальных хостов
В системах Ubuntu файлы конфигурации Apache Virtual Hosts находятся в каталоге /etc/apache2/sites-available. Их можно включить, создав символические ссылки на каталог /etc/apache2/sites-enabled, которые Apache прочитал при запуске.
Откройте выбранный вами текстовый редактор и создайте следующий базовый файл конфигурации виртуального хоста:
<VirtualHost *:80> ServerName domain1.ru ServerAlias www.domain1.ru ServerAdmin webmaster@domain1.ru DocumentRoot /var/www/domain1.ru/public_html <Directory /var/www/domain1.ru/public_html> Options -Indexes +FollowSymLinks AllowOverride All </Directory> ErrorLog ${APACHE_LOG_DIR}/domain1.ru-error.log CustomLog ${APACHE_LOG_DIR}/domain1.ru-access.log combined </VirtualHost>
- ServerName: Домен, который должен соответствовать этой конфигурации виртуального хоста. Это должно быть ваше доменное имя.
- ServerAlias: Все другие домены или субдомены, которые должны соответствовать этому виртуальному хосту, например, субдомен www.
- DocumentRoot: Каталог, из которого Apache будет обслуживать файлы домена.
- Options: Эта директива, какие особенности сервера доступны в каталоге конкретного.
- -Indexes: Предотвращает списки каталогов.
- FollowSymLinks: Когда эта опция включена, Apache будет переходить по символическим ссылкам.
- AllowOverride: Указывает, какие директивы, объявленные в файле .htaccess, могут переопределять директивы конфигурации.
- ErrorLog, CustomLog: Указывает местоположение для файлов журнала.
Вы можете назвать файл конфигурации как вам угодно, но лучше всего использовать имя домена в качестве имени файла конфигурации виртуального хоста.
Чтобы включить новый файл виртуального хоста, используйте a2ensiteвспомогательный скрипт, который создает символическую ссылку из файла виртуального хоста в каталог sites-enabled:
sudo a2ensite domain1.ru
Другой вариант – создать символическую ссылку вручную, как показано ниже:
sudo ln -s /etc/apache2/sites-available/domain1.ru.conf /etc/apache2/sites-enabled/
После этого проверьте конфигурацию на наличие синтаксических ошибок с помощью:
sudo apachectl configtest
Если ошибок нет, вы увидите следующий вывод:
Syntax OK
Перезапустите службу Apache, чтобы изменения вступили в силу:
sudo systemctl restart apache2
Наконец, чтобы убедиться, что все работает должным образом, откройте http://domain1.ru в вашем браузере, и вы увидите содержимое страницы index.html:
Вывод
Вы узнали, как создать конфигурацию виртуального хоста Apache для размещения нескольких доменов на одном сервере Ubuntu.
Повторите шаги, описанные выше, чтобы создать дополнительные виртуальные хосты для всех ваших доменов.
Если вы столкнулись с какой-либо проблемой, не стесняйтесь оставлять комментарии.