Как настроить Perl / FCGI (FastCGI) с IIS 7.5?

Я пытаюсь запустить Perl / FastCGI (FCGI) с IIS 7.5. Версия C:WindowsSystem32inetsrviisfcgi.dll и 7.5.7601.17514. Вот мой web.config и мой Perl-скрипт:

D:MiLuDev :: 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:OptCygwinbinperl.exe"
    resourceType="Unspecified" requireAccess="Script" />
  </handlers>
 </system.webServer>
</configuration>

D:MiLuDev :: more /t4 Perlfcgicount.pl
use strict;
use warnings;
use FCGI;

my $count = 0;
my $request = FCGI::Request();

while ( $request->Accept >= 0 ) {
    print "Content-type: text/htmlrnrn", ++$count;
}

все, что я получаю, это 500 с общей страницей ошибок из IIS с указанием "процесс FastCGI неожиданно вышел" и перечислением возможных причин ошибки.

скрипт отлично работает из командной строки, печатая три строки, а затем сразу же выходит, указывая, что установка скрипта и модуля в порядке. (Я скопировал его из руководство FCGI, кстати, так что все должно быть в порядке.)

D:MiLuDev :: C:OptCygwinbinperl.exe Perlfcgicount.pl
Content-type: text/html

1

есть FCGI::IIS module, однако, похоже, что он работал только для IIS 5.1 и 6.0.

тот факт, что существует выделенный модуль FCGI для IIS, предполагает, что IIS 5.1 и 6.0 предусмотрена собственная нестандартная реализация FCGI. Итак, если это правда,как насчет IIS 7.5? Довольно много неопределенностей.

автор FCGI::IIS кажется, пытался заставить его модуль работать с IIS 7.0 (получение Perl, работающего на IIS7 с FastCGI - 2007), но сдался.

где я могу найти что-то более конкретное, какие ошибки? Есть лог-файл? Что я должен искать в средстве просмотра событий Windows (команду eventvwr)?

есть ли какое-то магическое заклинание для IIS, которое мне не хватает?

там не так много информации об этой комбинации. Но в конце концов это может сработать. Есть справочная страница конфигурации приложения FastCGI здесь и у кого-то есть Catalyst для работы с FastCGI на IIS 7.0 (Catalyst+IIS 7.0 на MS Windows 2008/Vista).

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

удачи.



  Я только что наткнулся на это. Многие ссылки, на которые вы ссылаетесь, мои. В то время я писал это руководство FastCGI для IIS был совершенно новым, и версия Vista еще не вышла. К сожалению, из-за работы я оказался на других проектах и не получил возможности продолжить работу с гидами после выхода версии Vista (IIS 7).

Я только что пришел к проекту, который нуждается в этом снова, и в поисках решения я сам наткнулся на ваш пост. Я провел некоторое тестирование и сумел найти решение.

FastCGI работает принципиально иначе в Windows, чем в Linux. Это не только с версией IIS, но и с версией Apache.

в Linux вы можете установить FastCGI в качестве обработчика, и shebang для скрипта будет достаточно, чтобы указать его на Perl и сделать правильную вещь (если вы закодировали свой скрипт для FCGI или CGI::Fast).

в Windows необходимо указать скрипт FastCGI вы хотите быть вызваны с помощью обработчика:

IIS 7:
Диспетчер IIS - > сайты - > веб-сайт - > сопоставления обработчиков - > добавить сопоставление модулей...
Путь запроса: test_script.fcgi по
Модуль: FastCgiModule
Исполняемый файл: c:\perl\bin\perl - ... ехе|C: в папке\inetpub\wwwroot в\test_script.fcgi по
Имя: тест FCGI example
Нажмите OK затем выберите, чтобы добавить приложение FastCGI. Если вы проверяете настройки FastCGI для сервера, вам понадобится часть после | устанавливается в качестве аргументов исполняемому файлу (Perl).
Перезапустите сервер (не только сайт). Это должно сработать. К сожалению, если вы хотите использовать этот метод, вам нужно добавить сопоставление для каждого скрипта. Модуль FCGI::IIS попытался обойти эту проблему, но он имеет много предостережений и не завершен.

Apache Я протестировал это на WAMP, скопировав mod_fcgid.поэтому файл в соответствующий каталог и обновление файл 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>

Я надеюсь, что это поможет любому, кто сталкивается с теми же проблемами, что и вы.


Лайл!--4-->