La stima dell'aggiornamento di Magento è un processo di raccolta di informazioni sulle modifiche applicate all'installazione che si sta per aggiornare, verificando se tali modifiche possono causare un problema e quindi valutare quanto tempo è necessario per aggirarle.
Tutte le modifiche possono essere letteralmente divise in off-core e in-core .
Le modifiche off-core sono quelle che non verranno sovrascritte con l'aggiornamento. Queste sono estensioni di terze parti , file core messi in ambito locale (app / codice / local / Mage) e un tema personalizzato .
Le modifiche in-core vengono applicate direttamente ai file core di Magento (app / code / core), ai file di localizzazione (app / locale / en_US), ai modelli di base e ad alcune cose come javagram , librerie esterne che raramente vengono personalizzate, ma devono essere prese in considerazione .
Modifiche off-core
Estensioni di terze parti
Durante gli aggiornamenti, le estensioni di terze parti sono la principale fonte di problemi. Ciò significa che più estensioni hai più tempo necessario per analizzarle.
La prima cosa da verificare è se la funzionalità fornita dall'estensione non è ancora implementata in una versione di Magento a cui si sta eseguendo l'aggiornamento. Ad esempio alcune estensioni come Yoast_CanonicalUrl
, Mxperts_CustomerAddress
o Fontis_Wysiwyg
sono state ampiamente utilizzate in Magento 1.3.xx e precedenti, ma ora fanno parte delle funzionalità di base di Magento e non sono più necessarie.
Quindi è una buona idea controllare (chiedi al tuo cliente) se hai davvero bisogno di tutte quelle estensioni che hai. Potrebbero esserci alcune estensioni installate ma mai realmente utilizzate. Quindi a questo punto è bene fare una sorta di pulizia.
Quindi una cosa importante da verificare è la compatibilità di ciascuna delle rimanenti estensioni con una versione di Magento a cui stai eseguendo l'aggiornamento. Nel caso in cui alcune estensioni non siano compatibili e non siano disponibili estensioni simili, sarà difficile scegliere di perdere alcune funzionalità o modificare le estensioni esistenti per renderle compatibili.
Nota: non modificare direttamente l'estensione di terze parti, ma creare una nuova estensione che estenderà una obsoleta e quindi impostare una dipendenza in un XML bootstrap di nuova estensione.
Dopo tutto quello che è stato fatto, può essere fornita l'analisi effettiva di ciascuna delle rimanenti estensioni. Comincerà sempre con l'esame del etc/config.xml
file. Ci sono 3 cose da cercare:
- La riscrittura di classe non è una tecnica pulita da sola, ma in alcuni casi non c'è altro modo per aggirare. Quindi, se la classe riscritta fosse cambiata nella nuova versione di Magento, questo potrebbe essere un potenziale problema.
- È molto probabile che gli aggiornamenti del layout causino un problema con l'aggiornamento, ma se l'estensione fa riferimento a un blocco deprecato in una versione più recente di Magento, dovrai risolvere il problema.
- Gli aggiornamenti SQL sono fonte di problemi altamente sottovalutati durante gli aggiornamenti. Il problema si verifica quando l'estensione di terze parti sta creando una chiave esterna che fa riferimento a un campo nella tabella Magento predefinita. Di conseguenza questo campo è bloccato dalle modifiche. E poi se lo script di installazione nativo proverà ad aggiornare questo campo fallirà silenziosamente. Successivamente, ogni successivo script di installazione che fa riferimento a questo campo interromperà l'aggiornamento.
app / code / local / Mage
Dopo aver terminato con le estensioni è tempo di dare un'occhiata alla tua app/code/local/Mage
directory. Qui troverai i file core modificati spostati in un local
ambito. Ognuno di loro ti costerà sicuramente dei capelli grigi perché non sai mai (se non sei stato tu a metterli lì) cosa è stato modificato lì e per quale motivo. Quindi devi confrontare ciascuno di essi con un'origine e migrare le funzionalità aggiunte al file corrispondente della nuova versione.
Tema personalizzato
L'ultima modifica off-core del mazzo è il tema personalizzato. Questo potrebbe non sembrare un grosso problema, ma in realtà si tratta di un'area grigia. Il tema base di Magento viene modificato da una versione all'altra e ogni tema personalizzato deve imitare alcune di queste modifiche. Sfortunatamente non esiste un proiettile d'argento per determinare cosa cercare e cosa deve essere migrato. Quindi, preparati solo per alcune grandi sorprese e piccoli ritardi dopo l'aggiornamento.
Modifiche In-Core
Nel mondo perfetto non ce ne sono. Ma quando hai un'installazione di Magento dopo che è stata abusata da sviluppatori di terze parti, che offrono molto a buon mercato, puoi aspettarti qualsiasi cosa. Quindi le modifiche nel core sono quelle che verranno sovrascritte durante il processo di aggiornamento. Nella maggior parte dei casi non produrrà alcun errore ma di conseguenza perderete la funzionalità che è stata aggiunta in modo così brutale.
L'unico modo per rilevare le modifiche nel core è confrontare tutti i file dell'installazione di Magento con file puliti della stessa versione. Consiglio di farlo con Git. Perché? Semplicemente perché gestirà bene tutte le nuove linee e gli spazi bianchi.
Anche se l'installazione di Magento non è sotto git, puoi comunque copiare i tuoi file in una directory separata ed eseguire git init. Quindi esegui il commit iniziale, copia ed esegui i file Magento "puliti" git status
. Otterrai qualcosa del genere:
Ora, a seconda del numero di file modificati, è possibile eseguire contemporaneamente git diff
su ciascun file o sull'intero batch. Ciò fornirà un riferimento completo di tutte le modifiche apportate al core. Se hai qualche visualizzazione git come phpStorm la vita è molto più facile per te:
Ti suggerisco di farlo git diff > changes.txt
, avrai sempre un elenco di modifiche a mano.
Avendo l'elenco delle modifiche principali è possibile stimare cosa deve essere trasferito nella nuova versione e quanto tempo sarà necessario per farlo.
Ora vorrei dare alcuni consigli per un vero aggiornamento. Questo processo è ben documentato, quindi non scriverò quali comandi eseguire e dove fare clic. Tuttavia, voglio dare un accento su alcune cose importanti:
- Partiamo dal presupposto che stai aggiornando nel tuo ambiente di sviluppo. Eseguire l'aggiornamento sul server di produzione è un suicidio.
- Non lasciare che cambino nulla in produzione durante l'aggiornamento. Metti il tuo Magento sotto controllo della versione o addirittura la scrittura di file di blocco temporanei.
- Disabilita tutte le estensioni di terze parti, ma nota quali erano inizialmente disabilitate, quindi non le abiliterai in seguito.
- Controlla se c'è uno script di pulizia Magento in esecuzione sul server. In caso contrario, troncare tutte le tabelle a partire da
dataflow_*
, log_*
, report_*
.
- Ripristina il tema predefinito al momento dell'aggiornamento.
Dopo aver completato lo script di aggiornamento:
- Facendo riferimento a ciò che
changes.txt
hai fatto prima di migrare tutte le modifiche nel core che sono davvero degne di migrazione.
- Migrare le
app/code/local/Mage
modifiche trovate prima dell'aggiornamento.
- Uno a uno abilita le estensioni di terze parti.
- Ripristina il tema e confronta in modo completo il risultato con il server di produzione.
- Distribuisci in produzione una volta che sei soddisfatto del risultato.
Conclusione
So che tutto sembra spaventoso, ma se esegui l'aggiornamento regolarmente, mantieni pulito il tuo core e installi le estensioni solo da fornitori di cui ti fidi davvero e solo se ne hai davvero bisogno non dovrai affrontare la maggior parte delle difficoltà descritte in questo articolo. Mantieni sano il tuo Magento EcoSystem e sarai premiato.
Post scriptum
In casi molto complicati ha senso ricominciare da capo con una nuova installazione dell'ultimo Magento e migrare passo dopo passo il tema e la funzionalità del tuo negozio. Questo richiederà sicuramente tempo ma alla fine avrai un sistema Magento sano con la tua piena consapevolezza di ciò che sta succedendo.