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)

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)

Google позиция

google position е прост скрипт, с който можете да проверите на коя позиция в google се намира избран от вас сайт, в зависимост от ключовите думи, по които се търси. Необходимо е в първото поле да дадете името на сайта (например: katsarov.org), а във второто желанитие ключови думи (например: алкохол мозъчни клетки).

Така можете да проверявате как е откриван сайта ви по желаните от вас ключови думи.

Скрипта можете да намерите на http://katsarov.org/tools/google_position/, а кода му можете да свалите от http://katsarov.org/public/google_position.tar.gz. Разпространява се под GNU GPL.

Публикувана в web на 17 юни 2007 неделя, 14:33 | коментари (0)