Как настроить Perl / FCGI (FastCGI) с IIS 7.5? - PullRequest
11 голосов
/ 21 мая 2011

Я пытаюсь запустить Perl / FastCGI (FCGI) с IIS 7.5.Версия 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 , так что все должно быть в порядке.)

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.

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

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

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

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

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

Ответы [ 2 ]

2 голосов
/ 11 октября 2014


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

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

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

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

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

IIS 7 :
Диспетчер IIS -> Сайты -> Веб-сайт -> Сопоставления обработчиков -> Добавить сопоставление модулей ...
Путь запроса: test_script.fcgi
Модуль: FastCgiModule
Исполняемый файл: c: \ perl \ bin \ perl.exe | c: \ inetpub \ wwwroot \ test_script.fcgi
Имя: Пример тестирования FCGI
Нажмите OK , затем выберите, чтобы добавить приложение 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>

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


Лайл

2 голосов
/ 01 июля 2011

Я давно этого не делал и никогда с 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

Удачи.

...