Gestire il cambio di indirizzo IP di un sito web ospitato con Apache
Jump to navigation
Jump to search
- Se si vuole spostare un sito ospitato sulla macchina server-a con ip 1.2.3.4 sulla macchina server-b con il 2.3.4.5, procedere come segue:
- Impostare il sito sulla macchina A in modalità manutenzione
- Dalla macchina B, testare una copia dei files:
cd /var/www sudo env SSH_AUTH_SOCK=$SSH_AUTH_SOCK rsync -e ssh -av root@server-a.example.com:/var/www/example.com . --delete --dry-run
- Se tutto ok, procedere:
cd /var/www sudo env SSH_AUTH_SOCK=$SSH_AUTH_SOCK rsync -e ssh -av root@server-a.example.com:/var/www/example.com . --delete
- Impostare i diritti:
cd example.com sudo chown root: . sudo chown root: www/ cd www/ sudo chown -R root: log/ sudo chown -R vsftpd:www-data html/
- Predisporre l'utenza DB ed il DB nuovo vuoto su server-a, poi procedere alla copia del DB dall amacchina originale:
ssh root@server-a.example.com mysqldump --compact --quick --extended-insert explame_co | mysql -u example_co -p example_co
- Copiare la definizione del virtualhost:
sudo mkdir -p /etc/apache2/sites-available/example.com && sudo env SSH_AUTH_SOCK=$SSH_AUTH_SOCK scp server-a.example.com:/etc/apache2/sites-available/example.com/* /etc/apache2/sites-available/example.com
- Abilitarlo:
sudo a2ensite example.com sudo /etc/init.d/apache2 restart
- Impostare il file host in locale
sudoedit /etc/hosts
2.3.4.5 www.example.com
- Verificare di accedere alla nuova macchina:
sudo tail -f /var/www/example.com/www/log/access.log
- Rimuovere la modifica nel file hosts
- Sulla macchina B, abilitare il modulo proxy ed headers
sudo a2enmod proxy headers
- Ridefinire il virtualhost come:
sudoedit /etc/apache2/sites-available/example.com/www.example.com.conf
<VirtualHost *:80> ServerName www.example.com ServerAlias example.com RequestHeader set Host "www.example.com" ProxyPreserveHost On ProxyPass / http://2.3.4.5/ ErrorLog /var/www/example.com/www/log/error.log TransferLog /var/www/example.com/www/log/access.log ErrorLog /var/log/apache2/error.log TransferLog /var/log/apache2/access.log CustomLog /var/log/apache2/access_vhosts.log commonvhosts </VirtualHost>
- In pratica sulla vecchia macchina, impostiamo una proxypass, che forza il virtualhost da trasmettere all'ip della nuova macchina.
- Riavviare Apache
sudo /etc/init.d/apache2 restart
- Verificare che dai log della vecchia macchina ci sia traffico, e che sulla nuova sia instradata la connessione
- Rimuovere il files ed il DB dalla vecchia macchina
- Verificare il funzionamento
- Disabilitare la modalità manutenzione sul sito sulla nuova macchina
- Verificare
- Impostare un TTL di 60 secondi sul DNS e incrementare il SOA
sudoedit /etc/bind/example.com.db
$ORIGIN . $TTL 60 ; 1 minute
- Cambiare l'ip di www.example.com
- Riavviare bind
sudo /etc/init.d/bind9 restart
- Verificare il nuovo IP:
host -t a www.example.com
www.example.com has address 2.3.4.5
- Verificare il TTL sul server dns autoritativo:
dig www.example.com @1.2.3.4
; <<>> DiG 9.7.3 <<>> www.example.com ... ;; QUESTION SECTION: ;www.example.com. IN A
;; ANSWER SECTION: www.example.com. 60 IN A 2.3.4.5
- Il TTL è il secondo valore dell'ultima riga
- Verificare il TTL sui root servers:
dig +trace diesis.eu
; <<>> DiG 9.7.3 <<>> +trace example.com ;; global options: +cmd . 513026 IN NS b.root-servers.net. . 513026 IN NS h.root-servers.net. . 513026 IN NS d.root-servers.net. . 513026 IN NS i.root-servers.net. . 513026 IN NS e.root-servers.net. . 513026 IN NS g.root-servers.net. . 513026 IN NS a.root-servers.net. . 513026 IN NS l.root-servers.net. . 513026 IN NS f.root-servers.net. . 513026 IN NS j.root-servers.net. . 513026 IN NS c.root-servers.net. . 513026 IN NS m.root-servers.net. . 513026 IN NS k.root-servers.net. ;; Received 404 bytes from 127.0.0.1#53(127.0.0.1) in 0 ms eu. 172800 IN NS x.dns.eu. eu. 172800 IN NS cz.dns.eu. eu. 172800 IN NS uk.dns.eu. eu. 172800 IN NS si.dns.eu. eu. 172800 IN NS nl.dns.eu. eu. 172800 IN NS y.dns.eu. ;; Received 311 bytes from 192.228.79.201#53(b.root-servers.net) in 165 ms example.com. 86400 IN NS dns1.example.com. example.com. 86400 IN NS dns2.example.com. ;; Received 76 bytes from 194.0.1.19#53(x.dns.com) in 9 ms example.com. 60 IN A 1.2.3.4 example.com. 60 IN NS dns2.example.com. example.com. 60 IN NS dns1.example.com. ;; Received 92 bytes from 3.4.5.6#53(dns2.example.com) in 39 ms
- In questo caso il TTL a 60 non si è ancora propagato: attendere quando tutti i TTL saranno 60, e poi si potrà dismettere il vecchio virtualhost con proxypass su server-a