Sto cercando di ottenere Plack::App::CGIBin
per lavorare con Apache2 e FastCGI su FreeBSD 8.2. L'obiettivo finale è quello di essere in grado di utilizzare questa configurazione per servire un intero gruppo di script CGI legacy tramite Plack, al fine di sfruttare le sue capacità di middleware, ma non sono stato in grado di ottenere nemmeno un semplice esempio di lavoro.Plack :: App :: CGIBin tramite Apache e mod_fastcgi - Script CGI non trovato
ho seguito la documentazione CPAN su Plack::Handler::FCGI e Plack::App::CGIBin in sé, ma non sono sicuro se mi manca qualcosa o fare qualcosa di sbagliato che non è coperto da quei documenti.
Questa è la configurazione di Apache ho aggiunto:
# Set up external server
FastCgiExternalServer /tmp/placktest.fcgi -socket /tmp/fcgi.socket
# URL to be handled by FastCGI
Alias /plack/ /tmp/placktest.fcgi/
comando per eseguire server esterni:
plackup -s FCGI --listen /tmp/fcgi.socket /data/www/psgi/app.psgi
Il server viene avviato correttamente, restituendo il seguente:
FastCGI: manager (pid <pid>): initialized
FastCGI: manager (pid <pid>): server (pid <pid>) started
FastCGI: server (pid <pid>): initialized
Questa è app.psgi:
#!/usr/bin/env plackup -s FCGI
use Plack::App::CGIBin;
use Plack::Builder;
my $app = Plack::App::CGIBin->new(
root => '/data/www/plack',
)->to_app;
builder {
mount "/plack" => $app;
};
Ho quindi un semplice script CGI su /data/www/plack/test.cgi
(questo file funziona correttamente in CGI.pm).
Quello che mi aspetto è che una richiesta a http://<domain>/plack/test.cgi/
(compresa la barra finale) restituisca lo script di test, ma ottengo sempre il seguente errore 404 nel log degli errori di Apache, che credo stia tornando dal FastCGI server:
FastCGI: server "/tmp/placktest.fcgi" stderr: <IP address/date>; "GET /plack/test.cgi HTTP/1.1" 404 9 "-" <User agent string>;
devo FastCGI lavorare in proprio, utilizzando mod_fastcgi e un semplice script di esempio in una directory con SetHandler fastcgi-script
applicata, così almeno che ha lavorato :-).
Qualcuno ha ricevuto Plack::App::CGIBin
in uno scenario simile? Apprezzerei molto ogni intuizione!
Grazie
Forse è utile se si utilizza un server TCP invece del file socket, ad es. nella direttiva FastCgiExternalServer '-host 127.0.0.1: 5001' e nel plackup cmdline' -listen 127.0.0.1: 5001'. –
Grazie per la tua risposta Slaven - sfortunatamente ottengo ancora lo stesso errore, il che suggerisce che la connessione socket, comunque stabilita, è OK, ed è il server FCGI che ha il problema. –
Non so se ci sia mai stato da nessuna parte con questo, ma la richiesta GET registrata è per '/ plack/placktest /', e non vedo dove si usa la stringa placktest tranne nella cosa che si fa alias/plack/a - il che mi fa pensare che non appartenga alla richiesta GET. –