Альтернативный подход к созданию виртуальных доменов предполагает непосредственное описание каждого из них. Для этого в конфигурационном файле Apache предусмотрены две специальные директивы.
• NameVirtualHost. Данная директива указывается в главном конфигурационном файле Apache и информирует сервер о том, что вы собираетесь использовать виртуальные узлы. В качестве значения этой директивы чаще всего указывается символ *; при этом необходимо определять виртуальные домены для поддержки всех типов обращения к серверу. Кроме того, значением опции NameVirtualHost может быть IP-адрес, связанный с сетевым интерфейсом; в этом случае конфигурация основного сервера применяется ко всем запросам, за исключением запросов, переданных через этот интерфейс, и запросов, соответствующих определению виртуального узла.
• <VirtualHost>. Данная директива указывает на начало блока, содержащего определение виртуального домена. Для этой директивы задаются те же значения, что и для директивы NameVirtualHost. Признаком окончания блока служит директива </VirtualHost>. В состав блока включаются директивы, определяющие конфигурацию виртуального домена; здесь вы можете указать многие из тех директив, которые используются для настройки сервера, не поддерживающего виртуальные узлы.
В составе блока, сформированного с помощью <VirtualHost>, обычно указываются директивы ServerName (она определяет имя, которому соответствует данный блок) и DocumentRoot. При необходимости вы также можете настроить другие характеристики сервера, например разрешить выполнение CGI-сценариев. В качестве примера рассмотрим следующий фрагмент конфигурационного файла, который описывает два виртуальных Web-узла:
NameVirtualHost *
<VirtualHost *>
ServerName www.threeroomco.com
DocumentRoot /home/httpd/threeroomco/html
ScriptAlias /cgi-bin/ "/home/httpd/threeroomco/cgi-bin/"
</VirtualHost>
<VirtualHost *>
ServerName www.pangaea.edu
DocumentRoot /home/httpd/pangaea-u/html
</VirtualHost>
Если сервер настроен подобным образом, то при обращении к нему посредством имени 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">
<HTML>
<HEAD>
<TITLE>Пример Web"=страницы</TITLE>
</HEAD>
<BODY BGCOLOR="#FFFFFFF" TEXT="#000000">
<CENTER><H1 ALIGN= "CENTER">Пример Web"=страницы</H1></CENTER>
<IMG SRC="graphics/logo.jpg" ALT="Logo" WIDTH="197" HEIGHT="279">
<P>Данная Web"=страница содержит <А HREF="http://www.threeroomco.com/anotherpage.html"> гипертекстовую ссылку. </A></P>
</BODY>
</HTML>
• <HTML>. Данный дескриптор сообщает о том, что документ является HTML-документом. Большинство броузеров не требует наличия этого дескриптора, но желательно указывать его, так как он предусмотрен спецификацией языка.
• <HEAD>. HTML-документ делится на заголовок и тело документа. В заголовке в основном содержится информация, не предназначенная для отображения (за исключением содержимого элемента <TITLE>). Заголовок содержится между открывающим и закрывающим дескриптором <HEAD>.
• <TITLE>. Строка, заданная с помощью этого дескриптора, выводится в заголовке окна броузера. Эта же строка отображается в списке закладок.
• <BODY>. С помощью данного дескриптора формируется тело HTML-документа. В состав дескриптора <BODY> часто включают атрибуты, определяющие цвет текста и фона, и другие характеристики документа.
• <H1>. Заголовки позволяют делить текст документа на разделы и, как правило, отображаются шрифтом большего размера, чем обычный текст. Создавая код Web-страницы, вы можете включать в него заголовки различных уровней. Наивысшим считается уровень 1 (<H1>), а самым низким — уровень 6 (<H6>). В листинге 20.2 в дескрипторе <H1> содержится атрибут ALIGN, который сообщает Web-броузеру о том, что текст заголовка должен быть размещен по центру экрана. К сожалению, не все броузеры правильно обрабатывают атрибут выравнивания в составе заголовка, поэтому, чтобы обеспечить корректное отображение информации, его приходится дублировать дескриптором <CENTER>.