Nachdem ich sehr lange gebraucht habe, um FastCGI zum laufen zu bringen, da ich über mehrere dokumentations-bugs gestolpert bin, möchte ich hier das ganze als beispiel beschreiben.
Apache-Config:
FastCgiExternalServer /tmp/myapp.fcgi -host localhost:8888
Alias /myapp /tmp/myapp.fcgi/
Ganz wichtig ist hier:
Den Daemon startet man selbst von Hand.
/tmp/myapp.fcgi ist hier nur ein virtueller Pfad, der nicht existieren sollte.
Das Alias mappt dann /myapp auf den externen Server auf port 8888.
Alternativ kann man auch einen Socketpfad angeben.
Als nächstes versuchte ich, das Skript als Daemon zu starten. Hier meine fehlgeschlagenen Versuche:
more (13.6kb)
und die richtig lautenden Beispiele:
BEGIN {
$ENV{FCGI_SOCKET_PATH} = "localhost:8888";
$ENV{FCGI_LISTEN_QUEUE} = 100;
}
use CGI::Fast;
...
my $count;
while (my $cgi = new CGI::Fast) {
...
}
1
2
3
4
5
6
7
8
9
10
11
12
use FCGI;
my $socket = FCGI::OpenSocket( ":8888", 5 );
my $request = FCGI::Request( \*STDIN, \*STDOUT, \*STDERR, \%ENV, $socket );
my $count;
while( $request->Accept() >= 0 ) {
CGI::initialize_globals();
my $cgi = CGI->new;
...
}
FCGI::CloseSocket( $socket );
Dieses Skript dann einfach starten und der Daemon läuft.
Last edited: 2012-08-03 22:04:12 +0200 (CEST)