Plack::App::CGIBin
をFreeBSD 8.2でApache2とFastCGIを使用して動作させようとしています。最終的な目的は、ミドルウェア機能を利用するためにPlackを介して従来のCGIスクリプトを提供するためにこの設定を使用できるようにすることですが、単純な例であってもそれを実現することはできませんでした。Plack :: App :: CGIBin via Apache and mod_fastcgi - 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/
コマンドは、外部のサーバを実行するには:
FastCGI: manager (pid <pid>): initialized
FastCGI: manager (pid <pid>): server (pid <pid>) started
FastCGI: server (pid <pid>): initialized
:
plackup -s FCGI --listen /tmp/fcgi.socket /data/www/psgi/app.psgi
サーバーは次を返し、正常に起動これは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;
};
私は/data/www/plack/test.cgi
という単純なCGIスクリプトを持っています(このファイルはCGI.pmでうまく動作します)。
http://<domain>/plack/test.cgi/
(末尾のスラッシュを含む)へのリクエストはテストスクリプトを返しますが、私はいつもFastCGIから戻ってくると思うApacheエラーログに次の404エラーが表示されます。サーバー:私は:-)働い少なくともので、適用SetHandler fastcgi-script
とディレクトリにmod_fastcgiのと簡単なサンプルスクリプトを使用して、独自に取り組んでのFastCGIを
FastCGI: server "/tmp/placktest.fcgi" stderr: <IP address/date>; "GET /plack/test.cgi HTTP/1.1" 404 9 "-" <User agent string>;
持っています。
誰もがPlack::App::CGIBin
さんと同様のシナリオで働いていますか?私はどんな洞察力にも大いに感謝しています!
おかげ
ソケットファイルの代わりにTCPサーバーを使用すると便利かもしれません。 FastCgiExternalServerディレクティブ '-host 127.0.0.1:5001'とplackup cmdline' -listen 127.0.0.1:5001'にあります。 –
あなたの返信ありがとうございましたSlaven - 残念ながら私はまだ同じエラーが発生します。これは、ソケット接続が確立されていてもOKであり、問題があるFCGIサーバーだということを示唆しています。 –
これでどこにいてもかまいませんが、ログされたGETリクエストは '/ plack/placktest /'のもので、別名/ plack以外の文字列placktestをどこに使うのか分かりません/ to - それは私がそれがGET要求に属していないと思うようにします。 –