Как настроить виртуальные хосты в Apache на Ubuntu: пошаговая инструкция

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

Когда у вас есть виртуальный частный сервер, можете запустить два и более интернет-страничек на одном сервере с общим IP-адресом. 

Самый востребованный среди веб-разработчиков для такой задачи – это веб-сервер Apache. Мы подготовили пошаговую инструкцию, которая поможет вам оперативно выполнить настройку виртуальных хостов, если вы делаете это впервые. 

Это также актуально, если вы одновременно обслуживаете несколько ресурсов, в том числе от разных заказчиков. То есть вы сможете пользоваться единственным интерфейсом без необходимости постоянно переключаться от одного к другому.

Как разместить несколько сайтов на одном сервере с одним IP-адресом

Главное достоинство Apache в том, что он даёт возможность на единственном сервере запустить разные сайты, при этом мониторинг осуществляется через общий интерфейс. 

Файлы каждого сайта размещены в индивидуальном каталоге. То есть пользователь, когда открывает ссылку или вводит имя домена в поисковой строке, он попадает в определённый каталог. Именно здесь находятся нужные данные, откуда они загружаются на устройство, а пользователь видит желаемый контент.

Таким образом, можно сделать множество каталогов и соответствующим им сайтов, интернет-порталов. Их количество зависит исключительно от параметров сервера, вашего тарифа. В теории никаких ограничений не существует. 

Расшифровываем термины (кратко)

Веб-сервер Apache нужен для оперативной обработки и оперативной отправки данных на компьютер или гаджет пользователя. Хранятся эти данные на виртуальном хосте (virtual hosts).

Чтобы исключить риски взлома, потери данных, будем работать через SSH- подключение. Этот сетевой протокол обеспечивает безопасность при дистанционной работе, так как обладает надёжными элементами защиты.

Настраиваем виртуальные хосты в Apache на Ubuntu

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

В этой статье мы не будем рассматривать процедуру установки Apache на компьютер, будем считать, что вы это уже сделали. Подойдёт минимальный пакет LAMP, включающий в себя операционку, веб-сервер, СУБД и язык программирования.  

Также домены, с которыми планируете дальше работать, необходимо привязать к облачному серверу. 

Для удобства мы будем в командах сразу указывать два домена в качестве примере – test.com и example.com. Когда будете вводить команды, не забывайте менять их на свои доменные имена.

Начнём с создания нового пользователя и наделим его правами, чтобы получить возможность вводить команды sudo. От его имени необходимо подключиться, чтобы начать настройку.

Первый этап: настройка и разрешения

Нам нужно создать структуру директорий для актуальных сайтов /var/www. В каждой создаём папку public_html, где будут храниться файлы. На примере ниже представлено, как они должны выглядеть, вы деленные значения замените своими. Красным цветом выделены домены, обслуживаемые через VPS.

Сейчас вся структура директорий доступна только root-пользователю. Чтобы разрешить работу с файлами пользователям с другими правами, нужно внести изменения.

sudo chown -R $USER:$USER /var/www/example.com/public_html

sudo chown -R $USER:$USER /var/www/test.com/public_html

Когда нажмём ENTER, переменная $USER примет значение текущего пользователя в системе, то есть пользователь станет владельцем субдиректорий public_html, в которой находятся файлы сайта.

Дополнительно нужно разрешить доступ для чтения к общей веб-директории, чтобы можно было увидеть все соответствующие файлы и страницы открывались корректно. Вводим команду.

sudo chmod -R 755 /var/www

Второй этап: Подготовка каталогов

В общей директории /var/www мы организуем каталоги для всех доменов. Последовательно выполняем команды для их создания и раздачи прав. Будьте внимательны, test.com и example.com – это ваши актуальные домены!

sudo mkdir -p /var/www/test.com/

sudo mkdir -p /var/www/support- example.com /

sudo chmod -R 755 /var/www

sudo chown -R $USER:$USER /var/www/ test.com /

sudo chown -R $USER:$USER /var/www/example.com / 

Третий этап: Создание демонстрационных страниц для каждого хоста

Для каждого нашего сайта создаём новую страничку и открываем её в текстовом редакторе.

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

И меняем домен на нужный.

Четвертый этап: Создание новых конфиг-файлов виртуального хоста

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

Чтобы создать конфиг-файл, следуйте инструкции.

  1. Копируем шаблон.

sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/test.com.conf

  1. Открываем файл.

sudo nano /etc/apache2/sites-available/test.com.conf

  1. Заполняем поля в разделе VirtualHost, воспользовавшись подсказкой.
  • ServerAdmin — e-mail администратора.
  • ServerName — домен.
  • ServerAlias — псевдоним домена. Дополнительно необходимо стереть решётку.
  • DocumentRoot — каталог домена, созданный ранее.
  • ErrorLog и CustomLog — это файлы логов, в названии которых тоже должен содержаться домен.
  • Directory — каталог домена.
  1. Деактивируем старый файл.

sudo a2dissite 000-default.conf

  1. Активируем новые.

sudo a2ensite test.com.conf

sudo a2ensite example.com.conf

  1. Перезапускаем Apache.

sudo service apache2 restart

Завершающий этап: проверка работы виртуальных хостов

Если привязка к серверу уже выполнена, то вы увидите созданную ранее демонстрационную страничку, если перейдёте на домен. При проверке на экране будет написано имя вашего домена. 

Однако, если прошло менее суток, требуется настройка локальных хостов в файле hosts.

В этом случае все запросы будут перенаправлены на сервер VPS. Однако это работает исключительно на локальном устройстве и только для тестирования. 

Введите команду.

sudo nano /etc/hosts

Откроется файл, где необходимо указать публичный 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

Подведём итоги

Если вы всё сделали правильно, то у вас будет единственный сервер, который обслуживает два доменных имени. Есть возможность добавить новые сайты, повторив все шаги из этой статьи. Никаких ограничений по числу хостов не существует, поэтому можете создать их сколько угодно. Всё зависит только от ваших целей и задач.

Всё ещё остались вопросы?