2011-05-20 15 views
11

Estoy tratando de ejecutar Perl/FastCGI (FCGI) con IIS 7.5. La versión de C:\Windows\System32\inetsrv\iisfcgi.dll es 7.5.7601.17514. Aquí está mi web.config y mi script de Perl:¿Cómo configurar Perl/FCGI (FastCGI) con 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; 
} 

Todo lo que estoy haciendo es un 500 con una página de error genérico de IIS que indica "El proceso FastCGI salió inesperadamente" y una lista de posibles causas de error.

La secuencia de comandos se ejecuta correctamente desde la línea de comandos, imprime sus tres líneas y luego sale inmediatamente, lo que indica que la secuencia de comandos y la instalación del módulo están bien. (Lo copié de la FCGI manual, dicho sea de paso, por lo que debería estar bien.)

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

1 

Hay un FCGI::IIS module, sin embargo, parece haber funcionado sólo para IIS 5.1 y 6.0.

El hecho de que hay un módulo dedicado para FCGI IIS sugiere que IIS 5.1 y 6.0 siempre que su propia implementación FCGI no estándar. Entonces, si esto fuera cierto, ¿qué pasa con IIS 7.5? Bastantes incertidumbres.

El autor de FCGI::IISseems to have tried to make his module work with IIS 7.0 (Getting Perl working on IIS7 with FastCGI - 2007), pero renunció.

¿Dónde puedo encontrar algo más concreto sobre cuál es el error? ¿Hay un archivo de registro? ¿Qué debería estar buscando en el visor de eventos de Windows (eventvwr)?

¿Hay algún hechizo mágico para IIS que me falta?

No hay mucha información disponible en esta combinación. Pero podría funcionar, al final. Hay un FastCGI Application configuration reference page aquí y someone has got Catalyst to work with FastCGI on IIS 7.0 (Catalyst+IIS 7.0 on MS Windows 2008/Vista).

Respuesta

2

No he hecho esto por un tiempo, y nunca con Cygwin. Con el fin de probar esto podría por favor descargar e instalar los últimos Perl estatales activas para su arquitectura e intente instalar/configurar de la siguiente manera:

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

Otra referencia:

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

Buena suerte.

+0

que siguió los pasos de la segunda URL, y fue capaz de desplegar correctamente, gracias por el enlace! – mrk

2


  Me acabo de encontrar esto. Muchos de los enlaces a los que hace referencia son míos. En el momento en que escribía esas guías, FastCGI for IIS era completamente nuevo, y la versión de Vista aún no había salido. Desafortunadamente, debido al trabajo, terminé en otros proyectos y no tuve la oportunidad de continuar con las guías una vez que salió la versión de Vista (IIS 7).

Acabo de llegar a un proyecto que necesita esto de nuevo, y en la búsqueda de una solución me encontré con su publicación. Hice algunas pruebas y logré encontrar una solución.

FastCGI funciona fundamentalmente diferente en Windows a lo que hace en Linux. No solo se trata de la versión de IIS, sino también de la versión de Apache.

En Linux puede establecer FastCGI como el controlador, y el shebang para el script será suficiente para apuntarlo a Perl y hacer lo correcto (siempre que haya codificado su script para FCGI o CGI :: Fast)

En Windows es necesario que especifique el guión FastCGI desea que se invoca con el manejador:

IIS 7:
Administrador de IIS -> Sitios -> sitio Web -> Asignaciones de controlador -> Agregar Módulo mapeo ...
Solicitud de surco: test_script.fcgi
Módulo: FastCgiModule
ejecutable: C: \ perl \ bin \ perl.exe | c: \ inetpub \ wwwroot \ test_script.fcgi
Nombre: Prueba FCGI ejemplo
Haga clic en OK luego seleccione para agregar la aplicación FastCGI. Si comprueba la configuración de FastCGI para el servidor, necesitará que la parte después del | se establece como los argumentos para el ejecutable (Perl).
Reinicia el servidor (no solo el sitio web). Debería estar funcionando. Lamentablemente, si desea utilizar esta técnica, deberá agregar una asignación para cada secuencia de comandos. El módulo FCGI :: IIS intentó solucionar este problema, pero tiene muchas advertencias y no está terminado.

Apache He probado esto en WAMP copiando el archivo mod_fcgid.so en el directorio adecuado, y la actualización de 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>

espero que ayuda a cualquier persona que enfrenta los mismos problemas como tu.


Lyle

+1

Gracias, Lyle. En este momento me he alejado de esta configuración de Perl/IIS, pero confío en que su actualización beneficie a otros usuarios que buscan asesoramiento en este rincón oscuro del universo de desarrollo web. – Lumi

Cuestiones relacionadas