Пример конфигурации VH Apache для работы mod_perl-сайта
Статьи
Пример VH
Первым шагом по внедрению и использованию mod_perl (кроме установки всего этого), является настройка virtual host для сайта, который будет использовать технологию mod_perl.
Пример virtual host для сайта с mod_perl
Listen 8008
ServerAdmin webmaster@site
ServerName test.ru
DocumentRoot /home/httpd/site/htdocs
Options Indexes Includes FollowSymLinks MultiViews
AllowOverride None
ErrorLog /home/httpd/logs/site-error_log
ScriptAlias /cgi-bin/ /home/httpd/site/pcgi/
Alias /pcgi/ /home/httpd/site/pcgi/
PerlOptions +Parent
PerlSwitches -I/home/httpd/site/pcgi
SetHandler perl-script
PerlResponseHandler ModPerl::RegistryPrefork
PerlOptions +ParseHeaders
Options +ExecCGI
Давайте последовательно разберем этот пример. Первая директива Listen 8008 включает прослушивание порта 8008 сервером Apache на компьютере, где он установлен. Это используется для простого обращения к разным сайтам на сервере с одним IP без использования DNS.
Далее описываем, к какому адресу мы привязываем VH. В нашем случае это 192.168.0.1:8008. Директивы ServerAdmin и ServerName можно назначить произвольно, сейчас они не важны.
Директива DocumentRoot определяет путь к корню сервера. Далее идет стандартная секция настройки опций для папки с документами. Директива ErrorLog устанавливает отдельный лог ошибок для VH, что необходимо для отладки приложений.
Директива ScriptAlias выполняет сразу две функции: установку опции на выполнение скриптов из директории и создает псевдоним для папки.
С директивы Alias начинается секция, непосредственно относящаяся к mod_perl. Alias дает псевдоним для пути /pcgi/, который мы будем использовать для обращения к скриптам с mod_perl.
Инструкция PerlOptions дает возможность использовать отдельный компилятор со своей средой (для этого требуется multi-threaded версия perl). Следующая инструкция PerlSwitches добавляет указанную папку в @INC компилятора (отдельного для этого VH).
Далее определяем опции для спевдонима /pcgi (для mod_perl-скриптов). Первые три инструкции стандартны для mod_perl директорий: мы указываем handler (обработчик) как perl-script, PerlResponseHandler как ModPerl::RegistryPrefork (собственно, это главная инструкция, мы используем именно RegistryPrefork), PerlOptions добавляет опцию автоматической обработки заголовков скриптов (теоретически, их можно не печатать). Еще разрешаем выполнение скриптов в по этому пути.
На этом все, можно перезапустить сервер и попробовать выполение скрипта printenv из стандартной поставки Apache, если вы видите переменную окружения с именем MOD_PERL, значит настроили правильно.
В случае ошибок при запуске сервера, просмотрите error_log Apache обычно там указана причина проблемы.