Apache своими руками

Apache своими руками

Сегодняшняя статья придется по нраву любителям классических и надежных решений. В прошлой статье, посвященной пакету "Денвер" (КГ №20), рассказывалось о быстром способе установки web-сервера Apache и сопутствующих компонентов. Это поистине "быстрый старт" для web-программирования, но в упомянутой статье были затронуты и недостатки такого решения.

Если вы пользовались такими пакетами достаточно долго, то должны знать о главном их недостатке: в некоторых случаях скрипты, замечательно выполнявшиеся с их помощью, на "настоящем" сервере начинали вести себя несколько иначе. Это связано с некоторыми особенностями пакетных решений.
Итак, вы решили, что для ваших целей наилучшим выбором будет установка полноценного Apache для Windows со всеми сопутствующими дополнениями. При желании можно найти массу руководств типа "как настроить Apache за пять минут". Как правило, они содержат перечень пошаговых инструкций, говорящих, что надо внести в конфигурационные файлы, чтобы сервер заработал. На пояснение требуемых действий ни места, ни желания уже не остается: что вы хотите — это же "за пять минут". В принципе, шансы получить работоспособный сервер при таком подходе есть. Загвоздка в другом: если вдруг чего-нибудь не получится, пользователь просто не будет знать, где искать ошибку, ведь он только повторил действия, значение которых ему никто не объяснял. Конечно, есть прекрасные источники, содержащие полное описание Apache со всеми тонкостями его работы и настройки, но ведь мы исходим из того, что освоение Apache для нас не цель, а средство обеспечения других задач.
Вначале следует сказать несколько слов насчет общей структуры данного сервера. Apache состоит из ядра, которое обеспечивает самые основные функции, всегда присутствующие в стандартной поставке, и модулей, расширяющих его возможности. Некоторые модули по умолчанию входят в дистрибутив. Другие необходимые модули можно впоследствии подключить к Apache. Таким образом, например, реализуется поддержка SSL, или языков программирования. Модуль можно добавить прямо в исполняемый код сервера, если, конечно вы решите откомпилировать Apache самостоятельно. С модулями можно работать и как с разделяемыми объектами, которые можно будет подключать или отключать, не компилируя заново сервер. Если есть такая необходимость, то при наличии соответствующей квалификации можно написать собственный модуль, решающий какие-нибудь задачи, не охваченные пока другими разработчиками.
Apache обладает весьма гибкими возможностями настройки. Такие задачи решаются путем правки текстовых конфигурационных файлов. Это утверждение справедливо и для многих подключаемых модулей. Такие файлы состоят из набора директив и сопоставленных им опций, а также комментариев. Число возможных комбинаций настроек измеряется тысячами, со многими вы, скорее всего, сталкиваться не будете, но с основными все-таки стоит ознакомиться. Подробнее о них мы поговорим ниже.

Первым делом стоит загрузить дистрибутив Apache. Это можно сделать, зайдя на официальный сайт по адресу www.apache.org. Здесь необходимо сделать небольшое замечание по поводу выбора версии. Как известно, последние на сегодня версии этого сервера с обозначениями 2.0.хх пока испытывают некоторые затруднения в своем распространении. В силу различных причин многие продолжают использовать версии 1.3.хх. Поэтому, если вы планируете заниматься разработкой под конкретный хостинг, не поленитесь поинтересоваться, какая именно версия Apache на нем работает, и сделайте соответствующий выбор. С другой стороны, изменения, внесенные в Apache 2.0.xx, наиболее актуальны именно для Windows-версии этого сервера. В любом случае в контексте нашего разговора номер версии Apache некритичен, принципиальной разницы в настройке не будет, так что, если вы хотите просто поработать с новыми версиями Apache, можете смело их загружать — все последующие операции на них проверялись и приведут к желаемому результату.
Процесс инсталляции Apache для Windows весьма прост. В ее ходе предстоит сделать выбор директории, в которую будет установлен сервер. Для более полной имитации Unix-системы можно создать структуру каталогов типа "имя_диска:\usr\local\apache", куда и произвести установку. Впоследствии при таком выборе будет немного проще установить, например, Perl, да и с переносом файлов на реальный сервер путаницы будет меньше. Если вам не важна подобная привязка, можете устанавливать Apache, куда вам будет угодно. По умолчанию предлагается путь C:\Program Files\Apache Group. Если вы устанавливаете Apache 2.0.xx, вам на этапе установки еще будет предложено ввести контактный адрес электронной почты, отображаемый в некоторых служебных сообщениях будущего сервера. Не бойтесь ошибиться — все эти настройки потом можно будет при необходимости исправить. Дальнейший процесс непосредственного личного вмешательства не требует.
Если вы используете Windows семейства NT, то желательно установить Apache как службу. Для этого выберите пункт Install Apache as Service в группе Apache. Аналогичного результата можно добиться и с помощью команды apache -i.
В случае Apache 2.0.xx никаких дополнительных действий не требуется, работа в качестве службы является штатным режимом и настраивается в ходе инсталляции, после завершения которой в системном трэе появляется соответствующий значок, с помощью которого можно открыть окно Apache Server Monitor (рис.1).

Данный компонент позволяет производить операции запуска, остановки и перезапуска сервера, а также некоторые другие. Кроме этого, здесь видна версия сервера и его состояние.
Следующий важный этап — это конфигурация Apache. В директории Apache\conf находятся главные конфигурационные файлы сервера. Далее нас будут интересовать httpd.conf и mime.types.
Все основные параметры сервера задаются в файле httpd.conf. Он состоит из нескольких секций, содержащих собственные наборы директив. Пройдемся по нему от начала до конца и разберем значение наиболее важных для нашей задачи директив.
Первая секция содержит настройки, относящиеся к серверу в целом. Начнем с директивы ServerRoot, которая определяет корневой каталог сервера. Это позволяет в дальнейшем использовать в различных ситуациях относительные пути. Здесь уже будет указан адрес, по которому вы установили Apache, но лучше убедиться в правильности пути лично. Обратите внимание на слэши, используемые в путях — это еще один признак происхождения Apache. Далее идет группа раскомментированных директив, влияющих на производительность сервера. Для нас они некритичны, и можно оставить все как есть.
Вторая секция задает параметры так называемого основного (main) сервера, определяющего поведение всех работающих под данным экземпляром Apache web-узлов, если для них не заданы особые свойства.

Директива ServerName содержит имя сервера. Для того чтобы она работала, имя должно быть известно DNS-серверам. Можно указать IP-адрес. Самым простым решением будет указать имя localhost. Кроме этого, директивой Port указывается порт, используемый Apache для отслеживания подключений. Для http стандартным номером, как известно, является 80. В случае использования Apache 2.0.хх номер порта указывается через двоеточие сразу после значения директивы ServerName, например:
ServerName www.ourtestservername.net:80

Далее необходимо обратить внимание на важную директиву DocumentRoot, которая задает путь к каталогу, в котором будут находиться файлы будущего или уже имеющегося сайта. Впоследствии, руководствуясь данной директивой, Apache будет выбирать из этого каталога все запрошенные пользователем файлы. При установке Apache здесь, скорее всего, будет прописан путь к каталогу htdocs, который находится в директории Apache. Если вам необходимо изменить это значение, создайте соответствующий каталог для своих документов и пропишите для этой директивы значение, содержащее полный путь к нему.
Необходимо поработать и с директивой AllowOverride, которая может помочь в разрешении некоторых конфликтных ситуаций. Здесь надо сделать небольшое пояснение. Дело в том, что один из способов управления доступом к определенным каталогам, содержащим файлы ваших проектов, подразумевает создание в каждом каталоге специального настроечного файла с именем .htaccess, где определяются необходимые настройки. Они могут противоречить настройкам основного конфигурационного файла, а их просмотр замедляет работу сервера, поэтому значение директивы AllowOverride лучше установить None.

Следующим шагом станет настройка DirectoryIndex. Данная директива определяет список файлов, которые будут по умолчанию предоставляться в ответ на запрос по конкретному адресу. Изначально предлагается значение index.html. Дополните этот список своими вариантами. Как минимум стоит добавить index.cgi и index.shtml. Если вы планируете в качестве стартовой страницы своего проекта использовать документ, написанный с использованием какого-либо языка программирования, добавьте к DirectoryIndex имена, содержащие соответствующие расширения. После получения запроса Apache просматривает каталог и, если не находит там файлов с именами, перечисленными в DirectoryIndex, возвращает страницу со списком всех файлов данного каталога. Кстати говоря, внешний вид этой страницы можно изменять с помощью директивы IndexOptions FancyIndexing. C помощью директивы AddIcon каждому типу содержимого файла можно сопоставить свою иконку, которая появится в сгенерированном сервером списке.
Если планируется использование CGI и SSI, находятся и изменяются следующие строки:
AddHandler cgi-script .cgi
AddType text/html html htm shtml shtm
AddHandler server-parsed .shtml .shtm

Директива AddType связывает определенный MIME-тип с заданным расширением. Аналогичный эффект можно получить поработав с еще одним настроечным файлом Apache — mime.types. Директива AddHandler содержит некоторый дескриптор содержимого и сопоставляет его с одним или несколькими типами файлов. В нашем случае, в частности, использован дескриптор server-parsed, обозначающий, что для файлов с указанными расширениями серверу необходимо производить их анализ с целью выполнения вставок на своей, сервера то есть, стороне. Изначально используется восемь дескрипторов, из них один — isapi-isa — применяется только на платформе Windows. Кроме этого списка, при необходимости можно создавать и применять собственные дескрипторы.
Раз уже мы упомянули файл mime.types, необходимо сказать про него пару слов. Он также призван определять и контролировать отправку клиенту определенного типа данных, соотнесенных с конкретными расширениями. Текст там представлен перечнем MIME-типов и соответствующих расширений. Например:
application/msword doc

Третий раздел, httpd.conf, посвящен виртуальным хостам. Возникновение данного понятия связано с тем, что в практике реального применения Apache на одном сервере, как правило, работает множество узлов со своими специфическими требованиями к настройке.
Существует несколько разновидностей виртуального хостинга: создание пользовательских каталогов, виртуальный хостинг по IP, виртуальный хостинг по имени. Как правило, рекомендуется использовать последний вариант. В самом файле httpd.conf приведен пример такого решения. При необходимости разобраться в нем не составит большого труда — принципы настройки не отличаются от рассмотренных выше.
Протестируем работу сервера: создадим в каталоге, определенном ранее директивой DocumentRoot, файл index. html, внесем в него какой-нибудь текст и попытаемся открыть данный файл с помощью браузера, введя адрес http://localhost//. Этот элементарный тест позволит убедиться в принципиальной работоспособности сервера.
Приведенные примеры, безусловно, раскрывают только малую часть возможностей настройки Apache. Для более глубокого знакомства с этим предметом стоит обращаться к намного более объемным источникам, например, к документации, входящей в комплект дистрибутива Apache. Да это и не было целью данной статьи. В принципе, для того чтобы получить рабочий Apache на домашней машине, вполне можно ограничиться весьма скромным набором изменений в конфигурационных файлах. Главное здесь — с самого начала привыкнуть отчетливо разбираться, какой эффект вы желаете получить от своих действий, и осознанно принимать соответствующие решения в рамках ваших конкретных задач.
Полученный нами сервер Apache пока предоставляет в наше распоряжение только самые базовые возможности. Для наших же целей еще обязательно потребуется поддержка популярных языков программирования и работы с базами данных. Эти темы мы рассмотрим в следующий раз.

Алексей Кутовенко, alteridem@tut.by


Компьютерная газета. Статья была опубликована в номере 22 за 2003 год в рубрике soft :: интернет

©1997-2021 Компьютерная газета