Hai installato un’estensione su Magento e il negozio è comparso senza stile, solo testo e link blu. Oppure un errore che parla di classi «non trovate». Oppure ogni pagina, dopo un aggiornamento, è diventata lentissima. Sono tre facce dello stesso tema: la modalità produzione di Magento, con la compilazione del codice e la generazione dei contenuti statici. Vediamo cosa sono e qual è la sequenza giusta da seguire dopo ogni intervento.
Le modalità di Magento
Magento può funzionare in diverse modalità:
| Modalità | Per cosa | Comportamento |
|---|---|---|
| Predefinita | appena installato | una via di mezzo, non ottimizzata per nessuno dei due usi |
| Sviluppo | chi scrive codice | genera i file al volo, mostra gli errori in dettaglio, controlla di continuo se qualcosa è cambiato |
| Produzione | il negozio aperto ai clienti | usa codice già compilato e file statici già pronti; non genera nulla al volo |
Un negozio aperto al pubblico deve stare in modalità produzione. È più veloce, è più sicura perché non mostra dettagli tecnici agli errori, ed evita che Magento scriva file durante le visite. Puoi controllare la modalità con:
bin/magento deploy:mode:show
Cosa vuol dire «compilare»
Magento è costruito in modo che i moduli possano modificare il comportamento di altri moduli senza toccarne il codice. Per far funzionare questo meccanismo, Magento genera una grande quantità di codice di supporto e una mappa di come i pezzi si collegano fra loro. In sviluppo lo genera quando serve; in produzione lo genera tutto in anticipo, con il comando:
bin/magento setup:di:compile
Se aggiungi o aggiorni un modulo e non ricompili, il negozio usa ancora la vecchia mappa: il risultato sono errori su classi mancanti o comportamenti strani.
Cosa sono i contenuti statici
I fogli di stile, gli script e le immagini del tema non vengono serviti così come sono nei file sorgente: Magento li elabora e li copia, per ogni tema e ogni lingua, in una cartella pubblica. È la generazione dei contenuti statici:
bin/magento setup:static-content:deploy it_IT en_US
Al comando si indicano le lingue usate dal negozio. Se manca questo passaggio, o se una lingua viene dimenticata, le pagine compaiono senza stile: è il sintomo classico del «negozio diventato tutto testo».
La sequenza dopo ogni intervento
Ogni volta che installi, aggiorni o rimuovi un’estensione, cambi tema o aggiorni Magento, in modalità produzione la sequenza tipica è questa:
bin/magento maintenance:enable— mette il negozio in manutenzione;bin/magento setup:upgrade— aggiorna database e configurazione dei moduli;bin/magento setup:di:compile— compila il codice;bin/magento setup:static-content:deploy it_IT(più le altre lingue) — genera i file statici;bin/magento cache:flush— svuota la cache;bin/magento maintenance:disable— riapre il negozio.
La documentazione ufficiale descrive le varianti (ad esempio come mantenere il codice già compilato durante l’aggiornamento del database). Il principio non cambia: dopo un intervento sul codice, il negozio in produzione va ricompilato e i contenuti statici rigenerati, e solo alla fine si riapre.
Passare in produzione per la prima volta con bin/magento deploy:mode:set production esegue già compilazione e generazione dei contenuti statici.
Le accortezze pratiche
Serve la riga di comando
Tutti questi passaggi si fanno da terminale. Da noi l’accesso SSH è disponibile sulla porta 7530, con il nome utente del tuo account e l’indirizzo del server indicato nell’email di attivazione. Se stai pianificando un intervento su Magento, aggiungi la tua chiave SSH dal pannello prima di cominciare.
La versione di PHP della riga di comando
Prima di lanciare i comandi, verifica con php -v che la riga di comando usi la stessa versione di PHP del sito, scelta dal pannello DirectAdmin. Compilare con una versione e servire il negozio con un’altra è una fonte di errori difficili da interpretare. Se non coincidono, chiedici quale comando usare.
Memoria e tempo
Compilazione e generazione dei contenuti statici sono operazioni pesanti: richiedono parecchia memoria e, su negozi con molti moduli, temi e lingue, anche diversi minuti. Se un comando si interrompe per mancanza di memoria, non ripeterlo a oltranza: scrivici, e troviamo insieme il modo corretto di eseguirlo sul tuo piano.
Mai nelle ore di punta
Durante la sequenza il negozio è in manutenzione. Pianifica gli interventi in un orario tranquillo e, per le modifiche importanti, provale prima su una copia.
Attenzione ai permessi
I file generati devono appartenere all’utente del negozio. Se lanci i comandi sempre con il tuo utente SSH, il problema non si pone; se nella catena entrano altri strumenti, controlla che i file generati siano leggibili dal sito.
Le cache, alla fine
In produzione tutte le cache interne di Magento devono essere attive. Dopo un intervento controlla con:
bin/magento cache:status
Capita spesso che qualcuno disattivi una cache durante un lavoro e si dimentichi di riattivarla: il negozio funziona, ma più lentamente. Per cache e sessioni puoi anche usare Redis, attivabile dal pannello.
Prima di tutto, un backup
Il tuo account è protetto da JetBackup, con almeno due copie al giorno conservate 30 giorni. Prima di installare o aggiornare un’estensione, però, verifica di avere una copia recente di file e database: se l’aggiornamento del database va male, è la via più rapida per tornare indietro. Ricorda che le cartelle di cache e gli archivi lasciati nello spazio web sono esclusi dai backup.
In breve
- negozio aperto = modalità produzione;
- dopo ogni intervento sul codice: aggiornamento, compilazione, contenuti statici, cache;
- pagine senza stile = contenuti statici mancanti o incompleti;
- errori su classi mancanti = compilazione da rifare;
- stessa versione di PHP per riga di comando e sito.
Gestisci un negozio Magento e vuoi un ambiente preparato per questo lavoro? Trovi i dettagli sulla pagina dell’hosting Magento.