2011-02-08 15 views
6

Bene, mi chiedo se c'è un modo per eseguire sia rotaie e PHP su Lighty, su Ubuntu. Voglio eseguire entrambi i miei progetti PHP e progetti Rails su un server/dominio.Running Rails e PHP su Lighttpd su Linux

Ho poca esperienza con Linux, quindi perdona la mia ingenuità.

Se c'è un modo di fare questo per favore fatemelo sapere :)

risposta

3

È molto semplice eseguirli entrambi. Lo faccio sempre (ROR per eseguire Redmine e PHP per il resto).

Hai 2 opzioni reali per ROR. O servilo da FastCGI (cosa faccio), o eseguilo con un server standalone (come Mongrel, ecc.) E proxy. Entrambi hanno vantaggi. FastCGI ha il vantaggio di essere autonomo (nessun server secondario da eseguire). Lo standalone ha il vantaggio che è più facile da configurare.

Se hai domande specifiche, posso guidare, ma ci sono guide su internet su come farlo.

mio 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" 
      ) 
     ) 
    ) 
) 

E questo è tutto. Nota l'opzione kill-signal. questo è importante, altrimenti finirai con i processi di zombi ovunque ogni volta che riavvierai il server ...

+0

provandolo ora, sembra che risolva il mio problema: D – Zen

+0

'$ HTTP [" host "] = ~" my.ror.site "' - The '= ~' significa che sta facendo un confronto di espressioni regolari, che potrebbe non essere necessario. Usa '==' quando vuoi fare un confronto tra stringhe normali. [Maggiori informazioni] (http://redmine.lighttpd.net/wiki/lighttpd/Docs:Configuration#Conditional-Configuration). A parte questo, grazie per il campione! –

+0

@Garret: buon punto. In realtà uso regex nel mio (perché ci sono più domini che lo indicano, per alcuni motivi). L'ho appena rimosso (sterilizzato) per postare qui. Ma è qualcosa che vale la pena menzionare ... – ircmaxell

-2

Non faccio uso di Lighty. Rails è meglio servito con Passenger e Apache, considerando la potenza del componente aggiuntivo Passenger per Apache. Ho servito Wordpress (PHP) nello stesso dominio della mia app Rails indicandone il percorso da qualche altra parte. Here's an article to follow. HTH.

+0

Grazie per la risposta, ma ho chiesto aiuto per configurarlo per funzionare su lighty, non su apache. Specificamente non Apache. – Zen

1

Verificare fastcgi.conf nella sottodirectory conf.d della directory di configurazione di Lighty (non è sicuro dove si trova su Ubuntu, ma una ricerca rapida suggerisce /etc/lighttpd). Ci sono esempi commentati per PHP e Rails; combinando i due, dovresti essere in grado di ottenere il set-up che stai cercando (anche se suggerirei di far funzionare prima uno e poi impostare l'altro).

FastCGI è il metodo con cui Lighty può comunicare con runtime come Ruby o PHP. Lighty può anche usare SCGI, anche se non l'ho mai usato io stesso e non sono sicuro di quanto funzioni bene (l'ultima volta che ho sentito che era ancora sperimentale-ish).

Si può anche trovare utile la pagina Optimizing FastCGI sulla documentazione di Lighty, sebbene sia piuttosto specifica per PHP/MySQL.

+0

avrà un aspetto, grazie per la risposta – Zen