我有一个旧网站,需要在新服务器(Windows Server 2008 R2 和 IIS 7.5)上继续运行。该网站使用 Perlfect 搜索 (http://www.perlfect.com/freescripts/search/),它需要 Perl 和 DB_File Perl 模块。最新版本的 ActiveState Perl(5.10 及更高版本)附带一个脚本,可以正确与 IIS 7.5 配合使用,但由于某种原因无法运行 DB_File(详细信息可在 ActiveState 网站上找到)。可以在 Windows 上运行 DB_File 的最新版本的 ActiveState Perl 是 5.8,但该版本不附带配置 IIS 7.5 的脚本。
答案1
我无法在“Windows 上没有适用于 Perl 5.10 + 的 DB_File”上取得任何进展,因此我决定解决将 Perl 5.8 与 IIS 7.5 集成的问题。
我安装了 ActiveState Perl 5.8.7 (32 位)。我使用 ppm (安装 DB_File) 安装了 DB_File。我通过首先运行 indexer.pl 脚本,然后使用 search.pl 脚本运行搜索,验证了 Perlfect 是否在命令行中运行。
为了使 Perl 脚本在 IIS 中运行,我修改了 IIS 7.5 中 PHP 的说明,网址为http://www.go2inbox.com/infob/readinfo.php?readinfo=1688
- 打开 IIS
- 单击左侧面板中的网络服务器名称
- 双击中间窗格 IIS 部分中的处理程序映射图标
- 单击位于右侧操作下的“添加脚本图”。
- 在弹出的窗口中将“请求路径:”设置为“*.pl”,将“可执行文件:”设置为“c:\perl\bin\perlis.dll”,将“名称”设置为“Perl”,然后单击“确定”。
- 在询问您是否要启用此 ISAPI 脚本的对话框中选择“是”
- 单击 IIS 左侧窗格中的“应用程序池”。在中间窗格中,右键单击您正在使用的应用程序池(在我的情况下为“DefaultAppPool”)。
- 选择高级设置
- 将“启用 32 位应用程序”设置为 True(我没有测试 64 位版本的 Perl)。
- 单击左侧窗格中的网络服务器,然后单击右侧窗格中出现的“重新启动”链接。
这对我来说是有用的。我应该能够勉强坚持下去,直到我们将搜索功能升级到 21 世纪。
答案2
由于软件包存在一些怪异之处,我从 ActivePerl 转到了 Strawberry Perl。它更接近 *nix Perl,而且由于它安装了 C 编译器,因此您可以原生使用 CPAN。