È giunto il momento! Dal passaggio a WordPress il mio unico imperativo é: anche le pagine più complesse devono essere servite velocemente!
Ho letto (non è vero), studiato (ma anche no), insomma senza alcuna documentazione mi sono imbattuto nella folle avventura di sostituire (on the fly) Apache con nginx in ambiente Ispconfig3!
Subito la prima cosa: questo howto è fornito così com’è.
Fate un backup di qualunque cosa prima di ogni modifica perché non rispondo di vostri eventuali errori! Con un backup potrete tornare indietro, senza fare backup non iniziate neanche a seguire i prossimi passi!
Adesso basta sono stato anche troppo lungo nella raccomandazione!
Cosa avevo io:
- 20 siti web funzionanti sotto Apache con php5 etc etc..
- Varnish come Reverse Proxy;
- Ispconfig che gestiva il tutto.
Cosa non mi piaceva:
- dover usare sempre i file .htaccess per qualque cosa. Minificavo CSS e JS e mi ritrovavo con file .htaccess enormi!!!
- le pagine venivano servite lentamente rispetto al contenuto.
Cosa avrei voluto avere:
- una configurazione quasi unica che mi permettesse di avere pagine veloci e semplicità di utilizzo del server web!
- … credo basti così no?!.
Domanda: sicuro che nginx faccia alcova tuo? No, non lo so ma ho visto, letto, un post che mi ha convinto a fare il passaggio.
Iniziamo!
APACHE
Il passaggio di per se è molto semplice. La parte complessa verrà dopo e NON la tratterò oggi, mi riservo di scrivere il mio personale post su come configurare la meglio nginx, fasycgi_cache, memcache e w3 totatl cache per WordPress!
La cosa meravigliosa è che mentre noi lavoreremo potrete continuare ad avere attivi i siti web!!!
Fermate eventuali firewall; è la cosa più semplice perché non dobbiate aprire chiudere porte, rischiando di fare qualche sciocchezza.
i file che andranno modificati per Apache sono: /etc/apache2/ports.conf e tutti i file nella directory /etc/apache2/sites-enabled/
il primo è semplice:
vi /etc/apache2/ports.conf
modificate perche somigli a qualcosa di simile:
Listen 8000 <IfModule mod_ssl.c> Listen 8043 </IfModule> <IfModule mod_gnutls.c> Listen 8043 </IfModule>
Insomma dovete cambiare le porte di ascolto per i protocolli http e https.
Questo file è stata la parte più complessa! Adesso
cd /etc/apache2/sites-enabled/ sed -i 's/<80>/8000/g' * sed -i 's/<443>/8043/g' *
in questo modo avete cambiato le porte di ascolto di apache ma la modifica non sarà attiva fino a quando non riavvierete apache. Perché questo continui a servire i nostri siti mentre noi lavoriamo basterà redirigere tutto il traffico in arrivo sulle port :80 e :443 su quelle nuove. In aiuto nostro viene la tabella di pre-routing del kernel.
Ora, grazie a iptables (se non è installato, provvedete!) faremo la magia:
iptables -t nat -A PREROUTING -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 8000 iptables -t nat -A PREROUTING -p tcp -m tcp --dport 443 -j REDIRECT --to-ports 8043 service apache2 restart
verificate che il comando
iptables -n -L -t nat
vi restituisca qualcosa di simile
Chain PREROUTING (policy ACCEPT) target prot opt source destination REDIRECT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:80 redir ports 8000 REDIRECT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:443 redir ports 8043 Chain INPUT (policy ACCEPT) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source destination Chain POSTROUTING (policy ACCEPT) target prot opt source destination
NGINX
Adesso siamo liberi di procedere a installare nginx. Useremo la versione con il supporto per fastigi-cache e quindi aggiungeremo un repository alla nostra lista:
apt-get install python-software-properties add-apt-repository ppa:rtcamp/nginx apt-get update apt-get install nginx-custom
Se dopo aver dat apt-get update dovreste ricevere un errore simile
... W: Impossibile recuperare http://ppa.launchpad.net/rtcamp/nginx/ubuntu/dists/wheezy/main/source/Sources 404 Not Found W: Impossibile recuperare http://ppa.launchpad.net/rtcamp/nginx/ubuntu/dists/wheezy/main/binary-i386/Packages 404 Not Found E: Impossibile scaricare alcuni file di indice: saranno ignorati o verranno usati quelli vecchi.
verificate il file /etc/apt/sources.list.d/rtcamp-nginx-wheezy.list e sostituite wheezy con il nome della versione corrispondente di Ubuntu. Io ho usato quantal.
ISPCONFIG
Adesso dobbiamo pensare a Ispconfig perché si dimentichi di Apache e inizia a usare correttamente nginx. Mano a phpMyadmin!
Ci serve arrivare al DB di Ispconfig per una modifica manuale, la tabella è ‘server’.
Modifichiamo l’unica riga che dovrebbe essere presente
Adesso ci interessa modificare due parametri nella colonna config
La sezione [global]
e quella [web]
sostituite ‘apache’ con ‘nginx’ , salvate e chiudete! Avete quasi finito!
cd /usr/local/ispconfig/server/plugins-enabled/ rm apache2_plugin.inc.php ln -sv /local/ispconfig/server/plugins-available/nginx_plugin.inc.php nginx_plugin.inc.php
NGINX + ISPCONFIG
Facciamo vedere Ispconfig a nginx
Vi occorrono un po’ di file (li fornisco io) che voi dovrete mettere nel posto giusto!
Scaricate il file e fate attenzione a dove lo scopattate
cd /tmp tar xfjv etc.tar.bz2 cd etc/ngnix cat nginx.conf > /etc/nginx/nginx.conf cp sites-available/* /etc/nginx/sites-available/
Adesso fermiamo Apache, togliamo la re-direzzione dalla tabella di pre-routing e riavviamo nginx.
service apache2 stop iptables -t nat -D PREROUTING -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 8000 iptables -t nat -D PREROUTING -p tcp -m tcp --dport 443 -j REDIRECT --to-ports 8043 service nginx restart
Incrociate le dita e verificate che nginx veda correttamente Ispconfig visitando il link http://yourdomain:8080/
La cosa più semplice che dovete fare per attivare i vostri siti sotto nginx sarà quello di aprire e risaldare ogni sito dal pannello di controllo di Ispconfig. Questo genererà un nuovo file di configurazione standard per nginx e attiverà il relativo processo.
Alcune cose dovrebbe essere controllate, come ade esempio se è attivata o meno la funzionalità socket di php-fpm per ogni sito. Se non lo fosse alcuni siti un PHP potrebbe riportate l’errore 502 Bad Gateway.
Abbiamo finito, spero che tutto sia andato bene!
A presto!!!