2011-02-08 11 views
6

Bueno, me pregunto si hay una forma de ejecutar ambos raíles y PHP en Lighty, en Ubuntu. Quiero ejecutar mis proyectos PHP y proyectos Rails en el servidor/dominio.Running Rails y PHP en Lighttpd en Linux

Tengo poca experiencia con Linux realmente, así que perdona mi ingenuidad.

, si tener una forma de hacer esto, por favor hágamelo saber :)

Respuesta

3

Es bastante simple ejecutar ambos. Lo hago todo el tiempo (ROR para ejecutar Redmine, y PHP para el resto).

Tiene 2 opciones reales para ROR. O lo sirvo desde FastCGI (lo que hago), o lo ejecuto con un servidor independiente (como Mongrel, etc.) y un proxy para él. Ambos tienen ventajas. FastCGI tiene la ventaja de que es autónomo (no se necesita un servidor secundario para ejecutarse). El autónomo tiene la ventaja de que es más fácil de configurar.

Si tiene preguntas específicas, puedo orientarlas, pero hay guías en Internet sobre cómo hacerlo.

Mi lighttpd.conf:

$HTTP["host"] =~ "my.ror.site" { 
    server.error-handler-404="/dispatch.fcgi" 
    fastcgi.server = (".fcgi" => ("ror_1" => (
      "min-procs"=>8, 
      "max-procs" => 8, 
      "socket" => "/tmp/myrorlock.fastcgi", 
      "bin-path"=> "/path/to/ror/site/public/dispatch.fcgi", 
      "kill-signal" => 9, 
      "bin-environment" => ("RAILS_ENV" => "production") 
    ))) 
} 

fastcgi.server = (".php" => 
    (
     (
      "socket" => "/tmp/php-fastcgi.socket", 
      "bin-path" => "/usr/bin/php-cgi -c /etc/php.ini", 
      "min-procs" => 1, 
      "disable-time" => 1, 
      "max-procs" => 1, 
      "idle-timeout" => 20, 
      "broken-scriptfilename" => "enable", 
      "bin-copy-environment"=> (
       "PATH", "SHELL", "USER" 
      ), 
      "bin-environment" => (
       "PHP_FCGI_CHILDREN" => "40", 
       "PHP_FCGI_MAX_REQUEST" => "50000" 
      ) 
     ) 
    ) 
) 

Y eso es todo. Tenga en cuenta la opción kill-signal. eso es importante, de lo contrario terminarás con procesos zombies en todas partes cada vez que reinicies el servidor ...

+0

que intenta que ahora, parece que va a resolver mi problema: D – Zen

+0

'$ HTTP [" host "] = ~" my.ror.site "' - The '= ~' significa que está haciendo una comparación de expresión regular, que puede no ser necesaria. Use '==' cuando quiera hacer una comparación de cadenas normal. [Más información] (http://redmine.lighttpd.net/wiki/lighttpd/Docs:Configuration#Conditional-Configuration). Aparte de eso, ¡gracias por la muestra! –

+0

@Garret: Buen punto. De hecho, uso expresiones regex en el mío (porque hay más de un dominio que lo señala, por algunas razones). Lo eliminé (desinfeccioné) para publicarlo aquí. Pero eso es algo que vale la pena mencionar ... – ircmaxell

-2

No consumo Lighty. Rails se sirve mejor con Passenger y Apache, teniendo en cuenta el poder del complemento Passenger para Apache. Serví WordPress (PHP) en el mismo dominio que mi aplicación Rails apuntando su ruta a otro lugar. Here's an article to follow. HTH.

+0

Gracias por la respuesta, pero pedí ayuda para configurarlo para que funcione en lighty, no en apache. Específicamente no Apache. – Zen

1

Consulte fastcgi.conf en el subdirectorio conf.d del directorio de configuración de Lighty (no estoy seguro de dónde se encuentra en Ubuntu, pero una búsqueda rápida sugiere /etc/lighttpd). Hay ejemplos comentados para PHP y Rails; Combinando los dos, deberías poder obtener la configuración que estás buscando (aunque te sugiero que primero funcione uno y luego configure el otro).

FastCGI es el método por el cual Lighty puede comunicarse con tiempos de ejecución como Ruby o PHP. Lighty también puede usar SCGI, aunque nunca lo he usado yo mismo y no estoy seguro de qué tan bien funciona (lo último que supe es que todavía era experimental).

También puede encontrar útil la página Optimizing FastCGI en la documentación de Lighty, aunque es bastante específica de PHP/MySQL.

+0

echará un vistazo, gracias por la respuesta – Zen