2011-05-20 4 views
11

J'essaye de faire fonctionner Perl/FastCGI (FCGI) avec IIS 7.5. La version de C:\Windows\System32\inetsrv\iisfcgi.dll est 7.5.7601.17514. Voici mon web.config et mon script Perl:Comment configurer Perl/FCGI (FastCGI) avec IIS 7.5?

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; 
} 

Tout ce que je reçois est un 500 avec une page d'erreur générique de IIS indiquant « Le processus FastCGI est sorti de façon inattendue » et la liste des causes d'erreur possibles.

Le script s'exécute correctement à partir de la ligne de commande, en imprimant ses trois lignes puis en s'exécutant immédiatement, indiquant que l'installation du script et du module est correcte. (Je l'ai copié du FCGI manual, en passant, il devrait donc être bien.)

D:\MiLu\Dev :: C:\Opt\Cygwin\bin\perl.exe Perl\fcgi\count.pl 
Content-type: text/html 

1 

Il y a un FCGI::IIS module, cependant, il semble avoir travaillé seulement pour IIS 5.1 et 6.0.

Le fait qu'il ya un module dédié pour FCGI IIS suggère que IIS 5.1 et 6.0 à condition que leur propre implémentation de FCGI non standard. Donc, si cela était vrai, qu'en est-il de IIS 7.5 alors? Assez d'incertitudes. L'auteur de FCGI::IISseems to have tried to make his module work with IIS 7.0 (Getting Perl working on IIS7 with FastCGI - 2007), mais abandonné. Où puis-je trouver quelque chose de plus concret quant à la nature de l'erreur? Y a-t-il un fichier journal? Que devrais-je rechercher dans l'Observateur d'événements Windows (eventvwr)?

Y a-t-il une incantation magique pour IIS qui me manque?

Il n'y a pas beaucoup d'informations sur cette combinaison. Mais cela pourrait fonctionner, à la fin. Il y a un FastCGI Application configuration reference page ici, et someone has got Catalyst to work with FastCGI on IIS 7.0 (Catalyst+IIS 7.0 on MS Windows 2008/Vista).

Répondre

2

Je n'ai pas fait cela depuis longtemps, et jamais avec Cygwin. Pour tester cela pourrait vous s'il vous plaît télécharger et installer les derniers perl état actif pour votre architecture et essayez d'installer/configuration comme ci-dessous:

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

Une autre référence:

http://blogs.iis.net/wadeh/archive/2009/04/13/running-perl-on-iis-7.aspx

Bonne la chance.

+0

J'ai suivi les étapes de la 2ème URL, et a pu déployer correctement, merci pour le lien! – mrk

2


  Je viens juste de rencontrer ça. Beaucoup des liens que vous référencez sont à moi. Au moment où j'écrivais ce guide FastCGI pour IIS était tout nouveau, et la version Vista n'était pas encore sorti. Malheureusement, en raison de mon travail, je me suis retrouvé sur d'autres projets et je n'ai pas eu l'occasion de continuer avec les guides une fois que la version Vista (IIS 7) est sortie.

Je viens juste d'arriver à un projet qui en a encore besoin, et en cherchant une solution, je suis tombé sur votre article. J'ai fait quelques tests et réussi à trouver une solution.FastCGI fonctionne fondamentalement différemment sous Windows pour ce qu'il fait sous Linux. Ce n'est pas seulement avec la version IIS, mais aussi avec la version Apache. Sous Linux, vous pouvez définir FastCGI en tant que gestionnaire, et le shebang pour le script suffira à le pointer vers Perl et à faire ce qu'il faut (du moment que vous avez codé votre script pour FCGI ou CGI :: Fast).

Sous Windows, vous devez spécifier le script FastCGI vous voulez être appelé avec le gestionnaire:

IIS 7:
Gestionnaire des services Internet -> Sites -> Site Web -> Mappages -> Ajouter un module cartographie ...
Demande chemin: test_script.fcgi
Module: FastCgiModule
Executable: c: \ perl \ bin \ perl.exe | c: \ inetpub \ wwwroot \ test_script.fcgi
Nom: test FCGI exemple
Cliquez sur OK puis sélectionnez pour ajouter l'application FastCGI. Si vous vérifiez les paramètres FastCGI pour le serveur, vous aurez besoin que la partie après le | est défini comme les arguments de l'exécutable (Perl).
Redémarrez le serveur (pas seulement le site Web). Ça devrait marcher. Malheureusement, si vous voulez utiliser cette technique, vous devrez ajouter un mapping pour chaque script. Le module FCGI :: IIS a tenté de contourner ce problème, mais il comporte de nombreuses mises en garde et n'est pas terminé.

Apache Je l'ai testé sur cette WAMP en copiant le fichier mod_fcgid.so dans le répertoire approprié et la mise à jour 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>

J'espère que cela aide quelqu'un face aux mêmes problèmes comme toi.


Lyle

+1

Merci, Lyle. Je me suis maintenant éloigné de cette configuration de Perl/IIS, mais j'espère que votre mise à jour bénéficiera aux autres utilisateurs qui cherchent des conseils dans ce coin quelque peu sombre de l'univers du développement Web. – Lumi