我正在尝试使用IIS 7.5运行Perl / FastCGI(FCGI)。 C:\Windows\System32\inetsrv\iisfcgi.dll
的版本为7.5.7601.17514
。这是我的web.config
和我的Perl脚本:
D:\MiLu\Dev :: more /t1 web.config
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<directoryBrowse enabled="true" />
<handlers>
<add name="FCGI" path="*.pl" verb="*"
modules="FastCgiModule"
scriptProcessor="C:\Opt\Cygwin\bin\perl.exe"
resourceType="Unspecified" requireAccess="Script" />
</handlers>
</system.webServer>
</configuration>
D:\MiLu\Dev :: more /t4 Perl\fcgi\count.pl
use strict;
use warnings;
use FCGI;
my $count = 0;
my $request = FCGI::Request();
while ( $request->Accept >= 0 ) {
print "Content-type: text/html\r\n\r\n", ++$count;
}
所有我得到的是一个500,其中包含来自IIS的通用错误页面,指出“FastCGI进程意外退出”并列出了可能的错误原因。
脚本从命令行运行正常,打印其三行然后立即退出,表明脚本和模块安装正常。 (顺便说一下,我从FCGI manual复制了它,所以应该没问题。)
D:\MiLu\Dev :: C:\Opt\Cygwin\bin\perl.exe Perl\fcgi\count.pl
Content-type: text/html
1
有FCGI::IIS module
,但它似乎仅适用于IIS 5.1和6.0。
IIS有一个专用的FCGI模块,这表明IIS 5.1和6.0提供了自己的非标准FCGI实现。那么如果这是真的,那么IIS 7.5呢?相当多的不确定因素。
FCGI::IIS
seems to have tried to make his module work with IIS 7.0 (Getting Perl working on IIS7 with FastCGI - 2007)的作者,但放弃了。
在哪里可以找到更具体的错误信息?有日志文件吗?我应该在Windows事件查看器(eventvwr)中寻找什么?
我缺少一些神奇的咒语吗?
这个组合的信息不多。但它最终可能会奏效。这里有一个FastCGI Application configuration reference page和someone has got Catalyst to work with FastCGI on IIS 7.0 (Catalyst+IIS 7.0 on MS Windows 2008/Vista)。
答案 0 :(得分:2)
我暂时没有这样做,也从未和Cygwin合作过。 为了测试这个,请下载并安装最新的活动状态perl,用于您的架构,并尝试安装/配置如下:
另一个参考:
http://blogs.iis.net/wadeh/archive/2009/04/13/running-perl-on-iis-7.aspx
祝你好运。答案 1 :(得分:2)
我刚碰到过这个。你引用的很多链接都是我的。在我写这篇指南的时候,FastCGI for IIS是全新的,Vista版还没有出来。不幸的是,由于工作原因,我最终选择了其他项目,并且在Vista(IIS 7)版本发布后没有机会继续使用这些指南。
我只是来到一个需要这个项目的项目,并且在我自己搜索解决方案时遇到了你的帖子。我做了一些测试并设法找到了解决方案。
FastCGI在Windows上的工作方式与Linux上的工作方式截然不同。它不仅适用于IIS版本,还适用于Apache版本。
在Linux上,您可以将FastCGI设置为处理程序,脚本的shebang足以将其指向Perl并做正确的事情(只要您为FCGI或CGI :: Fast编写脚本)
在Windows上,您需要指定要使用处理程序调用的FastCGI脚本:
IIS 7 :
IIS管理器 - &gt;网站 - &gt;网站 - &gt;处理程序映射 - &gt;添加模块映射...
请求路径:test_script.fcgi
模块:FastCgiModule
可执行文件:c:\ perl \ bin \ perl.exe | c:\ inetpub \ wwwroot \ test_script.fcgi
名称:测试FCGI示例
单击确定,然后选择添加FastCGI应用程序。如果检查服务器的FastCGI设置,则需要| |之后的部分被设置为可执行文件的参数(Perl)
重新启动服务器(不仅仅是网站)。它应该工作。不幸的是,如果你想使用这种技术,你需要为每个脚本添加一个映射。 FCGI :: IIS模块试图解决这个问题,但它有很多警告并没有完成。
的Apache 的
我在WAMP上通过将mod_fcgid.so文件复制到适当的目录并更新httpd.conf来测试它:
<IfModule fcgid_module>
FcgidInitialEnv PATH "C:/WINDOWS/system32;C:/WINDOWS;C:/WINDOWS/System32/Wbem;C:/Perl/bin"
FcgidInitialEnv SystemRoot "C:/Windows"
FcgidInitialEnv SystemDrive "C:"
FcgidInitialEnv TEMP "C:/WINDOWS/Temp"
FcgidInitialEnv TMP "C:/WINDOWS/Temp"
FcgidInitialEnv windir "C:/WINDOWS"
FcgidIOTimeout 64
FcgidConnectTimeout 16
FcgidMaxRequestsPerProcess 1000
FcgidMaxProcesses 1
FcgidMaxRequestLen 8131072
<Files ~ "\test_script.fcgi$">
Options Indexes FollowSymLinks ExecCGI
AddHandler fcgid-script .fcgi
FcgidWrapper "C:/Perl/bin/perl.exe c:/wamp/www/test_script.fcgi" .fcgi
</Files>
</IfModule>
我希望能帮助任何人面对与你相同的问题。
莱尔