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

За огромна моя радост вече на българския пазар има компания (space.bg) предлагаща хостинг за Perl FastCGI приложения, което позволява нормална работа на Catalyst приложения върху споделен хостинг.

Инсталацията на приложението става лесно в няколко стъпки. Радващ е и факта, че в услугата е включен и SSH достъп, което допълнително улеснява работата. Първото, което трябва да направите след като влезете чрез SSH е да стартирате от терминал Perl обвивка и да минете през конфигурацията:

 perl -MCPAN -e shell

След това трябва да излезете без да инсталирате нищо. Следващото което трябва да направите е да отворите вашия ~/.bashrc файл и да добавите следните редове:

export PATH=$HOME/local/bin:$HOME/local/script:$PATH
perlversion=`perl -v | grep 'built for' | awk '{print $4}' | sed -e 's/v//;'`
export PERL5LIB=$HOME/local/share/perl/$perlversion:$HOME/local/lib/perl/$perlversion:$HOME/local/lib:$PERL5LIB

След това излезте и влезте наново (или изпълнете ръчно вашия bashrc файл: " . .bashrc "). След това редактирайте файла .cpan/CPAN/MyConfig.pm и добавете следните редове:

'make_install_arg' => qq[SITEPREFIX=$ENV{HOME}/local],
'makepl_arg' => qq[INSTALLDIRS=site install_base=$ENV{HOME}/local],

Вече можете да инсталирате всички необходими модули по стандартния начин:

# perl -MCPAN -e shell
cpan> install Catalyst

Възможно е да се наложи да инсталирате някои от модулите или техни зависимости с команда force install . За улеснение можете да използвате набор от пакети (local.tgz), който аз използвам за моите приложения. Просто трябва да се разархивира в домашната папка на хостинг абонамента. Имайте предвид, че е възможно част от пакетите в него да с ас по-стара версия от необходимата ви.

Някои Perl модули изискват зареждане на динамични библиотеки. Поради системите за сигурност на хостинг сървъра те няма да бъдат заредени ако съдържащите им директории не са с точно определени права за достъп. За да откриете всички директории, които имат нужда от смяна на правата можете да използвате следната команда:

find ~/local -type d -perm +022 -ls

За да коригирате правата на всички наведнъж може да използвате седната команда:

find ~/local -type d -perm +022 -print0 | xargs -0 chmod g-w,o-w

След това трябва да преименувате fastcgi скрипрта в папката script да бъде с разширение .fcgi, а не .pl и да добавите пътищата до локално инсталираните модули:

use FindBin;
use lib "$FindBin::Bin/../lib";
use lib "/home/h2/u/us/user/local/share/perl/5.8.8";
use lib "/home/h2/u/us/user/local/lib/perl/5.8.8";
use lib "/home/h2/u/us/user/local/lib";
use lib "/home/h2/u/us/user/local/share/perl/5.8.8";
use lib "/home/h2/u/us/user/local/lib/perl/5.8.8";
use lib "/home/h2/u/us/user/local/lib";

Естествено пътищата трябва да съвпадат с тези на вашата домашна папка.

След това добавете следните редове в .htaccess файл в кореновата директория на хоста ви и отворете браузъра си и вижте новия си сайт

RewriteEngine On
RewriteCond %{REQUEST_URI} !^/?script/myapp_fastcgi.fcgi
RewriteRule ^(.*)$ script/myapp_fastcgi.fcgi/$1 [PT,L]

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

user@nuln:~$ ps ax | grep fcgi
2903 ?        SN     0:03 /usr/bin/perl -w myapp_fastcgi.fcgi
27235 ?       SN     0:04 /usr/bin/perl -w myapp_fastcgi.fcgi
user@nuln:~$ kill -9 2903 27235
Публикувана в web на 26 ноември 2009 четвъртък, 18:08 | коментари (0)