Главная > apache, IT, perl > MVC Catalyst + Apache 2 + mod_perl [quick and simple hint]

MVC Catalyst + Apache 2 + mod_perl [quick and simple hint]

Столкнулся с вопросом: «нужно Perl-приложение на MVC Catalyst Framework. Я использую Apache. Что мне делать?» :) Поgoogleил немного и нашёл решение (предполагается, что mod_perl на сервере уже поставлен).

1. Создаём своё приложение, в директории lib/ будут лежать все модули рассортированные по фолдерам (включая класс приложения, допустим, это TEST.pm)

2. В конфиге Virtual Host’а пишем

<IfModule mod_perl.c>
PerlSwitches -I/srv/www/vhosts/test/cgi-bin/lib # указали где брать обработчик
PerlModule TEST # указали какой модуль будем использовать

<Location /test> # сказали, что использовать этот модуль только для пути /test*
SetHandler perl-script
PerlResponseHandler TEST # установили обработчик событий
</Location>

<Location /static> # сказали, что статический контент из /static модулем не обрабатывать :)
SetHandler none
</Location>
</IfModule>

3. Перезапускаем Apache. Делаем tail -n10 /var/log/apache/error_log и если видим строчку «[error] Can’t locate Catalyst/Engine/Apache2/MP20.pm in @INC», то еще ставим модуль Catalyst::Engine::Apache2::MP20.

4. Далее, в .htaccess пишем

RewriteEngine On

RewriteCond %{REQUEST_URI} !^.*test[/].*$ [NC] # и обращение не на прямую (чтобы не зациклить следующим условием)

RewriteRule ^(.*)$ /test/$1 [L,QSA] # тихо и мирно переводим всё на Perl-обработчик, который мы описали выше

5. В итоге имеем:
- пользователь идет в кореть вашего сайта и попадает в /test/
- если обращение идёт, например, к /static/images/logo.png, то легко и непринуждённо пользователь видит логотип :)

Просто и без заморочек. Но стоит помнить, что использование mod_perl накладывает свои ограничения, и приложение использующее специфичные для mod_perl модули не будет работать в режиме CGI.

Ссылки:

ЗЫ: на проф. документацию не претендует, но быструю подсказку дать попытался ;)

Google Bookmarks Digg Reddit del.icio.us Ma.gnolia Technorati Slashdot Yahoo My Web News2.ru БобрДобр.ru RUmarkz Ваау! Memori.ru rucity.com МоёМесто.ru Mister Wong

1 звезда2 звезд3 звезд4 звезд5 звезд (Еще не оценили)
Loading ... Loading ...

Categories: apache, IT, perl Tags: apache, Catalyst, Hint, IT, mod_perl, perl
  1. avatar
    RedSnow
    28 Август 2009 в 18:40 | #1

    Я бы еще добавил, что вместо использования рерайта (в данном случае не совсем по назначению), лучше использоватть

    SetHandler None

  2. avatar
    RedSnow
    28 Август 2009 в 18:44 | #2

    @RedSnow

    Чорт, парсер съел теги — SetHandler None надо поместить внутрь секции Location «/static/»

  3. 28 Август 2009 в 19:18 | #3

    @RedSnow
    Спасибо, поправил

  1. 12 Январь 2010 в 11:41 | #1
Необходимо войти на сайт, чтобы написать комментарий.