34 apache perl fastcgi plack psgi
我正试图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/
Run Code Online (Sandbox Code Playgroud)
运行外部服务器的命令:
plackup -s FCGI --listen /tmp/fcgi.socket /data/www/psgi/app.psgi
Run Code Online (Sandbox Code Playgroud)
服务器成功启动,返回以下内容:
FastCGI: manager (pid <pid>): initialized
FastCGI: manager (pid <pid>): server (pid <pid>) started
FastCGI: server (pid <pid>): initialized
Run Code Online (Sandbox Code Playgroud)
这是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;
};
Run Code Online (Sandbox Code Playgroud)
然后我有一个简单的CGI脚本/data/www/plack/test.cgi(这个文件在CGI.pm下正常运行).
我会想到的是,一个请求http://<domain>/plack/test.cgi/(包括尾随斜线)将返回的测试脚本,但我总是在Apache的错误日志,我认为这是从FastCGI的服务器回来以下404错误:
FastCGI: server "/tmp/placktest.fcgi" stderr: <IP address/date>; "GET /plack/test.cgi HTTP/1.1" 404 9 "-" <User agent string>;
Run Code Online (Sandbox Code Playgroud)
我有FastCGI的工作对自己使用的mod_fastcgi和目录中的一个简单的例子脚本SetHandler fastcgi-script应用,所以至少是:-)工作.
有没有人Plack::App::CGIBin在类似的情况下工作?我非常感谢任何见解!
谢谢
小智 1
我猜你需要改变
builder {
mount "/plack" => $app;
};
Run Code Online (Sandbox Code Playgroud)
到
builder {
mount "/" => $app;
};
Run Code Online (Sandbox Code Playgroud)
因为你的别名正在删除 /plack/
或者只是改变
# URL to be handled by FastCGI
Alias /plack/ /tmp/placktest.fcgi/
Run Code Online (Sandbox Code Playgroud)
到
# URL to be handled by FastCGI
Alias /plack/ /tmp/placktest.fcgi/plack/
Run Code Online (Sandbox Code Playgroud)
毕竟,这似乎不是一个 Perl 问题,而是一个系统管理员问题,关于 Apache 配置。
| 归档时间: |
|
| 查看次数: |
905 次 |
| 最近记录: |