Альтернативный подход к созданию виртуальных доменов предполагает непосредственное описание каждого из них. Для этого в конфигурационном файле Apache предусмотрены две специальные директивы.
•
NameVirtualHost
. Данная директива указывается в главном конфигурационном файле Apache и информирует сервер о том, что вы собираетесь использовать виртуальные узлы. В качестве значения этой директивы чаще всего указывается символ
*
; при этом необходимо определять виртуальные домены для поддержки всех типов обращения к серверу. Кроме того, значением опции
NameVirtualHost
может
быть IP-адрес, связанный с сетевым интерфейсом; в этом случае конфигурация основного сервера применяется ко всем запросам, за исключением запросов, переданных через этот интерфейс, и запросов, соответствующих определению виртуального узла.
•
<VirtualHost>
. Данная директива указывает на начало блока, содержащего определение виртуального домена. Для этой директивы задаются те же значения, что и для директивы
NameVirtualHost
. Признаком окончания блока служит директива
</VirtualHost>
. В состав блока включаются директивы, определяющие конфигурацию виртуального домена; здесь вы можете указать многие из тех директив, которые используются для настройки сервера, не поддерживающего виртуальные узлы.
В составе блока, сформированного с помощью
<VirtualHost>
, обычно указываются директивы
ServerName
(она определяет имя, которому соответствует данный блок) и
DocumentRoot
. При необходимости вы также можете настроить другие характеристики сервера, например разрешить выполнение CGI-сценариев. В качестве примера рассмотрим следующий фрагмент конфигурационного файла, который описывает два виртуальных Web-узла:
Если сервер настроен подобным образом, то при обращении к нему посредством имени
www.threeroomco.com
он будет предоставлять клиенту статические файлы, которые находятся в каталоге
/home/httpd/threeroomco/html
, или запускать на выполнение сценарии, содержащиеся в каталоге
/home/httpd/threeroomco/cgi-bin
. Если же в запросе указано имя
www.pangaea.edu
, то статические файлы будут извлекаться из каталога
/home/httpd/pangaea-u/html
, а выполнение CGI-сценариев будет запрещено.
В отличие от
VirtualDocumentRoot
, использование директивы
<VirtualHost>
позволяет настроить каждый виртуальный узел и размещать документы в произвольных позициях файловой системы. С другой стороны,
VirtualDocumentRoot
предельно упрощает добавление новых доменов; для этого достаточно создать новый каталог. В большинстве случаев администраторы предпочитают использовать директиву
<VirtualHost>
, однако вы можете выбрать любой из этих способов, исходя из особенностей поставленной перед вами задачи.
Создание содержимого Web-узла
Несмотря на то что данная глава в основном посвящена особенностям настройки и выполнения Web-сервера, администратору, осуществляющему поддержку Web-сервера, необходимо представлять себе, как создаются документы, которые размещаются на Web-
узле. Некоторые типы Web-страниц (точнее, средства для их динамической генерации) рассматривались в предыдущих разделах, однако основную часть данных, расположенных на Web-узлах, составляют HTML-документы. Для создания HTML-документов, а также файлов, которые могут использоваться ими (например, файлов с графическими данными), часто применяются специальные инструментальные средства. Научившись работать с этими инструментами и зная особенности интерпретации HTML-кода клиентскими программами, вы сможете без труда создать Web-узел, пригодный для просмотра с помощью наиболее популярных современных броузеров.
Форматы данных, используемых при создании Web-узла
Несмотря на наличие специализированных инструментальных средств, необходимо знать форматы основных данных, применяемых при создании Web-узлов. Как правило, основное содержимое Web-узла составляют статические Web-страницы, включающие текстовую и графическую информацию.
Основу большинства Web-страниц составляет HTML-файл. Этот файл содержит текстовые данные, пригодные для редактирования с помощью обычного текстового редактора. Пример простого HTML-файла приведен в листинге 20.2. Данные, содержащиеся в HTML-файле, делятся на две категории: текст, предназначенный для отображения в окне броузера, и последовательности символов, помещенные в угловые скобки, называемые дескрипторами. Дескрипторы представляют собой элементы форматирования, а также выполняют некоторые другие функции. Большинство дескрипторов используются парами, каждая из которых состоит из открывающего и закрывающего дескрипторов. Открывающий и закрывающий дескрипторы имеют одно и то же имя, но перед именем закрывающего дескриптора указывается символ
/
. В состав открывающего дескриптора часто входят атрибуты, уточняющие действия дескриптора. Например, с помощью атрибутов могут задаваться размеры изображения и содержащий его файл, цвет фона и текста и т.д. Некоторые из дескрипторов формируют ссылки на документы, расположенные на том же сервере, либо на других Web-серверах.
Назначение некоторых из дескрипторов, приведенных в листинге 20.2, очевидно, другие требуют более подробного рассмотрения. Ниже представлено описание дескрипторов, наиболее часто встречающихся в HTML-документах.
Листинг 20.2. Пример HTML-файла
<!DOCTYPE html public "-//IETF//DTD HTML 2.0//EN">
Данная Web"=страница содержит <А href="#"> гипертекстовую ссылку. </A>
</BODY>
</HTML>
•
<HTML>
. Данный дескриптор сообщает о том, что документ является HTML-документом. Большинство броузеров не требует наличия этого дескриптора, но желательно указывать его, так как он предусмотрен спецификацией языка.
•
<HEAD>
. HTML-документ делится на заголовок и тело документа. В заголовке в основном содержится информация, не предназначенная для отображения (за исключением содержимого элемента
<TITLE>
). Заголовок содержится между открывающим и закрывающим дескриптором