Plack :: App :: CGIBin通过Apache和mod_fastcgi – 找不到CGI脚本

我试图让Plack::App::CGIBin在FreeBSD 8.2上使用Apache2和FastCGI。 最终的目标是能够使用这个设置来通过Plack提供一大堆遗留的CGI脚本,以利用它的中间件function,但是我还没有能够得到一个简单的例子。

我已经在Plack :: Handler :: FCGI和Plack :: App :: CGIBin本身上跟踪了CPAN文档,但是我不确定是否缺less某些东西或者做了哪些错误,这些文档没有涉及。

这是我添加的Apacheconfiguration:

 # 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; }; 

然后我在/data/www/plack/test.cgi有一个简单的CGI脚本(这个文件在CGI.pm下运行良好)。

我期望的是,对http://<domain>/plack/test.cgi/ (包括结尾的斜线)的请求将返回testing脚本,但是我总是在Apache错误日志中得到以下404错误,我认为这是从FastCGI服务器回来的:

 FastCGI: server "/tmp/placktest.fcgi" stderr: <IP address/date>; "GET /plack/test.cgi HTTP/1.1" 404 9 "-" <User agent string>; 

我有FastCGI自己的工作,使用mod_fastcgi和一个简单的示例脚本与SetHandler fastcgi-script应用,所以至less工作:-)一个目录。

有没有人有Plack::App::CGIBin在类似的情况下工作? 我非常感谢任何见解!

谢谢

我猜你需要改变

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

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

因为你的别名正在删除/ plack /

或者只是改变

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

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

毕竟它似乎不是一个Perl问题,而是一个系统pipe理员,关于Apacheconfiguration。