2013-10-17 5 views
34

Plack::App::CGIBinをFreeBSD 8.2でApache2とFastCGIを使用して動作させようとしています。最終的な目的は、ミドルウェア機能を利用するためにPlackを介して従来のCGIスクリプトを提供するためにこの設定を使用できるようにすることですが、単純な例であってもそれを実現することはできませんでした。Plack :: App :: CGIBin via Apache and mod_fastcgi - CGIスクリプトが見つかりません

私はPlack::Handler::FCGIPlack::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さんと同様のシナリオで働いていますか?私はどんな洞察力にも大いに感謝しています!

おかげ

+0

ソケットファイルの代わりにTCPサーバーを使用すると便利かもしれません。 FastCgiExternalServerディレクティブ '-host 127.0.0.1:5001'とplackup cmdline' -listen 127.0.0.1:5001'にあります。 –

+0

あなたの返信ありがとうございましたSlaven - 残念ながら私はまだ同じエラーが発生します。これは、ソケット接続が確立されていてもOKであり、問​​題があるFCGIサーバーだということを示唆しています。 –

+0

これでどこにいてもかまいませんが、ログされたGETリクエストは '/ plack/placktest /'のもので、別名/ plack以外の文字列placktestをどこに使うのか分かりません/ to - それは私がそれがGET要求に属していないと思うようにします。 –

答えて

1

私はあなたのエイリアスが/ plack/

か、単に

を変更を削除しているので、あなたが

builder { 
    mount "/" => $app; 
}; 

builder { 
    mount "/plack" => $app; 
}; 

を変更する必要があると思うだろう

# URL to be handled by FastCGI 
Alias /plack/ /tmp/placktest.fcgi/ 

結局のところ

# URL to be handled by FastCGI 
Alias /plack/ /tmp/placktest.fcgi/plack/ 

には、Perlの質問ではありませんが、Apacheの設定については、システム管理者1、。

関連する問題