如何使用IIS 7.5配置Perl / FCGI(FastCGI)?

时间:2011-05-20 21:33:31

标签: perl iis iis-7.5 fastcgi

我正在尝试使用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 pagesomeone has got Catalyst to work with FastCGI on IIS 7.0 (Catalyst+IIS 7.0 on MS Windows 2008/Vista)

2 个答案:

答案 0 :(得分:2)

我暂时没有这样做,也从未和Cygwin合作过。 为了测试这个,请下载并安装最新的活动状态perl,用于您的架构,并尝试安装/配置如下:

http://legacy.websitepanel.net/kb/installing-and-running-active-perl-runtime-as-isapi-on-microsoft-iis-7.0

另一个参考:

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>

我希望能帮助任何人面对与你相同的问题。


莱尔