Как настроить 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://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-->