¿Cómo configuro Apache con FastCGI y Ruby?

¿Cómo configuro Apache con FastCGI y Ruby?

He estado leyendo muchas publicaciones en foros, tutoriales, etc. sobre la configuración de Apache en Linux con fastcgi. Estoy intentando ejecutar fcgi para parte de mi desarrollo Ruby (no rieles), pero creo que debería aplicarse a cualquier idioma. Tenga en cuenta que ya tengo Apache, fastcgi, ruby-fcgi y similares instalados en mi cuadro web.

Conceptualmente, lo estoy pasando mal. ¿Apache genera los procesos fcgi especificados según sea necesario? ¿Los inicio junto con Apache? Básicamente, estoy tratando de llegar a un punto en el que pueda hacer las preguntas adecuadas, así que me disculpo si el título es engañoso.

Respuesta1

Bueno, mientras tanto, descubrí esto. Dado que no hubo un artículo conciso sobre este tema, aquí está el comienzo de uno. Cuando haya solucionado todos los errores, lo enviaré a algunos sitios de tutoriales.

  1. Asegúrese de que el módulo base fastcgi apache esté instalado. Si usas ArchLinux como yo,mod_fcgid en el aurobras. En otras distribuciones, instale mod_fcgid o mod_fastcgi. (Para aquellos que se preguntan la diferencia, no creo que haya mucha, así que elegí el que tiene más actividad).

  2. En su archivo httpd.conf, active el módulo agregando una línea al comienzo de sus definiciones de LoadModule. No estoy seguro si importa qué distribuciones, pero en Arch eraLoadmodule fcgid_module modules/mod_fcgid.so

  3. Agregue una nueva sección a su httpd.conf. Puse esto justo debajo de la sección cgid_module, pero estoy bastante seguro de que la ubicación sería arbitraria.

    <IfModule fcgid_module>
      AddHandler fcgid-script .fgci
    </IfModule>
    
  4. Ahora, según tengo entendido, cualquier archivo que tenga la extensión .fcgi en un directorio marcado como ExecCGI ahora será manejado por el módulo fastcgi que se instaló. lo instaléestepaquete para darle a Ruby los enlaces fastcgi, y dentro de un directorio ExecCGI, escribí este script de pruebatest.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
    

Ahora, cuando vaya a esa página en su navegador, dado que countestá fuera del bucle fastcgi, debería incrementarse con cada vista de página. Si es así, fcgi está configurado correctamente.

Respuesta2

Deberías considerar el usoPasajeropara manejar su aplicación Rails (incluso si no está utilizando ninguna característica de Rails como ActiveRecord, etc.). Hay muchos sitios web ejecutándose en él (además, tienen Rails Enterprise, menos memoria, mejor rendimiento)

Respuesta3

Apache debería generarlos usando la interfaz fastcgi. Sin embargo, los dejará ejecutándose durante algún tiempo y se espera que cada proceso maneje más de una solicitud antes de que Apache lo finalice.

Respuesta4

¿Apache genera los procesos fcgi especificados según sea necesario? ¿Los inicio junto con Apache?

Apache los generará por ti. Puede establecer una cantidad mínima y máxima de procesos para que se generen en su httpd.conf, y generará nuevos y eliminará los obsoletos según el volumen de solicitudes entrantes. Mientras reciba solicitudes, su proceso seguirá ejecutándose.

información relacionada