OffshoreVps
Guide18 ott 20268 min di letturaDi il team di OffshoreVps

Migra un sito web su un nuovo VPS senza downtime

Una migrazione di sito passo dopo passo: abbassa il TTL del DNS, copia i file e il database due volte, prova con una voce hosts, cambia il DNS e tieni il vecchio server finché il traffico non si esaurisce.

La maggior parte delle migrazioni dolorose nasce da errori di ordine, non da problemi tecnici. Si cambia il DNS per primo e poi si scopre che il database è vecchio. Segui l'ordine qui sotto e i visitatori non si accorgeranno del trasloco.

Finestra del terminale su un VPS che mostra i comandi usati per migrare un sito web senza downtime, a partire da “rsync -aHAX --info=progress2 -e ssh /var/www/ us”
Il tipo di comandi che eseguirai sul tuo server in questa guida.

Passo 1: abbassa il TTL del DNS in anticipo

Almeno un giorno prima della migrazione, imposta il TTL dei record A e AAAA a 300 secondi. Le cache che hanno già il vecchio valore hanno bisogno di tempo per scadere, quindi questo passaggio non si può fare di fretta il giorno stesso.

Passo 2: prepara prima il nuovo server

Crea il nuovo VPS, applica la checklist di hardening e installa lo stesso stack: web server, versione di PHP o Node, motore del database. Versioni uguali eliminano la maggior parte delle sorprese. Copia la configurazione, non solo i contenuti.

Passo 3: copia i file

rsync -aHAX --info=progress2 -e ssh /var/www/ user@NEW_IP:/var/www/

Eseguilo una prima volta adesso. La prima volta è lento e alle ripetizioni è veloce, ed è proprio questo il punto.

I passaggi di questa guida in ordine: 1. abbassa presto il TTL del DNS; 2. costruisci prima il nuovo server; 3. copia i file; 4. testa prima di mandarci qualcuno; 5. blocca, sincronizza un’ultima volta, cambia; 6. osserva, poi dismetti il vecchio server
I passaggi di questa guida, in ordine.

Passo 4: copia il database

# on the old server
mysqldump --single-transaction --routines --triggers mydb | gzip > mydb.sql.gz
scp mydb.sql.gz user@NEW_IP:~/
# on the new server
gunzip < mydb.sql.gz | mysql mydb

Questa è una prova generale. Ti dà una copia funzionante su cui fare i test.

Passo 5: testa prima di mandarci qualcuno

Punta il tuo computer al nuovo server modificando il file hosts: aggiungi NEW_IP example.com www.example.com. Naviga nel sito, accedi, invia un modulo ed effettua un ordine di prova. Correggi ciò che non funziona mentre il pubblico vede ancora il vecchio server. Installa il certificato TLS con una sfida DNS, così funziona già prima del passaggio.

Passo 6: blocco, sincronizzazione finale, switch

  1. Metti il vecchio sito in modalità manutenzione o sola lettura.
  2. Ripeti rsync e il dump e l'importazione del database.
  3. Cambia i record DNS con il nuovo IP.
  4. Rimuovi la voce dal file hosts e verifica da una rete diversa.

La finestra di sola lettura di solito dura pochi minuti. Per un negozio o un sito con login, programmala in un momento di calma.

Passo 7: osserva, poi dismetti il vecchio server

Tieni la vecchia macchina per diversi giorni. Alcuni resolver ignorano i TTL, quindi arriverà ancora un filo di traffico. Se puoi, inoltra o fai passare quel traffico in proxy verso il nuovo IP, controlla i log, poi riporta il TTL a un valore normale. Fai un backup fresco dal nuovo server prima di eliminare quello vecchio.

Stai cambiando anche giurisdizione? Prima confronta le opzioni in confronto tra le giurisdizioni dell'hosting offshore.