Produzione e sviluppo: la vostra best practice per un aggiornamento sicuro

7 contenuti / 0 new
Ultimo contenuto
Produzione e sviluppo: la vostra best practice per un aggiornamento sicuro

Vorrei riaprire questo topic in quanto mi sembra mal descritto da tutta la documentazione Drupal e è uno dei problemi più seri che ho incontrato usando Drupal (7). Grazie al modulo Deployment è possibile scambiare contenuti in modo piuttosto semplice tra produzione e sviluppo. Ma la domanda che vorrei porre a tutto il forum di Drupal Italia è: ma voi come fate? il web è abbastanza ricco di siti Drupal eppure non ho ancora trovato una documentazione chiara della procedura da seguire nel seguente scenario:

"Il sito è in produzione. Entro in amministrazione, vedo che alcuni modulo necessitano un aggiornamento. La mia copia in sviluppo ha gli stessi moduli del sito di produzione ma non ha gli stessi contenuti (perche ovviamente il pubblico nel frattempo ha scritto/commentato). Come procedo? Aggiorno i moduli in sviluppo, li testo e uso Deployment per copiarli in produzione? e quali tabelle devo copiare? e se qualcosa va storto? dovevo fare un backup di TUTTO il sito per evitare problemi? e se gli aggiornamenti ai moduli sono minimali vale la pena backuppare ogni volta tutte le tabelle (o addirittura tabelle e file) per un solo misero aggiornamento di un moduletto? E quando spesso va gestita la procedura di aggiornamento/sincronizzazione"

Grazie a tutti coloro condividano la PROPRIA best practice (non sto cercando un elenco di link alla documentazione di Drupal, quelli li ho già trovati)

Grazie ancora

Drupal Version:

Non conosco Deployment (il modulo). Se però fai un aggiornamento di moduli, non devi copiare tabelle da stage a produzione, ma devi rieseguire update.php (o `drush updatedb`) in produzione dopo che vi hai caricato i moduli aggiornati.
Il backup, invece, vale sempre la pena…

Grazie, ma continuo a non capire una cosa. Facendo l'update.php, se qualcosa va storto (moduli instabili) tutto il sito diventa inutilizzabile. Quindi devo tornare alla situazione precedente. Questo significa che per ogni singolo misero update devo backuppare circa 300mega di sito attraverso un ftp piuttosto lento? Spero tanto che ci sia una via più intelligente...

PS: vorrei sapere come fate VOI, non come dovrei fare io...

Ciao,
buona norma direbbe (almeno per quanto riguarda la mia esperienzaI) di avere due istanze divise del sito, uno per lo sviluppo (magari in locale) e una in produzione. Per gli aggiornamenti, solitamente, se sono cose di poco conto (chessò, aggiornamento di moduli semplici come colorbox ad esempio) li testo prima in locale e poi, se tutto è ok, vado ad aggiornare anche in produzione. Nel caso di moduli complessi (come può essere un update di sistema) prima mi assicuro un backup (del sito di sviluppo) e poi faccio l'update. Il backup può essere anche solo del database... tanto l'unico file che vai a cambiare è quello del modulo. Se qualcosa va storto semplicemente fai il revert del db e rimetti la versione precedente del modulo.
Altra buona norma, prima di un update, è di leggersi il changelog relativo alla nuova versione, giusto per capire quali erano i bug. Già questo ti permette di capire a che punto si è spinto lo sviluppatore.
;)

Grazie, e con "solo del database" intendi tutto il database o solo specifiche tabelle del modulo considerato? (sempre che esista un modo per isolare le tabelle usate da ogni modulo...)

No, intendo tutto il db... un aggiornamento di un modulo non significa per forza di cose che vengano aggiornate solo le tabelle relative a quel modulo (vedi ad esempio la tabella variables).
;)

ma... scusate, fatemi capire.
mi pongo nella situazione reale, in cui, aggiorno i moduli e magari anche il core in locale (come consigliato) e nel rattempo gli utenti del sito scrivono, caricano foto etc... quando ho finito di testare tutto, magari passa anche una settimana, se ho fatto qualche aggiustamento ;) per cui come mi comporto con il db? prendo quello on-line e con phpmyadmin faccio un banale export, personalizzandolo con - Custom - display all possible options, poi seleziono da Dump table -
structure and data e poi da Add statements: Add DROP TABLE / VIEW / PROCEDURE / FUNCTION / EVENT statement, in ultimo questo: Function to use when dumping data: quale scelgo per non sovrascrivere i dati da produzione a locale? insert, update o replace? e poi una volta che vedo che i contenuti non mi scoppiano in locale, faccio un altro export con i moduli aggiornati e tutto il db sempre in quale modalità? insert, UPDATE o REPLACE?
in pratica capite il problema? o mi devo spiegare meglio? :))) grazie

less... is better than nothing!