Mi scuso se è già stato chiesto, ho cercato ma non ho visto lo scenario esatto che sto pianificando (o l’ho perso, ma voglio assicurarmi di farlo correttamente dato che non l’ho mai fatto prima).
Sono ancora su 18 (che è dove ho iniziato; non ho mai aggiornato il sistema operativo Linux prima, solo gli aggiornamenti di sicurezza), quindi presto passerò a 22. Tutto ciò che ho letto qui suggerisce che migrare a una nuova installazione è molto più intelligente che aggiornare quella esistente perché potenzialmente c’è una moltitudine di problemi casuali che possono verificarsi o meno, ma non vale la pena rischiare perché se si verificano allora è solo una perdita di tempo inutile.
Ho letto questa guida Move your Discourse Instance to a Different Server ma si riferisce allo spostamento da un server a DigitalOcean (o viceversa) il che rende lo Snapshot non applicabile, mentre io ho intenzione di spostarmi da un Droplet DigitalOcean esistente a uno nuovo (che ho visto fare più volte e che è l’ideale rispetto a un aggiornamento).
Quindi la mia domanda per un trasferimento DO > DO è se posso semplicemente spegnere il mio droplet, fare uno snapshot, avviare un nuovo Droplet sulla versione aggiornata di Ubuntu che voglio, caricare lo snapshot e voilà (modificando il record DNS per il dominio, ecc.)? In pratica, aggirando la “reinstallazione completa di Discourse” che la guida descrive. La mia comprensione degli snapshot è che dovrebbero essere un’identica copia 1:1 dell’installazione sul Droplet rispetto al backup che è specificamente della tua configurazione di Discourse che richiede un’installazione completa per essere effettivamente utilizzata. Sto capendo correttamente? Ci sono svantaggi oltre a tempi di inattività più lunghi?
tl;dr: posso semplicemente fare uno snapshot, creare un nuovo droplet aggiornato, caricare lo snapshot e aver finito?
Spero di non sbagliarmi del tutto, ma ripristinare uno snapshot dal 18 sul 22 ti riporterà al 18, perché lo snapshot è una copia 1:1 dell’intero droplet.
Per me, creare un droplet completamente nuovo è sempre l’ultima opzione, perché devo installare tutto ciò di cui Ubuntu (o qualsiasi altro sistema operativo) ha bisogno, incluso il sistema di posta elettronica, ecc.
Sono assolutamente sicuro che sia solo un altro compito banale per chi è capace, ma dopo 10 anni non ho mai imparato come avviare facilmente un nuovo droplet funzionante.
L’installazione di Discourse richiede circa 30 minuti, se non meno?
Basta fare un backup del tuo sito e di app.yml, creare una nuova droplet con la nuova versione del sistema operativo, riassegnare l’IP alla tua nuova droplet (in modo che il dominio punti al posto giusto, nuovo) installare Discourse (puoi uscire dalla procedura guidata e aggiornare app.yml, quindi ricostruire) e importare il tuo backup.
L’intero processo dovrebbe richiedere meno di un’ora.
Questo processo non tocca mai la tua droplet esistente, quindi se tutto il resto fallisce, è facile tornare indietro?
Se si passa da una versione LTS del sistema operativo alla versione successiva, mi aspetterei un processo abbastanza agevole. Quindi, farei un backup - ovviamente - e lo scaricherei per sicurezza - ovviamente - e poi proverei l’aggiornamento del sistema operativo. Se non funzionasse, potrei provare un sistema operativo pulito.
Ma facendo questo, avrei più tempi di inattività del forum.
Sono un po’ riluttante a migrare a una nuova istanza principalmente perché dovrei aggiornare il DNS e attendere la sua propagazione. Anche se vedo che il post sopra di me dice che potrei portare con me il mio indirizzo IP, il che è ottimo, e questo elimina questa riluttanza.
Infatti, cambiando completamente la mia risposta, se potessi portare il mio indirizzo IP a una nuova istanza, sarebbe preferibile. Forse non tutti i provider lo consentono. Forse per alcuni provider si perderebbe un IP gratuito e si inizierebbe a pagare per l’IP, perché si è spostato anche se non è cambiato.
Una mitigazione super facile per questo è semplicemente impostare una TTL molto bassa (o scambiare i name server con uno che supporti questo). In questo modo i record scadono in meno tempo di quanto ci voglia per ricostruire.
Puoi usare un IP statico (non ricordo come Digital Ocean li chiami ora). In rete puoi ottenere un nuovo IP e poi mapparlo al vecchio droplet. Quindi cambi il DNS e lasci che si propaghi. Quando sei pronto per passare al nuovo server, cambi semplicemente l’IP per puntarlo al nuovo server. Avviene immediatamente e, se qualcosa va storto, puoi semplicemente tornare indietro.
Ha senso, non ci avevo nemmeno pensato al trasferimento del sistema operativo.
Avviare un nuovo droplet sarebbe anche la mia ultima scelta, dato che non ho mai spostato droplet prima (questo è il primo che ho) né ho mai aggiornato il sistema operativo prima, ma tutte le guide che vedo qui sembrano raccomandare di farlo in quel modo rispetto al semplice aggiornamento del droplet su cui ti trovi, quindi ho pensato che tanto vale seguire la maggioranza se entrambi i modi comportano rischi e non ho fatto nessuno dei due.
Il mio ragionamento è anche che se l’aggiornamento dovesse andare totalmente storto in qualche modo ora avresti il tempo di inattività del tentativo, avresti il tempo di inattività mentre sei costretto a cercare di risolverlo (o rinunciare e crearne uno nuovo), rispetto al fatto che quello nuovo potenzialmente non funziona mentre il tuo originale rimane in funzione e intatto. Non so perché dovrebbe andare storto, ma cercando su meta qui ci sono MOLTE persone che dicono che è andato storto, o link che dicono che non lo raccomanderebbero mai in quel modo (oltre alle guide ufficiali qui e a DigitalOcean che lo suggeriscono).
Suppongo che ci proverò questo fine settimana.
IP riservati (precedentemente Floating IP, a quanto pare).
Dopo il punto 5. Installa Discourse, posso uscire dalla procedura guidata a quel punto invece di fare la configurazione, sostituire il mio app.yml, quindi
./launcher rebuild app
E dovrebbe andare bene? (Poi entrare in Admin e assicurarsi che sia aggiornato/ripristinare il backup)?
Corretto: se crei un file app.yml vuoto (ad esempio con touch app.yml nella directory dei container) e incolli (con attenzione!) il contenuto dal tuo altro server, non avrai bisogno di eseguire affatto ./discourse-setup.
Un problema che mi ha creato problemi questa settimana è stata la configurazione della posta elettronica: assicurati che il tuo servizio di posta elettronica non richieda l’IP esatto da cui stai chiamando. Se lo fa, assicurati di aggiornare tale configurazione (presso il tuo fornitore di servizi).
È la cosa più sicura da fare, però. Se lo rompi, il tuo vecchio sito continua a funzionare. Non c’è alcun rischio.
C’è un argomento a riguardo. Puoi copiare il tuo file yml e le cose di let’s encrypt e persino vedere che funziona modificando il tuo dns locale per puntare al nuovo server.
E se hai i tuoi backup su S3, allora puoi dormire sonni tranquilli sapendo che se qualcosa va molto storto puoi avviare un nuovo server e ripristinare un backup in circa 30 minuti.
La mia unica vera preoccupazione non era tanto il trasferimento, quanto piuttosto il passaggio attraverso l’intera configurazione e il rischio di sbagliare qualche impostazione, che si tratti del servizio e-mail o di letsencrypt o altro, e accorgersene solo in seguito, una volta che tutto va a rotoli. Il che ovviamente non è un problema se può semplicemente leggere il mio vecchio app.yml, quindi va bene.
Non sono del tutto sicuro di cosa significhi, ma non credo che lo faccia… Ho Mailgun e controllando tutti i record lì/DNS in GoDaddy nulla sembra essere collegato a un IP specifico.
Va bene, sembra abbastanza facile, ci proverò questa settimana. Forse contemporaneamente passerò a un Droplet migliore.
Non riesco a trovare l’argomento che sono sicuro esista. In breve, configura i backup su s3 nelle impostazioni del tuo ambiente, rsync su /var/discourse o forse solo le directory ssl e letsencrypt e containers, e poi ricostruisci.