В этом обучающем руководстве мы познакомимся с настройкой нескольких доменов и сайтов с помощью виртуальных хостов Apache на сервере Ubuntu 18.04. Во время этого процесса вы научитесь предоставлять разный контент разным посетителям в зависимости от того, какие домены они запрашивают.
Более подробную версию настоящего обучающего руководства с более подробным описанием каждого действия можно найти в статье Настройка виртуальных хостов Apache в Ubuntu 18.04.
Для выполнения этого обучающего руководства вам потребуется доступ к следующим компонентам на сервере Ubuntu 18.04:
sudo apt install apache2
Сначала мы создадим структуры директорий, где будут храниться данные сайта, которые мы будем предоставлять для посетителей в нашей директории Apache верхнего уровня. Мы будем использовать примеры доменных имен, как показано ниже. Вы можете заменить их на ваши реальные доменные имена.
- sudo mkdir -p /var/www/example.com/public_html
- sudo mkdir -p /var/www/test.com/public_html
Теперь нам нужно изменить разрешения для текущего пользователя без привилегий 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
Давайте создадим содержимое для отображения, мы создадим демонстрационную страницу index.html
для каждого сайта. Мы можем открыть файл index.html
в текстовом редакторе для нашего первого сайта с помощью, например, nano.
- nano /var/www/example.com/public_html/index.html
В этом файле необходимо создать 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
<html>
<head>
<title>Welcome to Test.com!</title>
</head>
<body> <h1>Success! The test.com virtual host is working!</h1>
</body>
</html>
Сохраните и закройте этот файл.
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
Мы настроим данный файл для нашего собственного домена. Измените выделенный текст ниже согласно вашим собственным условиям.
<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
Теперь вам нужно изменить все элементы информации, чтобы они ссылались на второй домен. Итоговый файл должен выглядеть следующим образом, а выделенный текст должен соответствовать данным вашего домена.
<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>
Сохраните файл и закройте его после завершения.
После создания файлов виртуальных хостов мы должны активировать их. Для этой цели мы используем инструмент 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
Теперь наш сервер должен быть настроен для обслуживания двух сайтов.
Если вы использовали для тестирования этой процедуры фиктивные доменные имена, вы можете проверить результаты вашей работы, временно изменив файл хостов
на локальном компьютере.
Введите на локальном компьютере Mac или Linux следующую команду:
- sudo nano /etc/hosts
Если вы используете локальный компьютер Windows, см. инструкции по изменению файла хостов здесь.
Для доменов, указанных в настоящем руководстве, замените IP-адрес сервера на your_server_IP
, и ваш файл будет выглядеть примерно так:
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
на нашем компьютере будут перенаправляться на наш сервер.
Мы настроили виртуальные хосты и теперь можем протестировать настройки, открыв в браузере настроенные домены:
http://example.com
Вы должны увидеть страницу, выглядящую примерно так:
Также вы можете открыть вторую страницу и увидеть файл, созданный для второго сайта.
http://test.com
Если все эти сайты работают ожидаемым образом, вы успешно настроили два виртуальных хоста на одном сервере.
Если вы изменили файл хостов домашнего компьютера, удалите добавленные вами строки.
Ниже представлены ссылки на более подробные материалы, связанные с настоящим обучающим руководством:
Thanks for learning with the DigitalOcean Community. Check out our offerings for compute, storage, networking, and managed databases.
This textbox defaults to using Markdown to format your answer.
You can type !ref in this text area to quickly search our full set of tutorials, documentation & marketplace offerings and insert the link!
Sign up for Infrastructure as a Newsletter.
Working on improving health and education, reducing inequality, and spurring economic growth? We'd like to help.
Get paid to write technical tutorials and select a tech-focused charity to receive a matching donation.