Создание виртуальных хостов Apache

Далеко не всегда на web сервере размещается один единственный сайт. Чаще на нём располагается несколько интернет ресурсов.

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

Виртуальный хостинг – это разделение ресурсов одного web сервера между несколькими сайтами. При этом каждый конкретный сайт называется виртуальным хостом.

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

Создание директории сайта

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

  • Размещение директории виртуального хоста в общей директории Apache (/var/www);
  • Размещение директории виртуального хоста в домашней директории пользователя Linux.

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

Создадим директорию виртуального хоста при помощи команды mkdir

Вместо virthost можно указать собственное название директории.

После создания директории её владельцем будет root. Во избежание сложностей в будущем лучше изменить владельца и назначить соответствующие права доступа.

В качестве примера назначим владельцем директории сам Apache (по умолчанию пользователь www-data).

Конфигурационный файл виртуального хоста

После создания директории виртуальный хост необходимо сконфигурировать.

Конфигурация виртуального хоста имеет довольно большое количество параметров. Остановимся лишь на основных из них.

  • Порт – TCP порт, которому сопоставлен данный виртуальный хост. Каждый виртуальный хост должен иметь собственный TCP порт!
  • ServerAdmin – email адрес администратора виртуального хоста;
  • DocumentRoot – путь к директории виртуального хоста;
  • ErrorLog – путь к файлу журнала ошибок;
  • CustomLog – обычно используется для пути к файлу журнала обращений к виртуальному хосту.

Параметры виртуальных хостов хранятся в конфигурационных файлах, которые расположены в директории /etc/apache2/sites-available. По сути, это обычный XML. Ниже, в качестве примера, приведён пример конфигурационного файла для виртуального хоста по умолчанию, который разворачивается вместе с Apache и которому сопоставлен стандартный TCP порт 80.

В оригинале данный файл содержит ряд объёмных комментариев. Здесь они вырезаны и оставлены только непосредственно сами параметры виртуального хоста.

Обратите внимание, что TCP порт указан в конце открывающего тега после двоеточия.

Создадим конфигурационный файл для нашего виртуального хоста при помощи команды touch.

После этого внесём в него необходимые сведения о конфигурации сервера. Также дополнительно добавим в него параметры, которые сделают доступным использование .htaccess.

Отредактировать конфигурационный файл можно в любом текстовом редакторе. Для примера воспользуемся nano.

Содержимое конфигурационного файла виртуального хоста после редактирования:

Если поддержка .htaccess включена глобально в конфигурационном файле apache2 для родительской директории (в данном случае это /var/www), то включать её отдельно для каждого виртуального хоста нет необходимости.

Прослушивание порта

Наш виртуальный хост сконфигурирован, но, если его активировать он всё равно будет не работоспособен.

Дело в том, что по умолчанию Apache прослушивает только 80 порт, а виртуальный хост сконфигурирован для работы на 81 порту.

Список портов, которые прослушивает Apache, хранится в файле /etc/apache2/ports.conf.

Найдём в этом файле строку:

Добавим после неё строку:

И сохраним файл.

Активация и деактивация виртуального хоста.

Теперь остаётся только активировать виртуальный хост.

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

Чтобы изменения вступили в силу обновляем конфигурацию Apache:

Команда reload позволяет обновить конфигурацию Apache без его остановки.

Если по каким-либо причинам требуется деактивировать виртуальный хост, нужно выполнить команду a2dissite. Её работа аналогично команде a2ensite рассмотренной выше.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *