@ :~/blog/ispconfig-how-to-migrate-from-apache-to-nginx$
← cd ~/blog

less ispconfig-how-to-migrate-from-apache-to-nginx.md

Ispconfig : how to migrate from Apache to nginx

#Bash#Debian & Sysadmin#Ispconfig archivio

# archivio storico — scritto anni fa, conservato com'era. Alcune info sono datate.

È 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:

  1. 20 siti web funzionanti sotto Apache con php5 etc etc..
  2. Varnish come Reverse Proxy;
  3. Ispconfig che gestiva il tutto.

Cosa non mi piaceva:

  1. dover usare sempre i file .htaccess per qualque cosa. Minificavo CSS e JS e mi ritrovavo con file .htaccess enormi!!!
  2. le pagine venivano servite lentamente rispetto al contenuto.

Cosa avrei voluto avere:

  1. una configurazione quasi unica che mi permettesse di avere pagine veloci e semplicità di utilizzo del server web!
  2. … 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


Listen 8043



Listen 8043

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

path

Modifichiamo l’unica riga che dovrebbe essere presente

edit

Adesso ci interessa modificare due parametri nella colonna config

La sezione [global]

global_directive

e quella [web]

web_directive

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.

php5-fpm_socket

Abbiamo finito, spero che tutto sia andato bene!

A presto!!!