Plack::App::CGIBin
FreeBSD 8.2 で Apache2 と FastCGI を使用して作業を開始しようとしています。最終的な目標は、このセットアップを使用して、Plack を介して大量のレガシー CGI スクリプトを提供し、そのミドルウェア機能を利用できるようにすることですが、単純な例でさえ機能させることができませんでした。
Plack::Handler::FCGIおよびPlack::App::CGIBin自体に関する CPAN ドキュメントに従いましたが、これらのドキュメントでカバーされていない何かを見逃しているのか、間違っているのかはわかりません。
これは私が追加した Apache 設定です:
# Set up external server
FastCgiExternalServer /tmp/placktest.fcgi -socket /tmp/fcgi.socket
# URL to be handled by FastCGI
Alias /plack/ /tmp/placktest.fcgi/
外部サーバーを実行するコマンド:
plackup -s FCGI --listen /tmp/fcgi.socket /data/www/psgi/app.psgi
サーバーが正常に起動し、次が返されます。
FastCGI: manager (pid <pid>): initialized
FastCGI: manager (pid <pid>): server (pid <pid>) started
FastCGI: server (pid <pid>): initialized
これは 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;
};
次に、単純な CGI スクリプトを/data/www/plack/test.cgi
(このファイルは CGI.pm で正常に動作します) に置きます。
へのリクエストhttp://<domain>/plack/test.cgi/
(末尾のスラッシュを含む) がテスト スクリプトを返すことを期待していますが、Apache エラー ログに常に次の 404 エラーが表示されます。
FastCGI: server "/tmp/placktest.fcgi" stderr: <IP address/date>; "GET /plack/test.cgi HTTP/1.1" 404 9 "-" <User agent string>;
mod_fastcgi とSetHandler fastcgi-script
適用されたディレクトリ内の単純なサンプル スクリプトを使用して、FastCGI を独自に動作させたので、少なくとも動作しました :-)。
誰かがPlack::App::CGIBin
同様のシナリオの下で働いていますか? 洞察をいただければ幸いです。
ありがとう