Ich versuche Plack::App::CGIBin
mit Apache2 und FastCGI unter FreeBSD 8.2 zu arbeiten. Das letztendliche Ziel ist es, in der Lage zu sein, eine ganze Reihe von Legacy-CGI-Skripten über Plack zu bedienen, um seine Middleware-Fähigkeiten zu nutzen, aber ich war nicht in der Lage, auch nur ein einfaches Beispiel zu bekommen.Plack :: App :: CGIBin über Apache und mod_fastcgi - CGI Skript nicht gefunden
Ich habe die CPAN-Dokumentation unter Plack::Handler::FCGI und Plack::App::CGIBin selbst gelesen, aber ich bin mir nicht sicher, ob ich etwas vermisse oder etwas falsch mache, was in diesen Dokumenten nicht behandelt wird.
Dies ist der Apache Config ich hinzugefügt haben:
# Set up external server
FastCgiExternalServer /tmp/placktest.fcgi -socket /tmp/fcgi.socket
# URL to be handled by FastCGI
Alias /plack/ /tmp/placktest.fcgi/
Befehl externen Server ausführen:
plackup -s FCGI --listen /tmp/fcgi.socket /data/www/psgi/app.psgi
Der Server erfolgreich gestartet wird, die folgende Rückkehr:
FastCGI: manager (pid <pid>): initialized
FastCGI: manager (pid <pid>): server (pid <pid>) started
FastCGI: server (pid <pid>): initialized
Dies ist 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;
};
Ich habe dann ein einfaches CGI-Skript bei /data/www/plack/test.cgi
(diese Datei läuft gut unter CGI.pm).
Was ich erwarten würde ist, dass eine Anfrage an http://<domain>/plack/test.cgi/
(einschließlich der abschließenden Schrägstrich) würde das Testskript zurückgeben, aber ich bekomme immer die folgenden 404 Fehler in der Apache-Fehlerprotokoll, die ich glaube, kommt von der FastCGI zurück Server:
FastCGI: server "/tmp/placktest.fcgi" stderr: <IP address/date>; "GET /plack/test.cgi HTTP/1.1" 404 9 "-" <User agent string>;
ich habe FastCGI bekommt auf seinem eigenen Arbeit mit mod_fastcgi und einem einfachen Beispiel Skript in einem Verzeichnis mit SetHandler fastcgi-script
angelegt, so zumindest den :-) gearbeitet.
Hat jemand Plack::App::CGIBin
funktioniert unter einem ähnlichen Szenario? Ich würde jede Einsicht sehr schätzen!
Dank
Vielleicht hilft es, wenn Sie einen TCP-Server anstelle der Socket-Datei verwenden, z. in der FastCgiExternalServer-Direktive '-host 127.0.0.1: 5001' und in der plack-cmdline' -listen 127.0.0.1: 5001'. –
Vielen Dank für Ihre Antwort Slaven - leider bekomme ich immer noch den gleichen Fehler, was darauf hindeutet, dass die Socket-Verbindung, wie auch immer es etabliert ist, in Ordnung ist, und es ist der FCGI-Server, der das Problem hat. –
Ich weiß nicht, ob du jemals irgendwo hingekommen bist, aber die geloggte GET-Anfrage ist für '/ plack/placktest /', und ich sehe nicht, wo du den string placktest anders als in dem, was du alias/plack benutzt/to - was mich denken lässt, dass es nicht in die GET-Anfrage gehört. –