Como configuro o Apache com FastCGI e Ruby?

Como configuro o Apache com FastCGI e Ruby?

Eu tenho lido muitos posts em fóruns, tutoriais, etc., sobre como configurar o Apache no Linux com fastcgi. Estou tentando executar o fcgi para parte do meu desenvolvimento Ruby (não Rails), mas acho que deve se aplicar a qualquer linguagem. Observe que já tenho Apache, fastcgi, ruby-fcgi e similares instalados em minha caixa da web.

Conceitualmente, estou tendo dificuldades com isso. O Apache gera os processos fcgi especificados conforme necessário? Devo iniciá-los junto com o Apache? Basicamente, estou tentando chegar a um ponto em que sou capaz de fazer as perguntas adequadas, então peço desculpas se o título for enganoso.

Responder1

Bem, enquanto isso, eu descobri isso. Como não houve nenhum artigo conciso sobre esse assunto, aqui está o início de um. Quando eu tiver resolvido todos os bugs, enviarei isso para alguns sites de tutoriais.

  1. Certifique-se de que o módulo base fastcgi apache esteja instalado. Se você usa ArchLinux como eu,mod_fcgid no aurfunciona. Em outras distribuições, instale mod_fcgid ou mod_fastcgi. (Para quem se pergunta a diferença, acho que não tem muita, então optei por aquele com mais atividade.)

  2. Em seu arquivo httpd.conf, ative o módulo adicionando uma linha no início de suas definições de LoadModule. Não tenho certeza se importa quais distribuições, mas no Arch foiLoadmodule fcgid_module modules/mod_fcgid.so

  3. Adicione uma nova seção ao seu httpd.conf. Coloquei isso logo abaixo da seção cgid_module, mas tenho certeza de que a localização seria arbitrária.

    <IfModule fcgid_module>
      AddHandler fcgid-script .fgci
    </IfModule>
    
  4. Agora, pelo que entendi, qualquer arquivo com a extensão .fcgi em um diretório marcado como ExecCGI será agora tratado pelo módulo fastcgi que foi instalado. Eu instaleiessepacote para fornecer ao Ruby as ligações fastcgi, e dentro de um diretório ExecCGI, escrevi este script de testetest.rb.fcgi

    #!/usr/bin/ruby -w
    require 'fcgi'
    
    count = 0
    FCGI.each_cgi do
      puts "Content-type: text/html\n\n"
      puts "Hello, Ruby! FastCGI(#{count})"
      count = count + 1
    end
    

Agora, quando você acessa essa página em seu navegador, por countestar fora do loop fastcgi, ela deve aumentar a cada visualização de página. Se for assim, o fcgi está configurado corretamente.

Responder2

Você deve tentar usarPassageiropara lidar com seu aplicativo Rails (mesmo se você não estiver usando nenhum recurso Rails como ActiveRecord etc.). Existem muitos sites rodando nele (além de terem Rails Enterprise, menos memória, melhor desempenho)

Responder3

O Apache deve gerá-los usando a interface fastcgi. No entanto, isso os deixará em execução por algum tempo e espera-se que cada processo lide com mais de uma solicitação antes de ser encerrado pelo Apache.

Responder4

O Apache gera os processos fcgi especificados conforme necessário? Devo iniciá-los junto com o Apache?

O Apache irá gerá-los para você. Você pode definir um número mínimo e máximo de processos para gerar em seu httpd.conf, e isso gerará novos e eliminará os obsoletos com base no volume de solicitações recebidas. Enquanto você receber solicitações, seu processo continuará em execução.

informação relacionada