Назад в блог

Настройка виртуальных хостов Apache на Ubuntu 20.04

Настройка виртуальных хостов Apache на Ubuntu 20.04

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 для получения более подробного руководства по настройке.

У вас должны быть зарегистрированы бесплатные или платные доменные имена у выбранного вами регистратора доменов. Убедитесь, что домены указывают на ваш сервер, настроив DNS-записи. Тем не менее, вы все равно можете использовать наши конфигурации для выполнения шагов в этом руководстве. В этом руководстве мы будем использовать example.dev и mydomain.com. Вы можете заменить их своими собственными. Если вы решите использовать тестовые домены, то файлы hosts в Apache необходимо отредактировать для обработки этих доменов. Мы расскажем, как это сделать, позже в руководстве.

Шаг 1 – Настройка каталогов веб-сайта

Это каталоги, содержащие данные сайта, к которым будут обращаться посетители вашего веб-сайта. Корневой каталог документов Apache, доступный из интернета, обычно находится в /var/www. Здесь мы создадим каталоги для отдельных доменов, которые хотим разместить. В каждом из каталогов мы добавим каталог public_html для хранения фактических файлов веб-сайта. Виртуальный хост указывает на каталог public_html. Это дает вам гибкость, так как вы можете хранить важные файлы веб-сайта за пределами public_html и помещать внутрь только общедоступные файлы.

Затем введите команды ниже, чтобы создать каталоги. Всегда помните о необходимости заменять тестовые домены вашими реальными доменами при последующих настройках:

Шаг 2 – Изменение прав на чтение и запись

Предыдущие команды создали структуру каталогов, но сохранили права владельца за пользователем root. Мы хотим, чтобы наш пользователь без прав root имел полные права на чтение и запись в эти каталоги. Мы также хотим, чтобы у обычных веб-пользователей были права на чтение.

Сначала измените владельца на пользователя без прав root, введя следующую команду:

Переменная $USER принимает учетные данные текущего вошедшего в систему пользователя. Обычный пользователь теперь является владельцем public_html. Далее вам нужно предоставить права на чтение для общего доступа из веб. Следующая команда разрешает доступ ко всем файлам в каталоге, обеспечивая корректное отображение веб-страниц:

После выполнения предыдущих трех команд ваш веб-сайт теперь может отдавать контент. Кроме того, ваш пользователь может также создавать контент для размещения в определенных каталогах. Здесь вы можете найти дополнительную информацию о правах доступа в Ubuntu.

Шаг 3 — Создание демо-страниц в каталогах для каждого виртуального хоста

После создания структуры каталогов пришло время написать простой код. Мы будем использовать HTML и текстовый редактор nano для создания базовых веб-страниц. Введите следующую команду, чтобы открыть nano и создать файл index.html в каталоге первого домена:

Вставьте в редактор следующий пример кода, который будет отображаться при переходе на домен:

После того как вы вставили указанные выше строки, нажмите “!wq”, чтобы сохранить файл и выйти.

Создайте страницу index.html для второго домена с помощью редактора nano, введя следующую команду:

Затем вставьте в редактор следующий HTML-код, сохраните изменения и выйдете:

 

Теперь у вас есть страницы для тестирования двух виртуальных хостов, которые мы создадим на следующем шаге.

Шаг 4 — Создание файлов виртуальных хостов для доменных имен

Файлы виртуальных хостов содержат конфигурации для каждого виртуального хоста. Они определяют, как будет обслуживаться доменное имя. Новая установка Apache поставляется с файлом виртуального хоста по умолчанию под названием 000-default.conf, который мы можем использовать и адаптировать для наших доменов. Как видите, он имеет расширение .conf, которое Ubuntu ожидает от конфигурационных файлов.

Конфигурационные файлы Apache находятся в каталоге /etc/apache2/sites-available. Там мы будем хранить файлы наших виртуальных хостов. Мы можем скопировать файл конфигурации по умолчанию и отредактировать его при необходимости.

  • Создайте первый файл виртуального хоста для домена example.dev

Введите следующую команду, чтобы создать файл example.dev.conf путем копирования файла конфигурации по умолчанию:

Next, open the created file using nano editor with sudo privileges using the following command:

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:

default configuration

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:

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:

Then, open it in nano editor using the command:

Find the directives and update them appropriately so the file looks like shown below:

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:

The output of the above commands is as shown below:

Apache еnable configuration

Next, you should disable the default configuration file, we use the a2dissite Apache tool for disabling sites. Enter the following command:

As seen from the output, you must restart Apache for the configurations to pick up. Use the following command:

Then, check the status of Apache using the following command:

The output shows that your server is up and running, and it is able to serve the two websites.

Apache 2 status

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:

Enter the following command to open the file and update with your server’s IP address:

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:

The output should display something like this:
curl example.dev

Apache curl 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!

author

Akshay Nagpal

Автор · CloudSigma

Preslav Dobrev — креативный дизайнер в CloudSigma, сосредоточенный на формировании последовательного корпоративного образа с помощью традиционных и инновационных маркетинговых каналов. Он умело сочетает художественное видение со стратегическим маркетингом, создавая убедительные истории бренда.

Комментарии

Комментариев пока нет. Будьте первым.