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.

Сценарий

  1. Установить a2_kit. После этого в списке сервисов появится, но не будет активен Eludia WEB Server (powered by Apache).
  2. Желательно git clone [git://github.com/do-/eludia.git ядро Eludia.pm] в поддиректорию Eludia.
  3. Скопировать (а лучше git clone) директории docroot и lib вашего приложения в Applications/sample.
  4. Создать БД, пользователя и прописать в Applications/sample/conf/httpd.conf параметры соединения, а также, возможно, прочие параметры Apache для данного VirtualHost'а.
  5. Заглянуть в "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.

Личные инструменты
Консультации
Разработчику
Администратору