O que especificamente faz o FastCGI (para Ruby, Java e Python)?

3

Se eu tiver um servidor executando o Apache e eu instalar o FastCGI, isso me permitiria executar scripts Ruby e Python? Se o Python já estiver instalado no servidor, eu não seria capaz de adicionar o .py à seção CGI no arquivo httpd.conf para ter scripts Python funcionando?

Para Ruby e Java, isso elimina a necessidade do Mongrel e do Tomcat se o Ruby e o Java estiverem instalados?

A menos que eu esteja sentindo falta de algo, parece que o FastCGI permite que você faça o que você já pode fazer.

    
por SJaguar13 18.01.2010 / 18:58

2 respostas

4

O FastCGI é um substituto para scripts CGI "padrão".

No CGI da velha guarda, o servidor web iniciava seu script, enviava um pedido, aguardava uma resposta e esperava que seu script terminasse.

A principal característica do FastCGI é que seu script não morre, mas fica aguardando por outro pedido. Isso torna muito mais eficiente porque outro processo não é criado, o script provavelmente interpretado não é recarregado, etc. Esta é uma grande vitória para Perl, Ruby e praticamente todos os outros idiomas.

A desvantagem é que seu script deve ser escrito para lidar com esse tipo de coisa. Não é difícil.

Portanto, o FastCGI tem tudo a ver com reduzir o impacto do atendimento de uma solicitação.

Se você estiver usando o Ruby on Rails (não apenas o Ruby), procure o Phusion Passenger. É um incrível plug-in de servidor que torna o Ruby on Rails muito legal.

Quanto ao mod_python, você certamente pode fazer isso. No entanto, existem trade-offs. Por um lado, um script CGI pode ser executado como outro usuário que o servidor web principal. Eu não sei se o mod_python faz isso. Pode ser muito útil poder ser executado como um usuário diferente para problemas de permissão, mantendo aplicativos separados executando em diferentes usuários, etc.

Então, para responder à sua pergunta de forma um pouco diferente, se você estiver disposto a usar o mod_python e o Phusion Passenger, não será necessário usar o FastCGI. Se você precisar executar os scripts em um processo diferente do servidor, use o FastCGI, se possível, em CGI simples.

    
por 18.01.2010 / 19:52
0

O FastCGI é uma versão otimizada do CGI. Ele corresponde à interface do CGI, adicionando computação distribuída.

Você pode executar scripts python através da CGI (os módulos cgitb são úteis), mas geralmente é melhor usar uma estrutura como o mod_python para desempenho e razão de recurso. A situação é semelhante com Ruby e Java.

Não sei o que você está tentando fazer. Você não pode simplesmente substituir o Mongrel ou o Tomcat pelo FastCGI. Eles são animais completamente diferentes. Você precisa reescrever o aplicativo para ajustar a interface ao servidor da web.

    
por 18.01.2010 / 19:36