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