The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]




Версия для распечатки Пред. тема | След. тема
Новые ответы [ Отслеживать ]
Каталог Программ: Apache::ASP - Active Server Pages port to the Apache Web Server, auto_prog, 17-Дек-08, 20:04  [смотреть все]
  • Apache::ASP - Active Server Pages port to the Apache Web Server, VA, 20:04 , 17-Дек-08 (1)
    На тот случай, если кто-то решить установить эту хрень под виндой.
    Хотелось бы поделиться своим опытом, хотя признаться, это занятие не для слобонервных.
    Я просто за$%бался в достижении успеха. Поэтому публикуюсь здесь.

    Итак

    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 под виндой.




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру