Configurare Ruby On Rails un su server web di produzione

Da Guide@Debianizzati.Org.

(Differenze fra le revisioni)
m
m
Riga 1: Riga 1:
-
Poche settimane fa ho affrontato la messa on-line di progetti scritti in ruby on rails...
+
La soluzione più diffusa e stabile, per la messa on-line di un applicativo scritto in ruby on rails, è data dall'accoppiata Mongrel e Apache2!
-
Su questa pagina, a breve, troverete una guida che illustra come metterlo online e gestirlo tramite un comodissimo strumento: Capistrano!
+
= Introduzione =
 +
La struttura del nostro ambiente di produzione è descritta nella seguente figura:
 +
 
 +
TODO!!!
 +
 
 +
 
 +
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, ...
 +
 
 +
 
 +
= Installazione =
 +
== Apache2 ==
 +
Per installare Apache è sufficiente un
 +
<pre>
 +
# apt-get install apache2-mpm-prefork libapache2-mod-proxy-html
 +
</pre>
 +
 
 +
Consiglio la versione "prefork" in quanto è supportata pienamente anche da php5, e di conseguenza non ci saranno problemi ad installare anche applicazioni come phpmyadmin, molto comoda per la gestione di database mysql. L'installazione base di apache, però, non è sufficiente per i nostri fini, infatti dobbiamo abilitare alcuni moduli:
 +
* deflate
 +
* proxy_balancer
 +
* proxy_connect
 +
* proxy_html
 +
* proxy_http
 +
* proxy
 +
* rewrite
 +
 
 +
per abilitarli:
 +
<pre>
 +
# a2enmod deflate
 +
# a2enmod proxy_balancer
 +
# a2enmod proxy_connect
 +
# a2enmod proxy_html
 +
# a2enmod proxy_http
 +
# a2enmod proxy
 +
# a2enmod rewrite
 +
</pre>
 +
 
 +
Una volta abilitati, riavviamo apache:
 +
<pre>
 +
# /etc/init.d/apache2 restart
 +
</pre>
 +
 
 +
L'installazione e la configurazione base di apache sono terminate.
 +
 
 +
== Ruby ==
 +
Se non è già presente sulla macchina, provvediamo ad installare ruby ed i componenti più importanti, necessari alla compilazione di mongrel:
 +
 
 +
<pre>
 +
# apt-get install ruby irb ri rdoc ruby1.8-dev build-essential
 +
</pre>
 +
 
 +
 
 +
== Rails ==
 +
Prima di tutto scarichiamo rubygems dal sito ufficiale: http://www.rubygems.org/
 +
 
 +
In questo momento l'ultima versione è la [http://rubyforge.org/frs/download.php/28174/rubygems-0.9.5.tgz 0.9.5]:
 +
<pre>
 +
# wget http://rubyforge.org/frs/download.php/28174/rubygems-0.9.5.tgz
 +
# tar xzvf rubygems-0.9.5.tgz
 +
# cd rubygems-0.9.5
 +
# ruby setup.rb
 +
</pre>
 +
 
 +
Ora possiamo installare rails, facendo attenzione alla versione richiesta dal nostro applicativo:
 +
* Ultima versione
 +
<pre>
 +
# gem install rails
 +
</pre>
 +
* Una versione specifica
 +
<pre>
 +
# gem install rails -v 1.2.5
 +
</pre>
 +
 
 +
 
 +
== Mongrel ==
 +
Mongrel si installa allo stesso modo di rails, inoltre installeremo anche mongrel-cluster, che ci semplificherà moltissimo la vita:
 +
<pre>
 +
# gem install mongrel
 +
# gem install mongrel_cluster
 +
</pre>
 +
 
 +
= Configurazione =
 +
== Mongrel ==
 +
La configurazione del cluster di server mongrel è semplice, e si riduce a creare un semplice file di configurazione. Questo è quello base, da cui partire:
 +
<pre>
 +
---
 +
cwd: /opt/applicativo/
 +
log_file: log/mongrel.log
 +
port: "3000"
 +
environment: production
 +
address: 127.0.0.1
 +
pid_file: tmp/pids/mongrel.pid
 +
servers: 3
 +
</pre>
 +
 
 +
Nei dettagli tutte le voci:
 +
; cwd : ''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
 +
; port : 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.
 +
; address : 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
 +
:; 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
 +
; pid_file : dove inserire i [[pid]] dei vari processi mongrel
 +
; servers : il numero di server mongrel da lanciare.
 +
 
 +
 
 +
== Apache ==

Versione delle 12:41, 11 dic 2007

La soluzione più diffusa e stabile, per la messa on-line di un applicativo scritto in ruby on rails, è data dall'accoppiata Mongrel e Apache2!

Indice

Introduzione

La struttura del nostro ambiente di produzione è descritta nella seguente figura:

TODO!!!


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, ...


Installazione

Apache2

Per installare Apache è sufficiente un

# apt-get install apache2-mpm-prefork libapache2-mod-proxy-html

Consiglio la versione "prefork" in quanto è supportata pienamente anche da php5, e di conseguenza non ci saranno problemi ad installare anche applicazioni come phpmyadmin, molto comoda per la gestione di database mysql. L'installazione base di apache, però, non è sufficiente per i nostri fini, infatti dobbiamo abilitare alcuni moduli:

per abilitarli:

# a2enmod deflate
# a2enmod proxy_balancer
# a2enmod proxy_connect
# a2enmod proxy_html
# a2enmod proxy_http
# a2enmod proxy
# a2enmod rewrite

Una volta abilitati, riavviamo apache:

# /etc/init.d/apache2 restart

L'installazione e la configurazione base di apache sono terminate.

Ruby

Se non è già presente sulla macchina, provvediamo ad installare ruby ed i componenti più importanti, necessari alla compilazione di mongrel:

# apt-get install ruby irb ri rdoc ruby1.8-dev build-essential


Rails

Prima di tutto scarichiamo rubygems dal sito ufficiale: http://www.rubygems.org/

In questo momento l'ultima versione è la 0.9.5:

# wget http://rubyforge.org/frs/download.php/28174/rubygems-0.9.5.tgz
# tar xzvf rubygems-0.9.5.tgz
# cd rubygems-0.9.5
# ruby setup.rb

Ora possiamo installare rails, facendo attenzione alla versione richiesta dal nostro applicativo:

# gem install rails
# gem install rails -v 1.2.5


Mongrel

Mongrel si installa allo stesso modo di rails, inoltre installeremo anche mongrel-cluster, che ci semplificherà moltissimo la vita:

# gem install mongrel
# gem install mongrel_cluster

Configurazione

Mongrel

La configurazione del cluster di server mongrel è semplice, e si riduce a creare un semplice file di configurazione. Questo è quello base, da cui partire:

--- 
cwd: /opt/applicativo/
log_file: log/mongrel.log
port: "3000"
environment: production
address: 127.0.0.1
pid_file: tmp/pids/mongrel.pid
servers: 3

Nei dettagli tutte le voci:

cwd 
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
port 
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.
address 
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
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
pid_file 
dove inserire i pid dei vari processi mongrel
servers 
il numero di server mongrel da lanciare.


Apache

Strumenti personali
Namespace
Varianti
Azioni
Navigazione
Risorse
Strumenti