Введение
Виртуальный хост — это директива конфигурации Apache, которая позволяет запускать более одного веб-сайта на одном сервере. С помощью Virtual Hosts вы можете указать корень сайта (каталог, содержащий файлы веб-сайта), создать отдельную политику безопасности для каждого сайта, использовать разные SSL-сертификаты и многое другое.
В этой статье описывается, как настроить виртуальные хосты Apache в Ubuntu 20.04 LTS Focal Fossa.
Предпосылки
Прежде чем продолжить работу с руководством, убедитесь, что вы выполнили следующие требования:
- Одно или несколько доменных имен, указывающих на IP-адрес вашего общедоступного сервера. В этом уроке мы будем использовать
domain1.com
иdomain2.com
, будьте осторожны, чтобы изменить следующие значения на ваше собственное доменное имя. - Apache установлен в вашей системе Ubuntu.
- Вы вошли в систему как пользователь root или пользователь с привилегиями sudo.
Если вы хотите создать виртуальные хосты с Apache на удаленном сервере, продолжайте чтение, в противном случае пропустите первый абзац «Подключение к серверу» и прочитайте следующий.
Подключение к серверу
Чтобы получить доступ к серверу, вам нужно знать IP-адрес. Вам также потребуется ваше имя пользователя и пароль для аутентификации. Чтобы подключиться к серверу как root, введите следующую команду:
ssh root@IP_DEL_SERVER
Далее вам нужно будет ввести пароль пользователя root.
Если вы не используете пользователя root, вы можете войти под другим именем пользователя с помощью той же команды, а затем изменить root на свое имя пользователя:
ssh nome_utente@IP_DEL_SERVER
Затем вам будет предложено ввести пароль пользователя.
Стандартный порт для подключения по ssh — 22, если ваш сервер использует другой порт, вам нужно будет указать его с помощью параметра -p, затем введите следующую команду:
ssh nome_utente@IP_DEL_SERVER -p PORTA
Создайте структуру каталогов
Корень документа — это каталог, в котором файлы веб-сайта для доменного имени хранятся и предлагаются в ответ на запросы. Вы можете установить корень документа в любое место, которое вы хотите, в этом примере мы будем использовать следующую структуру каталогов:
/var/www/├── domain1.com
│ └── public_html
├── domain2.com
│ └── public_html
Каждый домен, размещенный на сервере, будет иметь корень документа, установленный в /var/www/<domain_name>/public_html
.
Начните с создания корневого каталога для домена с помощью команды mkdir:
sudo mkdir -p /var/www/domain1.com/public_html
Мы также создадим файл index.html
внутри корневого каталога документов домена, который будет отображаться при посещении домена в браузере.
Затем с помощью вашего любимого текстового редактора создайте следующий файл:
sudo nano /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 читает при запуске.
Откройте ваш любимый текстовый редактор и создайте следующий базовый файл конфигурации виртуального хоста:
sudo nano /etc/apache2/sites-available/domain1.com.conf
Вставьте следующий код, изменив доменное имя:
<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
: предотвращает списки каталогов.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 Virtual Host для размещения нескольких доменов на одном сервере Ubuntu 20.04 LTS Focal Fossa.
Повторите описанные выше шаги, чтобы создать дополнительные виртуальные хосты для всех ваших доменов.