it-swarm.it

Come unire le modifiche da una copia di sviluppo del sito al sito live senza perdere nuovi contenuti?

Qual è la procedura migliore per unire il lavoro svolto su una copia di sviluppo di un sito con la copia di produzione live? Spesso sono stati aggiunti molti nuovi contenuti al sito da quando è iniziato lo sviluppo delle funzionalità più recenti. E la maggior parte delle aggiunte a un sito comporterà modifiche al database. Quindi copiare qualsiasi nuovo file è facile, ma per quanto riguarda il database? Come unire le modifiche al database di produzione esistente senza perdere nuovi contenuti aggiunti dall'ultima volta che si è aggiornato il sito di produzione? Ci sono dei moduli che aiutano in questo?

40
Chaulky

Per i tipi di contenuti, le visualizzazioni e le modifiche alla struttura sul sito di sviluppo, consultare Funzionalità per esportare il database in codice.

Per la migrazione dei contenuti ci sono molte opzioni, ma non un'unica soluzione solida. Un esempio è suite di distribuzione .

16
budda

Ho adottato sostanzialmente due scuole di pensiero qui (una terza scuola di pensiero, facendo differenze nel database, non discuterò perché la complessità è piuttosto elevata).

1) Distribuire rilasciando il database di produzione e importando un mysqldump del database di sviluppo. Facoltativamente, esegui in anticipo un regex trova/sostituisci su tutti i collegamenti assoluti codificati che fanno riferimento all'URL di sviluppo nel dump SQL. Dopo aver importato dev db in prod, esegui automaticamente le istruzioni SQL (di solito tramite script) in seguito per modificare eventuali impostazioni diverse per prod che dev (ad esempio, forse hai nella tabella delle variabili alcune impostazioni di connessione per la connessione a sistemi esterni che devi passare a puntare a sistemi esterni prod invece che alla versione dev).

2) Utilizzare il modulo Features , come indicato da budda, per le impostazioni dell'amministratore e utilizzare il modulo Node Export per l'esportazione/importazione del contenuto in combinazione con Elimina Tutti modulo. Quindi il flusso di lavoro è:

  1. usa node_export e caratteristiche per esportare nodi/caratteristiche in file
  2. Opzionalmente (e si spera) controllo della versione
  3. Carica file sul sistema prod
  4. Utilizzare l'interfaccia Drush o Admin per caricare le funzionalità
  5. Utilizzare drush delete-all o l'interfaccia di amministrazione per eliminare tutti i nodi dei tipi che si desidera importare
  6. Utilizzare drush ne-import o l'interfaccia di amministrazione per importare i nodi dal file dei nodi esportato.

Una nota, suggerirei vivamente di adottare un flusso di lavoro standard, in cui il contenuto va solo in una direzione. Dev - Dev o Prod -> Dev (preferisco questo).

L'ho fatto e lo sto facendo su alcuni grandi sistemi, con risultati abbastanza buoni, ma ci saranno sempre molti modi per tagliare questa Apple, scegli il modo in cui funziona meglio per te.

2
coderintherye

Dump dei database della copia del sito live e della copia di sviluppo del sito nel file SQL (utilizzare gli stessi parametri e impostazioni per entrambi i dump).
Quindi, confronta entrambi i file SQL usando un piccolo strumento di confronto ExamDiff . Visualizzerà le differenze dei file fianco a fianco con colori diversi. Puoi anche saltare direttamente alle differenze (senza scorrere). Esaminare le differenze e aggiungere/modificare le righe nel file SQL del sito live. Assicurati che non ci sia percorso/URL assoluto dell'ambiente di sviluppo in quel file. Fatto! Tempo di ripristinare il database per il sito live.
Semplifica la vita: Nel primo passaggio, scarica solo le tabelle che vengono modificate. Ad esempio, se hai modificato un modulo nella copia di sviluppo che ha come target una tabella separata, scarica solo questa tabella. Se non si è sicuri di una tabella particolare, l'intero dump del database va bene.

1
user931