Catalyst на споделен хостинг

След като реших да си сменям хостинга или по-точно да си наема собствен се изправих пред проблем. На какво да си напиша новия сайт? Тъй като не харесвам особено PHP и си пописвам доста на Perl, се спрях на Catalyst. И така седнах преди няколко дни и написах началната версия. Въпросът който остава беше как да го стартирам на хостинга след като там няма нито mod_perl, нито мога да стартирам собствен сървър.

Единственото, което ми остана беше CGI.

За целта трябваше да накарам всяка заявка да минава през CGI. Решението се оказа доста просто с помощта на mod_rewrite и на един .htaccess файл в основата на DOCUMENT_ROOT-а:

RewriteEngine On
RewriteCond %{REQUEST_URI} !^/?cgi-bin/handler.cgi
RewriteRule ^(.*)$ /cgi-bin/handler.cgi/$1 [PT,L]

Оказа се, че стандартния скрипт, който генерира Catalyst не ми върши много работа (можете да откриете разликите сами), а и беше неудобен за дебъг. Та спретнах следното скриптче:

#!/usr/bin/perl

use FindBin;
# Добавяме пътя до модула на приложението
use lib "$FindBin::Bin/../lib";
use strict;
use warnings;

# „Казваме“ на приложението че ще работи като CGI
BEGIN {
  $ENV{CATALYST_ENGINE} ||= 'CGI';
}

# Време е да заредим и стартираме нашето Catalyst приложение
eval {
	 require MyApp;
	 MyApp->run;
	};
# Ако възникне греша можем да я отпечатаме
if ($@) {
	printf("Content-type: text/plain \n\n");
	print $@;
}

1;

Та единственото, което остана е да „задоволя глада на животното“ и да инсталирам всички необходими модули, липсващи на хостинга в lib директорията на приложението. За целта може да си ги инсталирате при вас и после просто да ги копирате на сървъра.

Имайте предвид обаче, че не всички модули могат да се използват локално, някои е необходимо да бъдат инсталирани на системно ниво. Така, че можете да помолите поддръжката на хостинга да го направи за вас.

И за финал ако сте решени твърдо да ползвате Catalyst, не ви съветвам да се насочвате към споделени хостинги. Но ако сте инат като мен има начин ;-).

Публикувана в web на 17 март 2008 понеделник, 14:21 | коментари (0)

Коментари:

Добави коментар