Apache2
Материал из Eludia.
Если бы ты остался с апачами, ты был бы окружен почетом и никогда не нуждался бы в деньгах.К. Май, «Виннету».
| Это устаревшая статья. Она хранится здесь на всякий случай, для памяти. Актуальные сведения по данной теме можно найти в статье Apache/mod_perl |
Содержание |
mod_perl 1 -> mod_perl 2
Здесь описаны некоторые проблемы, возникающие при переводе существующего приложения с Apache 1/mod_perl 1.x под Apache 2/mod_perl 2.x.
Синтаксис perl-секции
Если в mod_perl 1.x принят следующий синтаксис для выделения perl-секции в httpd.conf:
<perl> ... </perl>
то для mod_perl 2.x надо писать так:
<Perl > # Внимание, пробел! ... </Perl>
XS-модули
Некоторые perl-модули, часть которых написана на C (XS), могут стабильно функционировать под mod_perl 1 и вызывать обрушение системы под mod_perl 2. В частности, такое поведение выявлено у:
- JSON::XS под Win32 (по этой причине c mod_perl 2 приходится использовать JSON::PP);
- Text::Iconv под HP UX 11.3 / Itanium 2.
error.log
Это весьма неудобно, но в ErrorLog, заданный внутри VirtualHost, пойдут только ошибки, выявленные самим Apache (типа file not found) или ошибки компиляции perl. А STDERR для всех mod_perl-приложений (например, вывод warn) будет в общем серверном error.log.
В документации mod_perl 2.x описан способ исправления этой ситуации, однако если им воспользоваться, то переводы строк в многострочных сообщениях начинают заменяться на '\n', что чрезвычайно неудобно для отладки. Похоже, это такое системное решение в mod_perl 2.x: не давать писать прямо в файл, а предоставлять высокоуровневый интерфейс. При этом путь к общему логу ошибок доступен напрямую (Apache2::ServerRec::error_fname). Досадно.
Установка под Win32
Здесь описано, как настроить Eludia.pm-приложение под Win32-версией Apache 2 с использованием mod_perl 2. Данный рецепт отрабатывался под WinXP Pro.
Сценарий
- Установить a2_kit. После этого в списке сервисов появится, но не будет активен Eludia WEB Server (powered by Apache).
- Желательно git clone [git://github.com/do-/eludia.git ядро Eludia.pm] в поддиректорию Eludia.
- Скопировать (а лучше git clone) директории docroot и lib вашего приложения в Applications/sample.
- Создать БД, пользователя и прописать в Applications/sample/conf/httpd.conf параметры соединения, а также, возможно, прочие параметры Apache для данного VirtualHost'а.
- Заглянуть в "Web Server/conf/httpd.conf" на предмет порта, ServerName и прочих глобальных параметров. После этого остаётся только запустить сервис. Если он не запускается, открыть cmd-окно в "Web Server/bin", исполнить httpd.exe и читать "Web Server/logs/error.log" и "Applications/sample/log/error.log".
Что где лежит
В директории Web Server располагается Apache 2 со всеми своими модулями (Web Server/modules) и глобальным файлом конфигурации Web Server/httpd.conf. Общий протокол ошибок пишется в Web Server/logs/error.log.
В директории Perl находится интерпретатор Perl 5 (Perl/bin/perl58.dll) со всеми стандартными (Perl/lib) и дополнительными (Perl/site/lib) модулями, кроме Eludia.pm.
Директория Eludia содержит дистрибутив Eludia.pm. Она вынесена из Perl/site/lib для удобства обновления средствами SVN (адрес репозитория git://github.com/do-/eludia.git).
Директория Applications предназначена для размещения приложений. В дистрибутив включено приложение sample. Вы можете модифицировать его или добавить новые приложения. Структура директорий приложений не специфична для данного дистрибутива и описана в специальном разделе.
И, наконец, директория _scripts содержит скрипты для изготовления дистрибутивов при помощи Inno Setup. Разработав своё приложение и слегка модифицировав _scripts/a2_kit.iss, вы можете изготовить собственный инсталляционный комплект, аналогичный a2.exe.

