VITRAGE: Теория
· Компиляция и установка
· Идеология VITRAGE
· Оптимизация HTML
· Создание виртуальных хостов
· Создание структуры доменов
· Ваш собственный язык гипертекстовой разметки
 
Практика
· Немного о стилях парсинга
· Примеры использования
· Работающие сайты
· Хостинги
· Вопросы и ответы
· Задать вопрос
· E-mail
 
О модуле
· Что такое VITRAGE
· История модуля
· Загрузить модуль
· Документация целиком
· Загрузить документацию в формате MS Word
· Слово автора
· English version
 
Технология VITRAGE
Один из витражей города Иркутска
Исходный код
· VHTML-код этой страницы (в новом окне)
· VHTML-код файла vitrage (в новом окне)
 
· Применение 2. Создание виртуальных хостов (доменов) за мгновение

Перед веб-разработчиками (а особенно перед разработчиками, создающими большие многопользовательские проекты) часто возникает задача создания значительного количества виртуальных хостов (доменов) с наименьшими трудозатратами.

Традиционно для создания нового виртуального хоста требуется создание каталога, в котором будет расположено содержимое соответствующего домену сайта, внесение изменений в конфигурационный файл Apache (httpd.conf) и перезапуск веб-сервера Apache для принятия всех изменений.

Модуль VITRAGE позволит решить эту задачу за мгновение, "в один ход", сведя создание нового виртуального хоста к созданию каталога.

Итак, предположим, что в конфигурационном файле Apache (httpd.conf) присутствует следующее описание виртуального хоста:

<VirtualHost 10.1.1.1>
ServerName domain.ru
ServerAdmin webmaster@domain.ru
DocumentRoot /home/web/domain.ru/www
ErrorLog /home/web/domain.ru/log/error.log
CustomLog /home/web/domain.ru/log/access.log common
CustomLog /home/web/domain.ru/log/referer.log referer
CustomLog /home/web/domain.ru/log/agent.log agent
</VirtualHost>

Используя в секции VirtualHost файла httpd.conf ключевые слова VITRAGE VGMultiSitePath и VGMultiDomainLevel, разработчик сможет осуществить следующее: каждый подкаталог вида некое.доменное.имя, созданный в каталоге /home/web/domain.ru/www, будет автоматически поставлен в соответствие домену некое.доменное.имя, после чего адрес http://некое.доменное.имя будет естественным образом указывать на содержимое каталога /home/web/domain.ru/www/некое.доменное.имя.

Обозначенные ключевые слова нельзя указывать в файлах .htaccess в силу логической последовательности восприятия ключевых слов и обработки каталогов веб-сервером Apache.

Прежде всего, рассмотрим действие ключевого слова VGMultiSitePath. Значением этого параметра является путь к тому каталогу, в котором будут создаваться образующие домены подкаталоги. Чаще всего значение VGMultiSitePath совпадает со значением параметра DocumentRoot из соответствующей секции VirtualHost файла httpd.conf (хотя это вовсе не обязательно!):

VGMultiSitePath /home/web/domain.ru/www

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

Допустим, мы хотим создать виртуальные хосты host1.domain.ru, host2.domain.ru и subhost.host2.domain.ru. Для этого, с учетом описанных выше настроек, нам потребуется лишь создать такие каталоги:

/home/web/domain.ru/www/host1.domain.ru/
/home/web/domain.ru/www/host2.domain.ru/
/home/web/domain.ru/www/subhost.host2.domain.ru/

После выполнения этого действия соответствующие адреса (http://host1.domain.ru, http://host2.domain.ru и http://subhost.host2.domain.ru) начнут функционировать незамедлительно.

Если есть необходимость в работе адреса http://domain.ru, следует дополнительно создать каталог

/home/web/domain.ru/www/domain.ru/

- и это важная особенность данного применения модуля VITRAGE.

Если вы хотите, чтобы наряду с адресами http://host1.domain.ru, http://domain.ru функционировали и адреса http://www.host1.domain.ru, http://www.domain.ru, вам потребуется создать соответствующие каталоги (www.host1.domain.ru, www.domain.ru), содержимое которых будет идентично содержимому каталогов host1.domain.ru, domain.ru. В UNIX-подобных операционных системах очень удобно выполнять такую операцию с использованием "символьных ссылок" (symlinks), обычно создающихся командой ln.

Поскольку доменные имена независимы от регистра их написания (т.е. домен HOST.domain.ru равнозначен домену host.domain.ru), следует создавать соответствующие каталоги, используя строчные буквы. Каталоги, созданные с использованием заглавных букв, вероятнее всего, не будут функционировать должным образом.

Ключевое слово VGMultiDomainLevel определяет максимальный уровень для доменов, которые могут быть образованы созданием каталогов. Этот параметр может принимать значение любого неотрицательного целого числа, начиная с "0" (по умолчанию; уровень доменов не ограничен).

Если мы заранее знаем, что максимальный уровень доменов, который мы будем создавать, не превышает 3 (домен третьего уровня - это домен вида host.domain.ru), описание ключевого слова VGMultiDomainLevel должно быть следующим:

VGMultiDomainLevel 3

При этом (внимание!) обращение http://www.host1.domain.ru (и вообще любой адрес вида http://большой.уровень.host1.domain.ru) будет воспринято модулем как обращение, равнозначное http://host1.domain.ru. То есть все запрашиваемые виртуальные хосты, имеющий уровень выше заданного в VGMultiDomainLevel, будут "обрезаться" до максимально допустимого уровня, после чего уже будет произведено обращение к соответствующему каталогу.

Не следует забывать, что данная схема не будет работать без соответствующим образом настроенного DNS. Все создаваемые доменные имена должны быть описаны в DNS, а их IP-адреса должны быть идентичны IP-адресу, указанному в конфигурации Apache для соответствующего виртуального хоста (в нашем примере - 10.1.1.1).

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

ErrorDocument 404 /apache/not-found.html

вам потребуется либо помещать этот файл в каждом каталоге, преобразующемся в домен (чтобы любой адрес вида http://домен/apache/not-found.html был верным), либо изменить данную установку на один из следующих вариантов:

ErrorDocument 404 http://один.из.доменов/apache/not-found.html
ErrorDocument 404 "File not found

В первом случае вам достаточно будет иметь только одну копию файла not-found.html, во втором случае вместо HTML-файла в случае ошибки будет отображаться простое текстовое сообщение.