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

HTTP-сервер ApacheИсходные данные:

  • сервер (VDS) с установленной Linux Ubuntu 14.04 (актуальная версия на момент написания статьи) и одним IP-адресом;
  • установленный LAMP (Linux+Apache+MySQL+PHP), актуальная версия Apache – 2.4;
  • несколько доменов;

Цель: сконфигурировать свой веб-сервер, который сможет содержать бесконечное количество сайтов.

Шаг 1: Подготовка веб-сервера

Для начала необходимо подготовить все файлы и папки для будущих сайтов. Файловая структура моего веб-сервера выглядит следующим образом:
Структура веб-сервера Apache
Изначально, после установки LAMP, у вас будет существовать только папка /var/www/html, к которой будет прикреплен один домен, указанный при установке. Чтобы начать добавлять дополнительные домены (создавать виртуальные хосты), нужно создать рядом с папкой html папку для второго сайта (в директории www создаем папку site.ru).

Помещаем сразу в site.ru файл index.html (или index.php с правами выполнения) с тестовыми данными.

В консоли всё это делается следующими командами:

cd /var/www

mkdir site.ru

cd site.ru

nano index.html

Здесь вписываем в index.html что-то вроде:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8" />
        <title>Мой сайт</title>
    </head>
    <body>
        <p>Hello, world!</p>
    </body>
</html>

Шаг 2: Подготовка домена

Теперь нам нужно настроить перенаправление домена на наш сервер. На примере панели 2domains (подобный интерфейс имеют многие регистраторы), заходим на вкладку Мои домены и нажимаем на site.ru:

Управление доменом 2domains

Выбираем Управление зоной DNS. Теперь нам нужно создать необходимые DNS-записи.

DNS-записи домена

Создаем 3 записи: 2 записи типа «А» и одну запись типа «CNAME».
Первые две записи указывают, что ваш домен и все поддомены находятся по заданному IP-адресу, в последняя запись указывает, что www.site.ru должна перенаправлять на site.ru.

NS-сервера рекомендую использовать регистратора, в дальнейшем можно поднимать и свой DNS-сервер, но пока это не нужно.

Изменение DNS-записей может происходить в течение суток, поэтому чтобы не ждать изменения, мы можем указать на своем ПК соответствие IP–домен в файле hosts (для Windows).

Для этого на своем компьютере заходим в папку C:\\Windows\System32\drivers\etc и редактируем файл hosts (с помощью обычного блокнота или Notepad++), дописав в конец файла строчку:

82.146.32.167 site.ru

После этого ваш браузер не будет запрашивать у провайдера IP-адрес для домена site.ru, а сразу пойдет на указанный IP.

После того, как DNS-записи обновятся, эту строчку можно будет убрать.

Шаг 3: Создание виртуальных хостов

Виртуальный хост (или VirtualHost) – это директива веб-сервера, которая указывает на соответствие домена, IP-адреса и директории каждого из сайтов, размещенных на сервере.

Для того, чтобы указать серверу какой IP-адрес и директория соответствует определенному сайту (домену), для каждого домена создается свой конфигурационный файл (расширения .conf) в директории /etc/apache2/sites-available/, например, site.ru.conf.

cd /etc/apache2/sites-available

nano site.ru.conf

Содержание файла следующее:

<VirtualHost *:80>
ServerAdmin admin@site.ru
ServerName site.ru
ServerAlias www.site.ru
DocumentRoot /var/www/site.ru
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

Здесь можно задать, чтобы логи для каждого из сайтов разделялись. Для этого, вместо

ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined

нужно прописать:

ErrorLog /var/www/site.ru/error.log
CustomLog /var/www/site.ru/access.log combined

предварительно создав файлы error.log и access.log в папке сайта.

На следующем этапе нужно создать симлинки с /etc/apache2/sites-available/ на /etc/apache2/sites-enabled (другими словами, «включить сайт»):

a2ensite site.ru

И, чтобы изменения вступили в силу, перезапускаем Apache полным перезапуском:

service apache2 restart

или «мягкой перезагрузкой» (сервер только перечитает конфиги):

service apache2 reload

Теперь можно открыть в браузере site.ru и мы должны увидеть нашу страницу index.html:

Hello World HTML

Всю описанную процедуру проводим для каждого сайта, который нужно добавить на сервер. Как видите, процедура это достаточно простая и понятная. Успехов в ваших начинаниях!

Теги:, ,
Комментарии: