Como configuro o Apache com FastCGI e Ruby?

8

Eu tenho lido muitas postagens nos fóruns, tutoriais, etc., sobre como configurar o apache no linux com o fastcgi. Eu estou tentando executar o fcgi para alguns dos meus desenvolvimentos ruby (não trilhos), mas eu acho que deve ser aplicado a qualquer idioma. Por favor, note que eu já tenho o apache, fastcgi, ruby-fcgi e similares já instalados na minha caixa web.

Conceitualmente, estou tendo dificuldades com isso. O apache gera os processos fcgi especificados conforme necessário? Eu começo eles ao lado do apache? Basicamente, estou tentando chegar a um ponto em que posso fazer as perguntas adequadas, então peço desculpas se o título for enganoso.

    
por sdellysse 25.01.2010 / 16:14

4 respostas

8

Bem, enquanto isso, percebi isso. Desde que não houve writeup conciso sobre este assunto, aqui está o começo de um. Quando eu tiver todos os bugs resolvidos, enviarei isso para alguns sites de tutorial.

  1. Certifique-se de que o módulo de base do apache fastcgi esteja instalado. Se você usa o ArchLinux como eu, o mod_fcgid no aur funciona. Em outras distribuições, instale mod_fcgid ou mod_fastcgi. (Para aqueles que se perguntam a diferença, eu não acho que há muito, então eu fui para aquele com mais atividade.)

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

  3. Adicione uma nova seção ao seu httpd.conf. Eu coloquei isso apenas sob a seção cgid_module, mas tenho certeza que a localização seria arbitrária.

    <IfModule fcgid_module>
      AddHandler fcgid-script .fgci
    </IfModule>
    
  4. Agora, do meu ponto de vista, qualquer arquivo com a extensão .fcgi em um diretório marcado como ExecCGI agora será manipulado pelo módulo fastcgi que foi instalado. Eu instalei o pacote this para dar ao Ruby as ligações fastcgi, dentro de um diretório ExecCGI, eu escrevi este script de teste test.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ê vai para essa página em seu navegador, como count está fora do loop fastcgi, ele deve ser incrementado a cada visualização de página. Se for assim, o fcgi está configurado corretamente.

    
por 26.04.2015 / 16:26
1

Você deve procurar usar o Passenger para administrar seu aplicativo rails (mesmo se você não estiver usando nenhum recurso de trilhos como o ActiveRecord, etc.). Existem muitos sites rodando nele (além disso, eles têm o Rails Enterprise, menos memória, melhor desempenho)

    
por 25.01.2010 / 19:50
1

Does apache spawn the specified fcgi processes as needed? Do I start them along side 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 ele irá gerar novos e matar os obsoletos com base no volume de solicitações recebidas. Contanto que você receba solicitações, seu processo continuará sendo executado.

    
por 02.06.2010 / 22:39
0

O Apache deve gerá-los usando a interface fastcgi. Isso os deixará em execução por algum tempo, e cada processo deverá lidar com mais de uma solicitação antes de ser finalizado pelo Apache.

    
por 25.01.2010 / 16:20