Installazione e configurazione
medio
Installazione
E' possibile scaricare e compilare l'ultima versione dal sito ufficiale oppure utilizzare il pacchetto della propria distribuzione.
Ovviamente compilare dai sorgenti permette di avere l'ultima release del prodotto, mentre la versione pacchettizzata risulta vantaggiosa dal punto di vista della gestione (oltre ad essere assai più veloce da installare).
Installazione dai sorgenti
Ho seguito le indicazioni di questo sito. La distribuzione utilizzata è la Debian (ma vale anche per Ubuntu).
Per compilare è necessario installare (apt-get install) le seguenti dipendenze:
- build-essential (ovviamente tutto il necessario per compilare)
- libgcrypt11-dev
- libcpre-dev (perl regular expression library) necessario per utilizzare le espressioni regolari sugli URL
- libssl-dev (libreria necessaria per https)
- zlib1-dev (zlib per utilizzare il formato gzip previsto da http 1.1)
Dopodiché ho scaricato il pacchetto
wget http://sysoev.ru/nginx/nginx-0.6.32.tar.gz
e l'ho scompattato
tar xvzf nginx-0.6.32.tar.gz
Dopo essere entrato nella cartella ho lanciato
./configure
E' consigliabile prendere nota dei vari percorsi (è possibile cambiarli con apposite opzioni del configure).
Lanciare
make && make install
per compilare ed installare
Installare dai pacchetti della nostra distribuzione
Se la versione pacchettizzata della nostra distribuzione è abbastanza aggiornata è possibile installare tutto con
apt-get install nginx
Oltre ad installare il programma, verranno create per noi il file /etc/init.d/nginx, per far partire nginx, e la cartella /etc/nginx con i file di configurazione. In questo caso c'è un file di configurazione principale nginx.conf, la cartella sites-available con dentro tutti i siti disponibili che devono essere linkati sotto sites-enabled per essere attivi (in modo analogo ad apache).
Una delle funzionalità interessanti di Nginx è proprio la possibilità di controllare il programma mediante i segnali (utilizzando il comando kill). Infatti per ricaricare il file di configurazione o per aggiornare a caldo il programma si usano i segnali utilizzando il pid che si trova in uno dei file di nginx:
term,int -> shutdown rapido
quit -> shutdown
hup -> ricarica configurazione (in caso di problemi utilizza la configurazione precedente)
Sul questo sito c'è un reference completo di tutti i segnali.
A questo punto bisogna configurare Nginx come reverse proxy.
Configurazione
Il file di configurazione è abbastanza semplice: è diviso per argomenti raggruppati in parentesi graffe. Ogni argomento contiene una serie di definizioni separate da uno spazio e terminate dal punto e virgola.
A noi interessano le sezioni server: ognuna di queste contiene la configurazione di un server virtuale (virtual host)
quello di default contiene:
server{
listen 80;
server_name localhost;
access_log /var/log/nginx/localhost.access.log;
location / {
root /var/www/nginx-default;
index index.html index.htm;
}
} In questo caso Nginx (in ascolto sulla porta 80), per il server localhost, funziona come webserver statico utilizzando i file nella cartellla /var/www/nginx-default.
La configurazione che serve a noi è questa:
server{
listen 80;
server_name www.nostrosito.com;
access_log /var/log/nginx/nostrosito.access.log;
rewrite /(.*) /VirtualHostBase/http/www.nostrosito.com:80/plone/VirtualHostRoot/$1 last;
location / {
proxy_pass http://127.0.0.1:8080;
}
} L'istruzione rewrite modifica l'url utilizzando l'espressione regolare /(.*) in pratica tutto ciò che nell'url segue il carattere / viene riconosciuto e sostituito con /VirtualHostBase/http/www.nostrosito.com:80/plone/VirtualHostRoot/$1 ($1 corrisponde alla parte riconosciuta racchiusa tra parentesi).
Ad esempio
/pagina1
/(.*)
viene sostituito con
/VirtualHostBase/http/www.nostrosito.com:80/plone/VirtualHostRoot/pagina1
In seguito la location / viene dirottata con l'opzione proxy_pass sul server di Plone (in questo caso http://127.0.0.1:8080). In alternativa è possibile dirottare la connessione su un caching proxy server (ad esempio squid o varnish) oppure verso un load balancer.
L'oggetto di Zope VirtualHostBase farà in modo che tutti gli url utilizzati da Plone punteranno a http://www.nostrosito.com/.
Giusto a titolo di confronto riporto l'analoga configurazione di apache (ricordarsi di abilitare i moduli rewrite e proxy):
RewriteEngine On RewriteUrl ^/(.*) http://127.0.0.1:8080/VirtualHostBase/http/www.nostrosito.com:80/plone/VirtualHostRoot/$1 [L,F]
