LINUX.ORG.RU

lighttpd+perl+fastcgi


0

0

Имеем:
~> rpm -qa | grep CGI
FastCGI-2.4.0-33
FastCGI-devel-2.4.0-3.1
perl-FastCGI-2.4.0-33

~> rpm -qa | grep lighttpd
lighttpd-1.4.13-41.1

А также:
1)скрипт /srv/www/htdocs/cgi-bin/author.fcgi:
#!/usr/bin/perl -w
use CGI::Fast qw(:standard);
$COUNTER = 0;
while (new CGI::Fast) {
print header;
print start_html("Fast CGI Rocks");
print
h1("Fast CGI Rocks"),
"Invocation number ",b($COUNTER++),
" PID ",b($$),".",
hr;
print end_html;
}

2)конфиг /etc/lighttpd/conf.d/fastcgi.conf:
server.modules += ( "mod_fastcgi" )
fastcgi.debug = 1
fastcgi.server = ( ".fcgi" =>
((
"socket" => "/tmp/fcgi.socket"
))
)

3)Главный конфиг /etc/lighttpd/lighttpd.conf:
server.port = 80
server.use-ipv6 = "enable"
server.username = "lighttpd"
server.groupname = "lighttpd"
var.log_root = "/var/log/lighttpd/"
var.server_root = "/srv/www/"
var.state_dir = "/var/run/"
var.home_dir = "/var/lib/lighttpd/"
var.cache_dir = home_dir + "cache/compress/"
var.vhosts_dir = server_root + "vhosts/"
server.document-root = server_root + "htdocs/"
server.tag = "lighttpd (1.4.13/SuSE)"
server.pid-file = state_dir + "lighttpd.pid"
include "modules.conf"
server.errorlog = log_root + "error.log"
include "conf.d/access_log.conf"
include "conf.d/debug.conf"
server.event-handler = "linux-sysepoll"
server.network-backend = "linux-sendfile"
server.max-fds = 2048
server.stat-cache-engine = "simple"
index-file.names = (
"index.xhtml", "index.html", "index.htm", "default.htm", "index.php"
)
url.access-deny = ( "~", ".inc" )
$HTTP["url"] =~ "\.pdf$" {
server.range-requests = "disable"
}
static-file.exclude-extensions = ( ".php", ".pl", ".fcgi", ".scgi" )
include "conf.d/mime.conf"
include "conf.d/dirlisting.conf"
server.follow-symlink = "enable"
server.upload-dirs = ( "/var/tmp" )

Что делаю:
1)sudo /etc/rc.d/lighttpd restart
Shutting down lighttpd done
Starting lighttpd done
2)Перехожу из браузера на URL: http://127.0.0.1/cgi-bin/author.fcgi

Что получаю:
1)500 - Internal Server Error
2)/var/log/lighttpd/error.log:
2007-06-09 20:41:07: (log.c.135) server stopped
2007-06-09 20:41:07: (log.c.75) server started
2007-06-09 20:41:09: (mod_fastcgi.c.1705) connect failed: No such file or directory on unix:/tmp/fcgi.socket
2007-06-09 20:41:09: (mod_fastcgi.c.2817) backend died, we disable it for a 5 seconds and send the request to another backend instead: reconnects: 0 load: 1
2007-06-09 20:41:09: (mod_fastcgi.c.1449)
2007-06-09 20:41:09: (connections.c.816) missing cleanup in fastcgi
2007-06-09 20:41:10: (mod_fastcgi.c.3423) all handlers for /cgi-bin/author.fcgi on .fcgi are down.

Вопрос заключается в том как все это исправить. Облазил весь интернет, ответа не нашел. Надеюсь на вашу помощь

Re: lighttpd+perl+fastcgi

Там же чётко написано: 2007-06-09 20:41:09: (mod_fastcgi.c.1705) connect failed: No such file or directory on unix:/tmp/fcgi.socket

FastCGI сервер не запущен.

krum ()

Re: lighttpd+perl+fastcgi

Спасибо конечно за ссылку, но чего-то я не догоняю.. Ну там по ссылке написано как я понял так: поставьте себе Catalyst::Engine::FastCGI а вместе с ним понадобится еще и FCGI::ProcManager чтобы выполнить script/myapp_fastcgi.pl -l /tmp/myapp.socket -n 5, ну нашел я эти пакеты, поставил их догрузив еще с пол сотни зависимостей. Ну изменил я конфиг fastcgi.conf:
server.modules += ( "mod_fastcgi" )
fastcgi.debug = 1
fastcgi.server = (
"" => (
"MyApp" => (
"socket" => "/tmp/fcgi.socket",
"check-local" => "disable"
)
)
)
Ну создал я файл myapp_fastcgi.pl:
# This style is also supported:
use CGI::Fast;
use FCGI::ProcManager qw(pm_manage pm_pre_dispatch
pm_post_dispatch);
pm_manage( n_processes => 10 );
while (my $cgi = CGI::Fast->new()) {
pm_pre_dispatch();
#...
pm_post_dispatch();
}
Ну выполнил я его:
> ./myapp_fastcgi.pl -l /tmp/fcgi.socket -n 5
Забегали там какие-то буквы не прекращаясь. А Чего дальше то делать? Файла /tmp/fcgi.socket по-прежнему нет. Вообще Catalyst::Engine::FastCGI это единственный путь? А как тогда запустить экзампл из man CGI::Fast?

Объясните пожалуйста на пальцах :/

anterior ()

Re: lighttpd+perl+fastcgi

РАБОТАЕТ!!!!!!!!!!!!!!!!!!!!!! Я счастлив! И без всяких там модулей блин. Ну вот я непонимаю, ну разве в доке по lighttpd они не могли русским языком написать что надо писать туда в конфиг для Перла? А то ПХП ПХП ПХП блин, один ПЭХЭПЭ там!!!! Пока сам не прочтешь всю документацию не поймешь. Ненавижу ПХП! :)
----------------------------------------------------------------
HOWTO как я пускал экзампл из CGI::Fast под lighttpd для Perl'a:
----------------------------------------------------------------
1) Заходим в /etc/lighttpd/conf.d/fastcgi.conf и пишем туда:
server.modules += ( "mod_fastcgi" )
fastcgi.debug = 1
fastcgi.server = (
"" => (
"MyApp" => (
"socket" => "/tmp/example.socket",
"check-local" => "disable",
"bin-path" => "/srv/www/htdocs/cgi-bin/example.fcgi",
"min-procs" => 2,
"max-procs" => 5,
"idle-timeout" => 20
)
)
)
2) Сохраняем экзампл в /srv/www/htdocs/cgi-bin/example.fcgi:
#!/usr/bin/perl -w
use CGI::Fast qw(:standard);
$COUNTER = 0;
while (new CGI::Fast) {
print header;
print start_html("Fast CGI Rocks");
print
h1("Fast CGI Rocks"),
"Invocation number ",b($COUNTER++),
" PID ",b($$),".",
hr;
print end_html;
}
3) Перезапускаем lighttpd:
>sudo /etc/rc.d/lighttpd restart
4)Открываем браузер и тестируем!

ЗЫ: Может кому пригодиться.

ЗЫ::Перл Фарева! Билл Гейтс лох! Торвальдс рулит!

anterior ()

Re: lighttpd+perl+fastcgi

Люди, возник маленький вопросик: А если я вот пустил этого зверя, то если у меня есть какой-нибудь index.html кроме всего мне теперь как до него добраться? Все параметры которые я ввожу http://127.0.0.1/* приводят только к запуску моего FastCGI скрипта.

anterior ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.