Apache в настоящее время является самым широко используемым веб-сервером в мире. Это программное обеспечение с открытым исходным кодом, поддерживаемое The Apache Software Foundation. По состоянию на сентябрь 2020 года, по оценкам, он обслуживает 36% всего веб-трафика в мире. Разработчики любят его за скорость, безопасность, надежность и стабильность. Простота настройки позволяет ему удовлетворять потребности многих сред путем установки расширений и модулей.
Apache поставляется с системой сопоставления, которую можно использовать для размещения нескольких доменов или сайтов с помощью одной установки сервера Apache, доступной по одному IP-адресу. Домены или сайты настраиваются в одном из конфигурационных файлов Apache, определенных как виртуальные хосты.
Каждый домен имеет одно определение виртуального хоста с определенным каталогом, на который он указывает. Когда пользователь посещает домен, сервер проверяет каждый соответствующий виртуальный хост и выбирает, какой из них использовать для обслуживания запроса посетителя в зависимости от введенного им имени хоста. Если соответствующее имя хоста не найдено, сервер использует первый определенный виртуальный хост в файле conf в качестве резервного. Посетитель получит доступ к запрошенной веб-странице, даже не подозревая, что тот же сервер обслуживает другие сайты. В зависимости от ресурсов вашего сервера и объема трафика, который он может обработать, вы можете разместить столько доменов, сколько захотите.
В этом руководстве мы расскажем вам, как настроить виртуальные хосты на Ubuntu 20.04 сервере.
Прежде всего
Для выполнения этого руководства у вас должна быть установлена Ubuntu 20.04. Вам также необходимо создать пользователя без прав root и войти под ним.
Шаги в этом руководстве также требуют наличия установленного Apache. Если вы еще этого не сделали, вы можете установить его с помощью команд ниже. Вы можете воспользоваться нашим руководством Настройка LAMP-стека – руководство по Linux Apache MySQL PHP для получения более подробного руководства по настройке.
|
1 2 |
sudo apt update sudo apt install apache2 |
У вас должны быть зарегистрированы бесплатные или платные доменные имена у выбранного вами регистратора доменов. Убедитесь, что домены указывают на ваш сервер, настроив DNS-записи. Тем не менее, вы все равно можете использовать наши конфигурации для выполнения шагов в этом руководстве. В этом руководстве мы будем использовать example.dev и mydomain.com. Вы можете заменить их своими собственными. Если вы решите использовать тестовые домены, то файлы hosts в Apache необходимо отредактировать для обработки этих доменов. Мы расскажем, как это сделать, позже в руководстве.
Шаг 1 – Настройка каталогов веб-сайта
Это каталоги, содержащие данные сайта, к которым будут обращаться посетители вашего веб-сайта. Корневой каталог документов Apache, доступный из интернета, обычно находится в /var/www. Здесь мы создадим каталоги для отдельных доменов, которые хотим разместить. В каждом из каталогов мы добавим каталог public_html для хранения фактических файлов веб-сайта. Виртуальный хост указывает на каталог public_html. Это дает вам гибкость, так как вы можете хранить важные файлы веб-сайта за пределами public_html и помещать внутрь только общедоступные файлы.
Затем введите команды ниже, чтобы создать каталоги. Всегда помните о необходимости заменять тестовые домены вашими реальными доменами при последующих настройках:
|
1 2 |
sudo mkdir -p /var/www/example.dev/public_html sudo mkdir -p /var/www/mydomain.com/public_html |
Шаг 2 – Изменение прав на чтение и запись
Предыдущие команды создали структуру каталогов, но сохранили права владельца за пользователем root. Мы хотим, чтобы наш пользователь без прав root имел полные права на чтение и запись в эти каталоги. Мы также хотим, чтобы у обычных веб-пользователей были права на чтение.
Сначала измените владельца на пользователя без прав root, введя следующую команду:
|
1 2 |
sudo chown -R $USER:$USER /var/www/example.dev/public_html sudo chown -R $USER:$USER /var/www/mydomain.com/public_html |
Переменная $USER принимает учетные данные текущего вошедшего в систему пользователя. Обычный пользователь теперь является владельцем public_html. Далее вам нужно предоставить права на чтение для общего доступа из веб. Следующая команда разрешает доступ ко всем файлам в каталоге, обеспечивая корректное отображение веб-страниц:
|
1 |
sudo chmod -R 755 /var/www |
После выполнения предыдущих трех команд ваш веб-сайт теперь может отдавать контент. Кроме того, ваш пользователь может также создавать контент для размещения в определенных каталогах. Здесь вы можете найти дополнительную информацию о правах доступа в Ubuntu.
Шаг 3 — Создание демо-страниц в каталогах для каждого виртуального хоста
После создания структуры каталогов пришло время написать простой код. Мы будем использовать HTML и текстовый редактор nano для создания базовых веб-страниц. Введите следующую команду, чтобы открыть nano и создать файл index.html в каталоге первого домена:
|
1 |
vim /var/www/example.dev/public_html/index.html |
Вставьте в редактор следующий пример кода, который будет отображаться при переходе на домен:
|
1 2 3 4 5 6 7 8 |
<html> <head> <title>Добро пожаловать на Example.dev!</title> </head> <body> <h1>Успех! Виртуальный example.dev хост host работает working!</h1> </body> </html> |
После того как вы вставили указанные выше строки, нажмите “!wq”, чтобы сохранить файл и выйти.
Создайте страницу index.html для второго домена с помощью редактора nano, введя следующую команду:
|
1 |
vim /var/www/mydomain.com/public_html/index.html |
Затем вставьте в редактор следующий HTML-код, сохраните изменения и выйдете:
|
1 2 3 4 5 6 7 8 |
<html> <head> <title>Добро пожаловать на Mydomain.com!</title> </head> <body> <h1>Успех! Виртуальный mydomain.com хост host работает working!</h1> </body> </html> |
Теперь у вас есть страницы для тестирования двух виртуальных хостов, которые мы создадим на следующем шаге.
Шаг 4 — Создание файлов виртуальных хостов для доменных имен
Файлы виртуальных хостов содержат конфигурации для каждого виртуального хоста. Они определяют, как будет обслуживаться доменное имя. Новая установка Apache поставляется с файлом виртуального хоста по умолчанию под названием 000-default.conf, который мы можем использовать и адаптировать для наших доменов. Как видите, он имеет расширение .conf, которое Ubuntu ожидает от конфигурационных файлов.
Конфигурационные файлы Apache находятся в каталоге /etc/apache2/sites-available. Там мы будем хранить файлы наших виртуальных хостов. Мы можем скопировать файл конфигурации по умолчанию и отредактировать его при необходимости.
-
Создайте первый файл виртуального хоста для домена example.dev
Введите следующую команду, чтобы создать файл example.dev.conf путем копирования файла конфигурации по умолчанию:
|
1 |
sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/example.dev.conf |
Next, open the created file using nano editor with sudo privileges using the following command:
|
1 |
sudo nano /etc/apache2/sites-available/example.dev.conf |
The default conf file looks like the screenshot below. The comments are for guiding you. We can remove them and leave only the clean file with the actual configuration lines:

You need to customize this file for your domain name and directory path where you have saved the website files. In addition, we will update and add several directives to the file. It already has a ServerAdmin directive, which contains the email address on which the server administrator will receive emails. It also has a DocumentRoot directive, which points to the directory where you have stored the website files.
We need to add two new directives: ServerName and ServerAlias. ServerName sets the base domain name. It is where you put your domain. ServerAlias defines other names that Apache should match as if they are the base domain name. It allows you to match hosts like the www.
Update the file to look as shown below:
|
1 2 3 4 5 6 7 8 |
<VirtualHost *:80> ServerAdmin admin@example.dev ServerName example.dev ServerAlias www.example.dev DocumentRoot /var/www/example.dev/public_html ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost> |
After that, update your domains and email appropriately. Once done, press CTRL + O and ENTER to save the file. To exit the editor, press CTRL + X.
-
Create the first virtual host file for mydomain.com domain
We can just copy the virtual host for the first domain and update it where necessary for the second domain. Use the following command to copy the file:
|
1 |
sudo cp /etc/apache2/sites-available/example.dev.conf /etc/apache2/sites-available/mydomain.com.conf |
Then, open it in nano editor using the command:
|
1 |
sudo nano /etc/apache2/sites-available/mydomain.com.conf |
Find the directives and update them appropriately so the file looks like shown below:
|
1 2 3 4 5 6 7 8 |
<VirtualHost *:80> ServerAdmin admin@mydomain.com ServerName mydomain.com ServerAlias www.mydomain.com DocumentRoot /var/www/mydomain.com/public_html ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost> |
Once done, save the file and exit the editor.
Step 5 – Enabling the Virtual Host Files
In step four, we created the virtual host files. However, they are not functional until you enable them. Apache has a tool called a2ensite that we will use to enable the virtual hosts.
Enter the following two commands to enable the virtual hosts:
|
1 2 |
sudo a2ensite example.dev.conf sudo a2ensite mydomain.com.conf |
The output of the above commands is as shown below:

Next, you should disable the default configuration file, we use the a2dissite Apache tool for disabling sites. Enter the following command:
|
1 |
sudo a2dissite 000-default.conf |
As seen from the output, you must restart Apache for the configurations to pick up. Use the following command:
|
1 |
sudo systemctl restart apache2 |
Then, check the status of Apache using the following command:
|
1 |
sudo systemctl status apache2 |
The output shows that your server is up and running, and it is able to serve the two websites.

Step 6 – Modify Local Hosts with Example Domains
If you had not registered an actual domain but you were instead using test domains, you will have to update your local host files. They need to intercept traffic and direct to your website directory when you navigate to any of the domains set in the virtual host files. Remember this will only work on your local computer. If your local computer runs a Windows Operating System, then follow the instructions for setting up hosts on this link.
If you are on a Mac or Linux machine, the hosts file is located in the /etc directory. We will use a nano editor to open and add our test domains. First, find your VPS IP address by entering the following command:
|
1 |
curl -4 icanhazip.com |
Enter the following command to open the file and update with your server’s IP address:
|
1 |
sudo nano /etc/hosts |
|
1 2 3 4 |
127.0.0.1 localhost 127.0.1.1 ComputerName your_server_IP example.dev your_server_IP mydomain.com |
Then, save and close the file. Whenever you enter a domain name in your browser, the host file is first checked. If the domain name is found, the traffic is directed to the IP address specified. If not found, the DNS system is used for global redirection. For our test domains, the traffic will be directed to the IP address specified.
Step 7 – Test Your Virtual Hosts
With the domain names set up, you can test whether they are working by checking them in the browser/terminal:
|
1 |
curl http://example.dev |
The output should display something like this:

|
1 |
http://mydomain.com |

Congratulations! You have successfully configured two websites to run on one server.
Conclusion
In this guide, you learned how to configure your Apache Server to serve more than one website. If you would like to add more websites, you can do so, by following the steps and setting up virtual hosts. Apache can handle as many domains as you may wish, as long as your server resources can handle them.
Happy Computing!
Комментарии
Комментариев пока нет. Будьте первым.