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