Nginx esiste sul mercato dei webserver sin dal 2004 ed ad oggi viene utilizzato con successo da quasi 3 milioni di siti web di qui circa 32 mila sono, come riporta netcraft, tra i più visitati al mondo. Dei bei numeri per un progetto che, tutto sommato, non ha una storia lunga come quella dei suoi concorrenti.
Ad oggi si può considerare indubbiamente un ottimo prodotto, anche senza aver raggiunto la piena maturità, in grado di sostituire il web server per antonomasia per i sistemi unix/bsd, ovvero Apache, il tutto condito da prestazioni da urlo. Oltre a questo, può essere utilizzato anche come http reverse proxy o addirittura come imap/pop3 reverse proxy con il supporto all'autenticazione!
Sul web è presente parecchia documentazione riguardante nginx, i link principali sono
- Il sito ufficiale di nginx;
- Il wiki di nginx, dove è possibile trovare parecchi esempi e documentazione;
- Il sito dell'autore di nginx.
Chi volesse testare questo web server su windows può scaricare ed installare il pacchetto zip presente sul sito ufficiale: ricordo a tutti che può essere in esecuzione un server sulla porta 80, quindi se volete testare nginx cambiate porta nella configurazione o terminate il webserver attivo, se presente, o skype se installato (ha la cattiva abitudine di usare la porta 80!).
In questa prima parte tratteremo l'installazione di nginx dai sorgenti del ramo di sviluppo, cosi da poter testare le ultime funzionalità. Negli articoli successivi vedremo come configurare nginx e come gestire i virtual hosts.
Installazione di nginx
Nginx è presente nella stragrande maggioranza delle distribuzioni e può essere comodamente installato tramite il gestore dei pacchetti. Su Debian/Ubuntu basta utilizzare il comando apt-get per installarlo:
sudo apt-get install nginx
Purtroppo, la release disponibile è abbastanza datata quindi se si vogliono testare e/o utilizzare funzionalità più recenti sarà necessario compilare nginx direttamente dai sorgenti! Utilizzeremo l'ultima release del ramo in sviluppo disponibile al momento, ovvero la 0.8.20, anche se, in generale, la stessa procedura si dovrebbe poter applicare anche alle versioni successive senza particolari problemi.
Per poter compilare il software è necessario installare dei pacchetti, ovvero i tools per la compilazione, gli headers del perl, delle openssl e della libreria pcre.
Su Debian/Ubuntu i pacchetti si chiamano
- build-essential;
- libssl-dev;
- libperl5-dev;
- libpcre3-dev.
Ed è possibile installarli con questi comandi
sudo apt-get install build-essential sudo apt-get install libssl-dev sudo apt-get install libperl5-dev sudo apt-get install libpcre3-dev
Fatto questo è necessario scaricare i sorgenti di nginx ed uno script che ci tornerà utile per ottimizzare la compilazione. Una volta spostati nella directory che conterrà i sorgenti, consiglio di creare una directory nella home, vanno lanciati i seguenti comandi:
wget http://sysoev.ru/nginx/nginx-0.8.20.tar.gz wget http://www.pixelbeat.org/scripts/gcccpuopt tar xzf nginx-0.8.20.tar.gz
Scaricati e decompressi i sorgenti, si deve configurare il nginx per la compilazione tramite configure, presente tra i sorgenti di nginx. I comandi di seguito, comunque, non si limitano a preparare nginx per la compilazione ma abilitano una serie di ottimizzazioni.
cd nginx-0.8.20 export CFLAGS="-O3 -fomit-frame-pointer -pipe $(. ../gcccpuopt 2>/dev/null)" export CPPFLAGS=$CFLAGS export CXXFLAGS=$CFLAGS ./configure --prefix=/var/lib/nginx --sbin-path=/usr/sbin/nginx --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --pid-path=/var/run/nginx.pid --lock-path=/var/lock --user=www-data --group=www-data --with-poll_module --with-file-aio --with-ipv6 --with-http_ssl_module --with-http_gzip_static_module --with-http_stub_status_module --with-http_perl_module --http-log-path=/var/log/nginx/access.log --http-client-body-temp-path=/tmp/nginx/body --http-proxy-temp-path=/tmp/nginx/proxy --http-fastcgi-temp-path=/tmp/nginx/fastcgi
Se tutto è andato bene l'operazione dovrebbe terminare restituendo informazioni simili a queste
Configuration summary + using system PCRE library + using system OpenSSL library + md5: using OpenSSL library + sha1 library is not used + using system zlib library nginx path prefix: "/var/lib/nginx" nginx binary file: "/usr/sbin/nginx" nginx configuration prefix: "/etc/nginx" nginx configuration file: "/etc/nginx/nginx.conf" nginx pid file: "/var/run/nginx.pid" nginx error log file: "/var/log/nginx/error.log" nginx http access log file: "/var/log/nginx/access.log" nginx http client request body temporary files: "/tmp/nginx/body" nginx http proxy temporary files: "/tmp/nginx/proxy" nginx http fastcgi temporary files: "/tmp/nginx/fastcgi"
Fatto questo si può lanciare la compilazione e l'installazione
make && sudo make install
Dopo qualche minuto, terminata la compilazione, l'output dovrebbe essere simile a questo:
objs/src/http/modules/ngx_http_upstream_ip_hash_module.o \ objs/src/http/modules/ngx_http_stub_status_module.o \ objs/ngx_modules.o \ -lcrypt -lpcre -lssl -lcrypto -ldl -lz \ -Wl,-E -L/usr/local/lib -L/usr/lib/perl/5.10/CORE -lperl -ldl -lm -lpthread -lc -lcrypt make[1]: uscita dalla directory «/home/daniele/nginx-0.8.20». . . test -d '/var/run' || mkdir -p '/var/run' test -d '/var/log/nginx' || mkdir -p '/var/log/nginx' test -d '/var/lib/nginx/html' || cp -r html '/var/lib/nginx' test -d '/var/log/nginx' || mkdir -p '/var/log/nginx' make[1]: uscita dalla directory «/home/daniele/nginx-0.8.20»
Se non si ricevono errori, nginx sarà installato sulla vostra macchina! Ovviamente è possibile cambiare i parametri di configurazione in base alle proprie necessità cosi da abilitare o disabilitare funzionalità che sono necessarie o che si possono escludere per rendere nginx ancora più performante.
Prima di passare a configurare nginx vanno create le cartelle che nginx utilizzerà e vanno impostati i permessi
sudo mkdir /tmp/nginx/body sudo mkdir /tmp/nginx/proxy sudo mkdir /tmp/nginx/fastcgi chown www-data:www-data / tmp/nginx -R chown www-data:www-data /var/www -R
Fatto questo, per adesso ci fermiamo qui, l'articolo sulla configurazione di nginx sarà pronto a breve!
NOTA
Anche se l'articolo fa riferimento alle distribuzioni Debian e Ubuntu è, ovviamente, possibile eseguire gli stessi passaggi su una qualsiasi distribuzione purché vengano installati i pacchetti necessari per la compilazione dei sorgenti!

Commenti recenti
42 settimane 4 giorni fa
42 settimane 4 giorni fa
50 settimane 3 giorni fa
1 anno 5 giorni fa
1 anno 5 giorni fa
1 anno 5 giorni fa
1 anno 21 settimane fa
1 anno 21 settimane fa
1 anno 24 settimane fa
1 anno 24 settimane fa