На тот случай, если кто-то решить установить эту хрень под виндой.
Хотелось бы поделиться своим опытом, хотя признаться, это занятие не для слобонервных.
Я просто за$%бался в достижении успеха. Поэтому публикуюсь здесь.Итак
1. Я поставил Apache 2.2. Для этого лезете в
http://archive.apache.org/dist/httpd/binaries/win32/
выбираете версию которая по душе и ставите привычным для виндовщиков способок попросту запустив *.msi файл.
После чего проверяете, что Apache работает заглянув в систему управления сервисами в контрольной панели. Если не работает, лезем в файл устан_директория_апача/logs/ и смотрим почему в файле errors.log.
Тут у меня проблем не было. Хотя если у Вас на 80 порту весит IIS то нужно поменять порт в файле httpd.conf апача поменяв циферку 80
на скажем 8080 и перезапустить апачу.
2. Уже должен быть установлен Active Perl. Если нет, то лезем на
http://www.activestate.com/Products/activeperl/index.mhtml и ставим его оттуда.
3. Далее запускаем ppm install mod_perl и згружаем готово-запряженный mod_perl отвечая на вопрос утилиты
о пути размещения Apache. Здесь тоже проблем нет. После этого в директории modules апачи должен засветиться файл
mod_perl.so.
Снова таки лезем httpd.conf и вводим
LoadFile "c:/perl/bin/perlXX.dll"
LoadModule perl_module modules/mod_perl.so
где XX это версия установленного у вас Active Perl.
После чего очередной раз перезапускаем апачу и удостоверяемся, что апача нашла все файлы
и не плюется.
4. Теперь наступает самый трогательный момент. Ставим Apache-ASP командой
ppm install Apache-ASP
и ждем окончания интимного процесса внедрения модулей. И ... после этого казалось бы
счастье должно наступить, но бляха муха не тут то было. Нужно добавить еще кое-какой сироп к
файлу httpd.conf, а именно фрагмент
PerlModule Apache::ASP
<Files ~ (\.asp)>
SetHandler perl-script
PerlHandler Apache::ASP
PerlSetVar Global .
PerlSetVar StateDir C:/tmp/asp
</Files>
затем, не забудьте создать директорию C:/tmp/ на жестком диске, иначе не видать вам счастья :))
Далее раскоментариваем или вставляем строку AddHandler и делаем ее AddHandler cgi-script .cgi .pl. Теперь Ваши перловские модули будут для апача как родные.
Теперь добавляем файл index.asp к DirectoryIndex строчке в том же файле и учим апачу любить
asp технологию от мелкомягких.Строчка будет выглядеть как DirectoryIndex index.html index.asp или что-нибудь в этом духе.
Теперь еще раз перезагружаем апачу и проверяем логи на неругаемость.
5. Копируем тестовую примочку типа
<html>
<head>
<title>
</title>
</head>
<body>
<%
$Response->Write("Congratulations, you have successfully installed Apache::ASP");
%>
</body>
</html>
в ваш корень с веб страницами, файл типа test.asp и тестируем строкой вызова http://localhost/test.asp.
Авторы модулей клянутся, что после этой длительной мастурбацией с установкой вы должны получить на экране сакраментальную строку: Congratulations, you have successfully installed Apache::ASP
и ..... всееееееее, а ? поверили, поверили что это так легко установить апачу с мод_перлой и Вы получите
полную свободу использования ASP технологии с Perl ... вот так вот запросто пропарившись все навсего несколько часов?
... нет братцы. Творцы этого замечательного модуля скорее всего были садо-мозахистами ...по другому просто не скажешь.
Скорее всего на экране появится мерзкая ошибка типа Error 500 говорящая, что что-то где-то накрылось, а в логе
ошибок апачи Вы прочтете вот такую бяку:
ASP error: Can't locate object method "get" via package "APR::Table"
После чего Ваши лапы и хвост скорее всего отвиснут, а может быть просто отвалятся. Однако... не падайте духом.
Это в точности то, ради чего я сел писать эту статейку. Теперь наступает самый трогательный момент. Чтобы отфиксить эту бяку,
Вы лезете в файл с:/perl/site/lib/Apache.pm, находите в строке 65-71 фрагмент кода
if($ENV{MOD_PERL}) {
$ModPerl2 = ($mod_perl::VERSION >= 1.99);
if($ModPerl2) {
eval "use Apache::ASP::ApacheCommon ();";
die($@) if $@;
}
}
и заменяете на не менее понятный фрагмент кода
if($ENV{MOD_PERL}) {
$ModPerl2 = ($mod_perl::VERSION >= 1.99);
my $ver = $mod_perl::VERSION;
if ($ver eq "") { $ver = $ENV{MOD_PERL_API_VERSION}; }
$ModPerl2 = ($ver >= 1.99);
if($ModPerl2) {
eval "use Apache::ASP::ApacheCommon ();";
die($@) if $@;
}
}
После чего снова перегружаете апачу и наконец то получаете при тесте
фразу Congratulations, you have successfully installed Apache::ASP.
Просто еб#@$нуться. Создатели этих модулей имели действительно черное,
черное чувство юмора и не включили этот патч в дистрибьюцию 10 лет назад.
Вот такие дела. Успехов всем в нелегком деле освоения Perl под виндой.