Веб-сервер Apache и его конфигурирование
| |
|
Данный раздел в основном посвящен нашим пользователям, использующим тарифный план "Профессионал". Именно
им доступны конфигурационные файлы веб-сервера, что дает возможность клиенту
изменять его настройки наиболее гибко. Кроме того, Вы сможете найти
достаточно много полезной информации о веб-сервере Apache в этом разделе.
Apache является
высокопроизводительным, гибко конфигурируемым и расширяемым http-сервером.
Используемая нами версия - 1.3.33. Надо отметить, что мы стараемся
поддерживать актуальность версии Apache.
Для расширения функций Apache используются так называемые модули. Модули
подразделяются на стандартные (входящие в дистрибутив Apache) и внешние,
являющиеся отдельными продуктами.
Внешние дополнительные модули позволят Вам сделать Ваш сайт еще более
привлекательным. Мы предлагаем Вашему вниманию самые мощные и популярные из
них - с их помощью Вы сможете "достраивать" Ваш сайт как с помощью готовых
модулей, так и писать расширения, предназначенные только для Вас.
Наиболее часто задаваемые вопросы по Apache
Мы подготовили для Вас удобную начальную конфигурацию
Вашего сервера. В ~/www располагаются Ваши web страницы (DocumentRoot), по
умолчанию cgi должны быть расположены в каталоге ~/vcgi, файл конфигурации
сервера должен располагаться в ~/proff/conf/httpd.conf, ServerRoot всегда
расположен в ~/proff. Базовая конфигурация Apache включает в себя
стандартные модули, позволяющие Вам:
- использовать imagemap (mod_imap),
- настраивать, как будет записываться история обращений к Вашему сайту (mod_log_config),
- устанавливать переменные окружения из конфигурации apache (mod_env),
- просматривать конфигурацию и статус Вашего сервера с помощью веб-браузера (mod_status),
- создавать динамические документы с помощью SSI - server side includes (mod_include),
- автоматически индексировать директории, для которых Вы не предусмотрели индексного файла
(mod_autoindex, mod_dir),
- расширять функциональность Вашего сервера с помощью внешних программ (mod_cgi, mod_actions),
- перенаправлять обращения пользователей к Вашему сайту (mod_alias),
- защищать Ваш сайт (mod_access, mod_auth, mod_auth_db),
- создавать пользовательские страницы на Вашем сайте (mod_userdir),
- иметь полный контроль над тем, как сервер будет обрабатывать Ваши страницы для самых
разнообразных программных пользователей (mod_mime, mod_negotiation, mod_asis, mod_setenvif.c),
- динамически (run-timе) загружать Ваши модули, которые Вы можете установить самостоятельно (mod_so),
а также использовать внешние, дополнительные модули, которые позволят Вам
сделать Ваш сайт еще более привлекательным. Мы предлагаем Вашему вниманию
самые мощные и популярные из них - с их помощью Вы сможете "достраивать" Ваш
сайт как с помощью готовых модулей, так и писать расширения, предназначенные
только для Вас. Внешние модули позволят Вам:
- хранить информацию о защите Ваших страниц и пользователей в базе данных MySQL (mod_auth_mysql),
- использовать при разработке вашего сайта популярные языки web-программирования - perl (mod_perl) и php (mod_php).
Для изменения настроек сервера Apache необходимо
отредактировать файл конфигурации httpd.conf. Эту операцию можно произвести
из Unix-shell. Данный файл находится в директории ~/proff/conf/ и имеет
следующий формат:
директива значение
Полное описание директив сервера Apache можно найти на
сайте разработчиков - http://www.apache.org/docs/mod/directives.html
Для того, чтобы изменения вступили в силу после внесения
изменений в конфигурацию, сервер необходимо рестартовать.
Файл конфигурации Вашего Apache должен быть всегда в
рабочем состоянии. Если Вы вносите в него изменения, то рекомендуемая
последовательность действий такова:
- скопировать файл конфигурации во временный файл (cp httpd.conf httpd.new.conf),
- внести изменения во временный файл (joe httpd.new.conf),
- протестировать временный конфигурационный файл на формальную
правильность (/www/bin/httpd -d ~/proff -t -f conf/httpd.new.conf)
- в случае положительного результата переместить временный файл на место
постоянного файла конфигурации (mv httpd.new.conf httpd.conf),
- рестартовать apache (aprestart soft)
Вы также можете использовать другие режимы рестарта.
Важно понимать, что формальная проверка конфигурации не гарантирует
полной правильности, так как проверяются только синтаксис самого
конфигурационного файла. Однако могут существовать внешние по отношению к
конфигурационному файлу источники, которые могут вызвать ошибки при старте
сервера - например, perl-модули, загружаемые в конфигурационном файле
Apache.
Для того, чтобы рестартовать Ваш сервер, Вы можете
воспользоваться утилитой aprestart, которая имеет следующие аргументы:
soft - "мягкая" перестартовка Apache, не теряющая
пользовательских сооединений.
hard - "жесткая" перестартовка Apache. Все пользовательсие
соединения, имеющиеся на момент перестартовки, будут потеряны. Эту опцию
нужно применять в случае необходимости полной синхронизации по конфигурации
обрабытывающих запросы пользователей процессов. В случае "мягкой"
перестартовки, запросы пользователей, обрабатываемые Apache'ем в момент
рестарта, будут обработаны по старой конфигурации, в все новые запросы - уже
по новой конфигурации. В случае "жесткой" перестартовки обрабатываемые
запросы пользователей будут отброшены, и все новые запросы будут
обрабытываться по новой конфигурации.
stop - полная остановка Apache с завершением всех процессов. Ваш
Apache будет поднят по первому обращению к нему пользователей.
Чаще всего сервер не стартует из-за ошибок в файле
конфигурации. В случае ошибок при старте сервера, Ваш сервер будет помечен
"плохим" и его рестартовка будет отложена на 5 минут. То есть для
введения сервера в работу Вам необходимо проверить его файлы конфигурации и
привести их в рабочее состояние. При первом же запросе пользователей к
Вашему серверу после сброса установки "плохой" и проверки
правильности конфигурации - Ваш сервер продолжит работу.
В базовой конфигурации сервер ведет два протокола:
access_log: в данный протокол пишутся данные о клиентах,
заходивших на сервер, запрашиваемых документах, времени обращения
error_log: в данный протокол пишутся все сообщения об ошибках
(ошибки при старте сервера, ошибки авторизации и т.п.)
Формат данных протоколов можно изменять. Для этого в
базовой конфигурации сервера включен модуль mod_log_config, содержащий
следующие основные директивы:
CustomLog: в качестве параметра задается имя файла, формат
которого необходимо изменить. Например: CustomLog logs/access_log
LogFormat: данная директива задает формат файла с протоколом.
Директива имеет следующий формат: LogFormat аргументы
Далее приводятся описание некоторых аргументов.
%b: количество байт переданных в ответ на запрос (без учета http-заголовка)
%f: имя запрошенного файла
%{FOOBAR}e: значение переменной окружения FOOBAR
%h: удаленный хост, с которого пришел запрос
%P: номер дочернего процесса, обслужившего запрос
%r: первая строка http-запроса
%t: время запроса
%Т: время, затраченное на обработку запроса
%u: имя пользователя (если запрашиваемый документ защищен паролем)
%U: запрошенный URL
Более подробную информацию по модулю mod_log_config, можно
получить из данного
документа.
В базовой конфигурации сервера, в качестве директории для
cgi-скриптов прописана директория ~/vcgi. Эта директория описана в файле
httpd.conf двумя директивами:
ScriptAlias /cgi-bin/ /path/to/vcgi/
Alias /cgi-bin/ path/to/vcgi/
<Directory path/to/vcgi/>
AllowOverride None
Options ExecCGI FollowSymLinks
Order allow,deny
Allow from all
</Directory>
Следовательно, директорию, из которой будут вызываться
cgi-скрипты, можно изменить, внеся соответствующие изменения в файл
конфигурации сервера.
На хостинговых машинах установлена утилита apxs,
предназначенная для автоматизации сборки и установки внешних модулей для
сервера Apache.
Как указано в документации, apache на хостинге собран и
запущен с модулем mod_so, который позволяет пользователем подключать к
серверу свои собственные или написанные третьей стороной модули в формате
DSO (Dynamic Shared Object). Это дает возможность расширить функциональность
http-сервера и добавить к нему принципиально новые возможности.
Подобно архиву CPAN, есть и подборка готовых модулей для apache.
Несколько примеров:
HTML::Embperl - позволяет интегрировать инструкции на языке Perl прямо в
код веб-страниц
mod_access_referer - дает возможность управлять доступом посетителей к
страницам сайта, основываясь на информации о том, откуда произошел заход на
Ваш сервер
mod_text - простое перекодирование текстовых файлов в html формат в
режиме online
Поискать нужный модуль можно на странице http://modules.apache.org. Воспользуйтесь
поисковой системой на этом сайте для того, чтобы найти нужную программу.
Кроме того, Вы можете написать собственные apache модули
для расширения функциональности своего сервера. Модуль имеет возможность
работать непосредственно с API сервера, что позволяет использовать самые
низкоуровневые возможности Apache.
Компиляция и установка модулей
Утилита apxs находится в каталоге /www/bin. Для
ознакомления с доступными ключами этой программы запустите ее из unix shell
без параметров - /www/bin/apxs. Полную документацию по apxs можно получить
на странице http://httpd.apache.org/docs/programs/apxs.html.
Исходный текст готовых модулей обычно содержится в
соответствующем файле-архиве в формате tar/gzip. Раскройте архив в нужном
каталоге командой tar -zxf archive.tgz, где archive.tgz – имя загруженного
Вами архива.
Далее, в общем случае, нужно прочитать инструкцию по
установке конкретного модуля. Обычно это файл с именем, содержащим слова
типа README или INSTALL - посмотрите на список файлов, возникших после
распаковки архива. Иногда бывает так, что для установки модуля потребуется
совершить какие-либо действия помимо тех, что описываются в данном
документе.
В общем случае, среди прочих файлов будет и файл с
расширением .c, с которым мы и будем работать. Если, например, это файл
mod_test.c, выполните команду
/www/bin/apxs -i -a -c mod_test.c
В результате выполнения этой команды apxs откомпилирует
исходный текст модуля в данном случае в файл mod_test.so, скопирует в
подкаталог proff/libexec в Вашем домашнем каталоге и добавит вызов модуля
директивой LoadModule в конфигурационный файл Вашего Apache
(~/proff/conf/httpd.conf). Особое внимание перед запуском apxs нужно
обратить на то, чтобы каталог ~/proff/libexec реально существовал. Если его
нет, нужно создать его командой mkdir ~/proff/libexec.
После выполнения описанной процедуры необходимо
перезапустить Apache командой aprestart hard. Только тогда модуль начнет
работать. Если после выполнения этой операции Ваш сервер перестал работать,
посмотрите причину этого происшествия в файле-протоколе ошибок. Путь к нему
можно посмотреть в файле конфигурации сервера -
~/proff/conf/httpd.conf.
Для отключения загруженного модуля удалите его из файла конфигурации и
перезапустите http-сервер.
В случае возникновения трудностей в использовании apxs,
обращайтесь в службу технической
поддержки, пожалуйста.
Ниже приводится список полезных ссылок на сайты, посвященные серверу
Apache.
http://www.apache.org - главный сайт разработчиков сервера Apache,
http://www.apache.org/docs/mod/directives.html - описание директив сервера,
http://www.apache.org/docs/mod/ - описания многих модулей.
http://modules.apache.org/doc/Intro_API_Prog.html
- программирование с использованием Apache API