Utente:MaXeR: differenze tra le versioni

Da Guide@Debianizzati.Org.
Vai alla navigazione Vai alla ricerca
mNessun oggetto della modifica
Nessun oggetto della modifica
 
(15 versioni intermedie di 3 utenti non mostrate)
Riga 1: Riga 1:
{{stub}}
=About MaXeR=
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!
Mi chiamo Claudio, ho 22 anni e studio Informatica presso l'Università degli Studi di Verona.


= Introduzione =
==Contatti==
La struttura del nostro ambiente di produzione � descritta nella seguente figura:
; Blog : http://www.knio.it


TODO!!!
; MaXeR@fsfe.org : http://www.fsfe.org/Members/maxer/


; MaXeR@persone.softwarelibero.it : http://persone.softwarelibero.org/person/MaXeR


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.
; em@il : [mailto:maxer@debianizzati.org maxer@debianizzati.org]<br/>[mailto:maxer@knio.it maxer@knio.it]<br/>[mailto:maxer@fsfe.org maxer@fsfe.org]


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


; jabber : maxer@jabber.linux.it
: maxer@jabber.fsfe.org


= Installazione =
; icq : 161200863
== 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:
[http://www.fsfe.org http://www.knio.it/images/a-happy-fellow.png]
<pre>
# a2enmod deflate
# a2enmod proxy_balancer
# a2enmod proxy_connect
# a2enmod proxy_html
# a2enmod proxy_http
# a2enmod proxy
# a2enmod rewrite
</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:
=Le Mie Guide=
# [[La struttura della Distribuzione]]
# [[I repository ed il loro utilizzo]]
# [[Introduzione all'APT System]]
# [[Pulire Debian]]
# [[Applicare una patch ad un pacchetto Debian]]
# [[Apt-build: ottimizzazione dei pacchetti | '''Apt-build''': ottimizzazione dei pacchetti]]
# [[Apt-cdrom | '''Apt-cdrom''': aggiunta di cd/dvd nella lista dei repository]]
# [[Apt-file: ricerca all'interno dei pacchetti | '''Apt-file''': ricerca all'interno dei pacchetti]]
# [[Apt-listbugs: come monitorare i bug | '''Apt-listbugs''': come monitorare i bug]]
# [[Apt-zip: aggiornamenti senza una connessione veloce | '''Apt-zip''': aggiornamenti senza una connessione veloce]]
# [[Make-jpkg: Pacchettizziamo Java| '''Make-jpkg''': Pacchettizziamo Java]]
# [[Apt-Proxy: un proxy per i pacchetti Debian| '''Apt-Proxy''': un proxy per i pacchetti Debian]]
# [[Debmirror: creiamo un mirror Debian |'''Debmirror''': creiamo un mirror Debian]]
# [[Password sicure: la base della sicurezza informatica]]
# [[Come abilitare il completamento automatico 'avanzato']]
# [[Convertire immagini .nrg in immagini .iso]]
# [[Gestione della banda in Apache]]
# [[Mrtg: monitoriamo la banda]]
# [[UsbMount: Gestione automatizzata delle periferiche usb di memorizzazione]]
# [[Powernowd: CpuScaling per AMD]]
# [[ cacti | Cacti per monitorare il sistema ]]
# [[ Debian_on_a_compaq_Presario_2154EA ]]
# [[ Munin ]]
# [[ Debian Fun ]]
# [[LAMP: Linux, Apache, MySQL e PHP]] Collaborazione con [[Utente:Keltik|Keltik]]
# [[ SysV ]]
# [[ jigdo ]]
# [[ Wireless Support ]]
# [[ Apache, SSL e CaCert.Org ]] (stub)
# [[ Pacchettizzare un tema per Bootsplash ]]
# [[ Gestione di un repository con debarchiver ]]
# [[ Ssh e autenticazione tramite chiavi ]]
# [[ Dupload per l'upload dei pacchetti Debian ]]
# [[ Synaptics touchpad ]]
# [[SSHFS: montare una risorsa remota sfruttando FUSE ed SSH | Montare una directory remota con sshfs]]
# [[Unison e la sincronizzazione di directory]]
# [[Pbuilder: compilazione in ambienti puliti]]
# [[Madwifi | Installazione Driver Madwifi]]
# [[Old:Repository Debianizzati.Org]]
# [[Old:Kde e mount automatico]]
# [[Recuperare i dati da un Hard Disk danneggiato]]
# Rileggere la tabella delle partizioni (cancellata)
# [[Java in Debian]]
# [[APT: Errori (non così) frequenti]]
# [[Controllare lo stato di un pacchetto]]
# [[Postgrey: filtrare lo spam con il greylisting]]
# [[Spostare il tasto di chiusura delle tab di Firefox 2]]
# [[Postfix e autenticazione su smtp remoto]]
# [[Tmpreaper: pulire le directory contenenti file temporanei]]
# [[Creare DVD Cover con GLabels]]
# [[Alternatives]]


<pre>
=Pagine in Lavorazione=
<Proxy *>
* [[Repository non ufficiali]]
    AddDefaultCharset off
* [[Copiare-Spostare Debian]] (titolo non definitivo)
    Order allow,deny
* [[Logrotate: configurare la rotazione automatica dei log]]
    Allow from .example.com
* [[Nagios: monitorare server e servizi]]
    Deny from all
* [[Integrit: file verification system]]
</Proxy>
</pre>


in
=Ho scritto anche in=
* [[ Speciale:Contributions/MaXeR | dove ho ficcato il naso ;) ]]
* [[wg111v2 con ndiswrapper e crittografia WPA]]


<pre>
=Pagine Varie riportate da altre fonti=
<Proxy *>
# [[Vendere Software Libero]]
    AddDefaultCharset off
# [[Perché il software non deve avere padroni]]
    Order allow,deny
# [[La comunità del software libero dopo 20 anni]]
    Allow from all
# [[Ricompense e Motivazione]]
    #Allow from .example.com
</Proxy>
 
</pre>
 
Una volta abilitati i moduli e fatte le modifiche necessarie, 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/ror/
log_file: log/mongrel.log
port: "3000"
environment: production
address: 127.0.0.1
pid_file: tmp/pids/mongrel.pid
servers: 3
user: mongrel
group: mongrel
</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.
; user : l'utente che sar� usato per lanciare i server mogrel
; group :
 
 
== Apache ==
Questo � un classico file di configurazione di apache per un VirtualHost, che sfrutta 3 server mongrel.
 
<pre>
<Proxy balancer://www_test_it_mongrel_cluster>
  BalancerMember http://127.0.0.1:8000
  BalancerMember http://127.0.0.1:8001
  BalancerMember http://127.0.0.1:8002
</Proxy>
 
<VirtualHost *>
  ServerAdmin info@debianizzati.org
  ServerName www.test.it
  DocumentRoot /opt/ror/public/
  ErrorLog /var/log/apache2/www.test.it-error.log
 
  # Superflue, dato che ogni richiesta "non statica" viene gestita da
  # Mongrel, che usa RubyGems ed ha una configurazione indipendente.
  #  SetEnv RUBYOPT rubygems
  #  SetEnv RAILS_ENV production
  <Directory /opt/ror/public/>
    Options -ExecCGI FollowSymLinks -Indexes
    AllowOverride None
    Order allow,deny
    allow from any
  </Directory>
 
  # Inutile cercare di gestire la possibile mancanza di alcuni moduli: ci
  # servono e quindi assumiamo che siano disponibili.
  RewriteEngine on
 
  # Pagina di "manutenzione" per disabilitare l'accesso all'applicazione.
  RewriteCond %{DOCUMENT_ROOT}/maintenance.html -f
  RewriteCond %{SCRIPT_FILENAME} !maintenance.html
  RewriteRule ^.*$ /maintenance.html [L]
 
  # Lasciamo le richieste "statiche" ad Apache.
  RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} -f
  RewriteRule (.*) $1 [L]
 
  # Le richieste "non statiche" vengono redirette ai membri del cluster.
  RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME} !-f
  RewriteRule ^/(.*)$ balancer://www_test_it_mongrel_cluster%{REQUEST_URI} [P,QSA,L]
 
  # Comprimiamo un po' di cose.
  AddOutputFilterByType DEFLATE text/html
  AddOutputFilterByType DEFLATE application/x-javascript
  AddOutputFilterByType DEFLATE text/css
  AddOutputFilterByType DEFLATE text/plain
  AddOutputFilterByType DEFLATE text/xml
  AddOutputFilterByType DEFLATE application/xml
  BrowserMatch ^Mozilla/4 gzip-only-text/html
  BrowserMatch ^Mozilla/4.0[678] no-gzip
  BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
</VirtualHost>
</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 ;)
 
= Avvio, Arresto e Riavvio di un cluster Mongrel =
In questa parte del tutorial vedremo come lanciare, fermare e riavviare una batteria di server mongrel:
== Avvio ==
== Arresto ==
== Riavvio ==
 
== 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!!!
 
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 ===
I file di configurazione che verranno letti dallo script andranno inseriti nella directory '''/etc/mongrel_cluster/'''.
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/'''
 
<pre>
# ln -s /opt/ror/config/mongrel.yml /etc/mongrel_cluster/www.test.it.yml
</pre>
 
=== 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.
Per inserirlo nel processo di avvio � sufficiente eseguire i seguenti comandi:
<pre>
# cp /usr/lib/ruby/gems/1.8/gems/mongrel_cluster-1.0.5/resources/mongrel_cluster /etc/init.d/
# ln -s /etc/init.d/mongrel_cluster /etc/rc2.d/S90mongrel_cluster
</pre>
 
= 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 ;)

Versione attuale delle 07:05, 13 apr 2021

About MaXeR

Mi chiamo Claudio, ho 22 anni e studio Informatica presso l'Università degli Studi di Verona.

Contatti

Blog
http://www.knio.it
MaXeR@fsfe.org
http://www.fsfe.org/Members/maxer/
MaXeR@persone.softwarelibero.it
http://persone.softwarelibero.org/person/MaXeR
em@il
maxer@debianizzati.org
maxer@knio.it
maxer@fsfe.org


jabber
maxer@jabber.linux.it
maxer@jabber.fsfe.org
icq
161200863


a-happy-fellow.png

Le Mie Guide

  1. La struttura della Distribuzione
  2. I repository ed il loro utilizzo
  3. Introduzione all'APT System
  4. Pulire Debian
  5. Applicare una patch ad un pacchetto Debian
  6. Apt-build: ottimizzazione dei pacchetti
  7. Apt-cdrom: aggiunta di cd/dvd nella lista dei repository
  8. Apt-file: ricerca all'interno dei pacchetti
  9. Apt-listbugs: come monitorare i bug
  10. Apt-zip: aggiornamenti senza una connessione veloce
  11. Make-jpkg: Pacchettizziamo Java
  12. Apt-Proxy: un proxy per i pacchetti Debian
  13. Debmirror: creiamo un mirror Debian
  14. Password sicure: la base della sicurezza informatica
  15. Come abilitare il completamento automatico 'avanzato'
  16. Convertire immagini .nrg in immagini .iso
  17. Gestione della banda in Apache
  18. Mrtg: monitoriamo la banda
  19. UsbMount: Gestione automatizzata delle periferiche usb di memorizzazione
  20. Powernowd: CpuScaling per AMD
  21. Cacti per monitorare il sistema
  22. Debian_on_a_compaq_Presario_2154EA
  23. Munin
  24. Debian Fun
  25. LAMP: Linux, Apache, MySQL e PHP Collaborazione con Keltik
  26. SysV
  27. jigdo
  28. Wireless Support
  29. Apache, SSL e CaCert.Org (stub)
  30. Pacchettizzare un tema per Bootsplash
  31. Gestione di un repository con debarchiver
  32. Ssh e autenticazione tramite chiavi
  33. Dupload per l'upload dei pacchetti Debian
  34. Synaptics touchpad
  35. Montare una directory remota con sshfs
  36. Unison e la sincronizzazione di directory
  37. Pbuilder: compilazione in ambienti puliti
  38. Installazione Driver Madwifi
  39. Old:Repository Debianizzati.Org
  40. Old:Kde e mount automatico
  41. Recuperare i dati da un Hard Disk danneggiato
  42. Rileggere la tabella delle partizioni (cancellata)
  43. Java in Debian
  44. APT: Errori (non così) frequenti
  45. Controllare lo stato di un pacchetto
  46. Postgrey: filtrare lo spam con il greylisting
  47. Spostare il tasto di chiusura delle tab di Firefox 2
  48. Postfix e autenticazione su smtp remoto
  49. Tmpreaper: pulire le directory contenenti file temporanei
  50. Creare DVD Cover con GLabels
  51. Alternatives

Pagine in Lavorazione

Ho scritto anche in

Pagine Varie riportate da altre fonti

  1. Vendere Software Libero
  2. Perché il software non deve avere padroni
  3. La comunità del software libero dopo 20 anni
  4. Ricompense e Motivazione