¿Qué hace específicamente FastCGI (para Ruby, Java y Python)?

¿Qué hace específicamente FastCGI (para Ruby, Java y Python)?

Si tengo un servidor que ejecuta Apache e instalo FastCGI, ¿eso me permitiría ejecutar scripts de Ruby y Python? Si Python ya está instalado en el servidor, ¿no podría simplemente agregar .py a la sección CGI en el archivo httpd.conf para que los scripts de Python funcionen?

Para Ruby y Java, ¿elimina la necesidad de Mongrel y Tomcat si Ruby y Java están instalados?

A menos que me esté perdiendo algo, parece que FastCGI sólo te permite hacer lo que ya puedes hacer.

Respuesta1

FastCGI es un reemplazo de los scripts CGI "estándar".

En CGI de la vieja escuela, el servidor web iniciaba su script, le enviaba una solicitud, esperaba una respuesta y luego esperaba que su script terminara.

La característica principal de FastCGI es que su script no muere, sino que permanece esperando otra solicitud. Esto lo hace mucho más eficiente porque no se crea otro proceso, el script probablemente interpretado no se recarga, etc. Esta es una gran victoria para Perl, Ruby y casi todos los demás lenguajes.

La desventaja es que su script debe estar escrito para manejar este tipo de cosas. No es dificil.

Entonces, FastCGI tiene como objetivo reducir el impacto de atender una solicitud.

Si está utilizando Ruby on Rails (no solo Ruby), busque Phusion Passenger. Es un complemento de servidor increíble que hace que ejecutar Ruby on Rails sea bastante agradable.

En cuanto a mod_python, ciertamente puedes hacerlo. Sin embargo, existen compensaciones. Por un lado, un script CGI puede ejecutarse como un usuario distinto del servidor web principal. No sé si mod_python hace esto. Puede resultar muy útil poder ejecutar como un usuario diferente por problemas de permisos, mantener las aplicaciones separadas al ejecutarse en diferentes usuarios, etc.

Entonces, para responder a su pregunta de manera un poco diferente, si está dispuesto a usar mod_python y Phusion Passenger, entonces no necesita usar FastCGI. Si debe ejecutar los scripts en un proceso diferente al del servidor, entonces querrá usar FastCGI si puede, en lugar del CGI antiguo.

Respuesta2

FastCGI es una versión optimizada de CGI. Coincide con la interfaz de CGI, agregando computación distribuida.

Puede ejecutar scripts de Python a través de CGI (los módulos cgitb son útiles), pero generalmente es mejor usar un marco como mod_python por motivos de rendimiento y funciones. La situación es similar con Ruby y Java.

No estoy seguro de lo que estás intentando hacer. No puedes simplemente reemplazar Mongrel o Tomcat con FastCGI. Son bestias completamente diferentes. Debe reescribir la aplicación para que se ajuste a la interfaz del servidor web.

información relacionada