Configurare Ruby On Rails un su server web di produzione: differenze tra le versioni

nessun oggetto della modifica
(Modifiche minori: aggiunta di un link, segnalazione versioni compatibili)
Nessun oggetto della modifica
Riga 8: Riga 8:
Tutte le richieste arriveranno al server web apache, che si occuperà di dirottare le richieste dinamiche a uno dei server mongrel, mentre servirà i contenuti di tipo statico direttamente, senza così appesantire le istanze di mongrel con richieste che possono essere processate direttamente da apache.
Tutte le richieste arriveranno al server web apache, che si occuperà di dirottare le richieste dinamiche a uno dei server mongrel, mentre servirà i contenuti di tipo statico direttamente, senza così appesantire le istanze di mongrel con richieste che possono essere processate direttamente da apache.


Questa struttura, inoltre, permette espansioni future per garantire una buona scalabilità in caso di un forte aumento delle richieste: potremo, in futuro, spostare le verie istanze di mongrel su server differenti, distribuire il filesystem in modo da avere "più apache" pronti ad accettare le richieste, ...
Questa struttura, inoltre, permette espansioni future per garantire una buona scalabilità in caso di un forte aumento delle richieste: potremo, in futuro, spostare le varie istanze di mongrel su server differenti, distribuire il filesystem in modo da avere "più apache" pronti ad accettare le richieste, etc.




Riga 23: Riga 23:


L'installazione base di apache, però, non è sufficiente per i nostri fini, infatti dobbiamo abilitare alcuni moduli:
L'installazione base di apache, però, non è sufficiente per i nostri fini, infatti dobbiamo abilitare alcuni moduli:
* deflate
* <code>deflate</code>
* proxy_balancer
* <code>proxy_balancer</code>
* proxy_connect
* <code>proxy_connect</code>
* proxy_html
* <code>proxy_html</code>
* proxy_http
* <code>proxy_http</code>
* proxy
* <code>proxy</code>
* rewrite
* <code>rewrite</code>.


Per abilitarli:
Per abilitarli:
Riga 42: Riga 42:
</pre>
</pre>


La configurazione di default del modulo proxy permette connessioni solo dall'indirizzo ip 127.0.0.1. Questa situazione rende impossibile, però, l'accesso al VirtualHost che andremo a configurare dall'esterno. A tal proposito dobbiamo modificare il file di configurazione del modulo (''nome del file di configurazione'') modificando la seguente riga:
La configurazione di default del modulo <code>proxy</code> permette connessioni solo dall'indirizzo ip 127.0.0.1. Questa situazione rende impossibile, però, l'accesso al VirtualHost che andremo a configurare dall'esterno. A tal proposito dobbiamo modificare il file di configurazione del modulo (''nome del file di configurazione'') modificando la seguente riga:


<pre>
<pre>
Riga 126: Riga 126:


Nei dettagli tutte le voci:
Nei dettagli tutte le voci:
; cwd : ''current work directory'', cioè la directory in cui è presente l'applicativo. È consigliato usare SEMPRE un percorso assoluto.
; <code>cwd</code>: ''current work directory'', cioè la directory in cui è presente l'applicativo. È consigliato usare SEMPRE un percorso assoluto;
; log_file : dove conservare i log di mongrel. Il valore di default va più che bene
; <code>log_file</code>: dove conservare i log di mongrel. Il valore di default va più che bene;
; port : la porta iniziale per l'array di server mongrel
; <code>port</code>: la porta iniziale per l'array di server mongrel;
; environment : l'envirorment di rails da utilizzare... normalmente si usa production (essendo un server di produzione), ma in casi particolari si può inserire un nuovo ambiente.
; <code>environment</code>: l'environment di rails da utilizzare: normalmente si usa production (essendo un server di produzione), ma in casi particolari si può inserire un nuovo ambiente;
; address : l'indirizzo IP su cui mettersi in ascolto. Le scelte più comuni sono:
; <code>address</code>: l'indirizzo IP su cui mettersi in ascolto. Le scelte più comuni sono:
:; 127.0.0.1 : il cluster sarà raggiungibile solo da applicazioni residenti sul server su cui è in esecuzione mongrel, impostazione consigliata a meno di configurazioni più complesse
:; <code>127.0.0.1</code>: il cluster sarà raggiungibile solo da applicazioni residenti sul server su cui è in esecuzione mongrel, impostazione consigliata a meno di configurazioni più complesse;
:; 0.0.0.0 : il cluster sarà raggiungibile da qualsiasi indirizzo esterno, scelta sconsigliata a meno che non ci si trovi in un ambiente protetto
:; <code>0.0.0.0</code>: il cluster sarà raggiungibile da qualsiasi indirizzo esterno, scelta sconsigliata a meno che non ci si trovi in un ambiente protetto;
; pid_file : dove inserire i [[pid]] dei vari processi mongrel
; <code>pid_file</code>: dove inserire i [[pid]] dei vari processi mongrel;
; servers : il numero di server mongrel da lanciare.
; <code>servers</code>: il numero di server mongrel da lanciare;
; user : l'utente che sarà usato per lanciare i server mogrel
; <code>user</code>: l'utente che sarà usato per lanciare i server mogrel;
; group : come sopra, ma relativo al gruppo
; <code>group</code>: come sopra, ma relativo al gruppo


{{box|Nota:|se si specifica un utente diverso da ''www-data'', sarà necessario crearlo... normalmente si utilizza l'utente ''mongrel'', e lo si può creare nel seguente modo:
{{box|Nota:|se si specifica un utente diverso da ''www-data'', sarà necessario crearlo: normalmente si utilizza l'utente ''mongrel'', e lo si può creare nel seguente modo:
<pre>
<pre>
# adduser --system mongrel  --no-create-home --disabled-login --disabled-password
# adduser --system mongrel  --no-create-home --disabled-login --disabled-password
Riga 200: Riga 200:
</VirtualHost>
</VirtualHost>
</pre>
</pre>
le spiegazioni sono nei commenti del file di configuarzione. Consiglio di non cancellarli quando si utilizza questo template, in quanto possono sempre tornare utili nel futuro ;)
le spiegazioni sono nei commenti del file di configurazione. Consiglio di non cancellarli quando si utilizza questo template, in quanto possono sempre tornare utili nel futuro. ;)


= Avvio, Arresto e Riavvio di un cluster Mongrel =
= Avvio, Arresto e Riavvio di un cluster Mongrel =
Riga 212: Riga 212:


== Inserimento nel processo di Boot ==
== Inserimento nel processo di Boot ==
Giunti a questo punto siamo in grado di gestire manualmente l'avvio, l'arresto e il riavvio di un cluster mongrel, però siamo di fronte ad un problema: in caso di riavvio (accidentale o no) della macchina dovremo avviare manualmente tutti i vari cluster... questo problema non è assolutamente accettabile in un ambiente di produzione!!!
Giunti a questo punto siamo in grado di gestire manualmente l'avvio, l'arresto e il riavvio di un cluster mongrel, però siamo di fronte ad un problema: in caso di riavvio (accidentale o no) della macchina dovremo avviare manualmente tutti i vari cluster, questo non è assolutamente accettabile in un ambiente di produzione!!!


Per ovviare a tutti ciò, inseriremo negli script di boot (e di shutdown) uno script che si prenderà il carico di avviare tutti i cluster mongrel da noi specificati.
Per ovviare a tutti ciò, inseriremo negli script di boot (e di shutdown) uno script che si prenderà il carico di avviare tutti i cluster mongrel da noi specificati.


=== File di Configurazione ===
=== File di Configurazione ===
I file di configurazione che verranno letti dallo script andranno inseriti nella directory '''/etc/mongrel_cluster/'''.  
I file di configurazione che verranno letti dallo script andranno inseriti nella directory <code>'''/etc/mongrel_cluster/'''</code>.  
Normalmente non è una buona idea, nelle applicazioni in ruby on rails, inserire file di un progetto all'esterno della directory del progetto stesso, in quanto richiederebbe sempre un accesso alla macchina per l'aggiornamento del file di configurazione del cluster, soprattutto se si utilizza il comodo sistema di deploy ''capistrano''.
Normalmente non è una buona idea, nelle applicazioni in ruby on rails, inserire file di un progetto all'esterno della directory del progetto stesso, in quanto richiederebbe sempre un accesso alla macchina per l'aggiornamento del file di configurazione del cluster, soprattutto se si utilizza il comodo sistema di deploy ''capistrano''.


Per semplificarci la vita useremo un link simbolico. Supponiamo che la nostra applicazione sia in '''/opt/ror/''', e che il file di configurazione sia nella directory di configurazione dell'applicativo: '''/opt/ror/config/'''
Per semplificarci la vita useremo un link simbolico. Supponiamo che la nostra applicazione sia in <code>'''/opt/ror/'''</code>, e che il file di configurazione sia nella directory di configurazione dell'applicativo: <code>'''/opt/ror/config/'''</code>.


<pre>
<pre>
Riga 227: Riga 227:


=== Inserimento dello script ===
=== Inserimento dello script ===
Lo script si trova in '''/usr/lib/ruby/gems/1.8/gems/mongrel_cluster-1.0.5/resources/mongrel_cluster''' (supponendo di avere installata la versione 1.0.5 di mongrel_cluster.  
Lo script si trova in <code>'''/usr/lib/ruby/gems/1.8/gems/mongrel_cluster-1.0.5/resources/mongrel_cluster'''</code> (supponendo di avere installata la versione 1.0.5 di mongrel_cluster).  
Per inserirlo nel processo di avvio è sufficiente eseguire i seguenti comandi:
Per inserirlo nel processo di avvio è sufficiente eseguire i seguenti comandi:
<pre>
<pre>
Riga 235: Riga 235:


= Conclusione =
= Conclusione =
Giunti a questo punto abbiamo configurato alla perfezione sia apache che mongrel. Se tutto funziona a dovere il nostro applicativo dovrebbe essere visibile dall'esterno ;)
Giunti a questo punto abbiamo configurato alla perfezione sia apache che mongrel. Se tutto funziona a dovere il nostro applicativo dovrebbe essere visibile dall'esterno. ;)




[[Categoria:Server]]
[[Categoria:Server]]
[[Categoria:RubyOnRails]]
[[Categoria:RubyOnRails]]
1 508

contributi