perl - Plack:: App:: CGIBin vía Apache y mod_fastcgi-Script CGI no encontrado
psgi (1)
Supongo que debes cambiar
builder {
mount "/plack" => $app;
};
a
builder {
mount "/" => $app;
};
porque tu alias es eliminar / plack /
o simplemente cambia
# URL to be handled by FastCGI
Alias /plack/ /tmp/placktest.fcgi/
a
# URL to be handled by FastCGI
Alias /plack/ /tmp/placktest.fcgi/plack/
Después de todo, no parece ser una pregunta de Perl, sino una de administrador del sistema, sobre la configuración de Apache.
Estoy intentando que Plack::App::CGIBin
funcione con Apache2 y FastCGI en FreeBSD 8.2. El objetivo final es poder utilizar esta configuración para servir a un montón de scripts CGI heredados a través de Plack, con el fin de aprovechar sus capacidades de middleware, pero no he podido hacer que funcione ni siquiera un simple ejemplo.
He seguido la documentación de CPAN sobre Plack::Handler::FCGI y Plack::App::CGIBin sí, pero no estoy seguro de si me falta algo o si hago algo mal que no está cubierto por esos documentos.
Esta es la configuración de Apache que agregué:
# Set up external server
FastCgiExternalServer /tmp/placktest.fcgi -socket /tmp/fcgi.socket
# URL to be handled by FastCGI
Alias /plack/ /tmp/placktest.fcgi/
Comando para ejecutar el servidor externo:
plackup -s FCGI --listen /tmp/fcgi.socket /data/www/psgi/app.psgi
El servidor se inicia correctamente y devuelve lo siguiente:
FastCGI: manager (pid <pid>): initialized
FastCGI: manager (pid <pid>): server (pid <pid>) started
FastCGI: server (pid <pid>): initialized
Esta es 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;
};
Luego tengo una secuencia de comandos CGI simple en /data/www/plack/test.cgi
(este archivo se ejecuta bien bajo CGI.pm).
Lo que esperaría es que una solicitud a http://<domain>/plack/test.cgi/
(incluida la barra diagonal) devuelva el script de prueba, pero siempre obtengo el siguiente error 404 en el registro de errores de Apache, que creo que regresa del servidor FastCGI:
FastCGI: server "/tmp/placktest.fcgi" stderr: <IP address/date>; "GET /plack/test.cgi HTTP/1.1" 404 9 "-" <User agent string>;
Tengo FastCGI trabajando por sí solo, usando mod_fastcgi y un sencillo script de ejemplo en un directorio con SetHandler fastcgi-script
aplicado, así que al menos eso funcionó :-).
¿Alguien ha hecho que Plack::App::CGIBin
funcione en un escenario similar? ¡Agradecería mucho cualquier idea!
Gracias