Distribuire file di visualizzazione statica
Il comando di distribuzione dei file di visualizzazione statica consente di scrivere file statici nel file system di Commerce quando il software Commerce è impostato per la modalità di produzione.
Il termine file di visualizzazione statica fa riferimento ai seguenti elementi:
- "Statico" significa che può essere memorizzato nella cache per un sito (ovvero che il file non è generato dinamicamente). Alcuni esempi includono immagini e CSS generati da LESS.
- "Visualizza" si riferisce al livello di presentazione (da MVC).
I file di visualizzazione statica si trovano nella directory <magento_root>/pub/static
e alcuni sono memorizzati nella cache anche nella directory <magento_root>/var/view_preprocessed
.
La distribuzione di file di visualizzazione statica è influenzata dalle modalità dell'applicazione come segue:
- Modalità predefinite e modalità sviluppatore: Commerce le genera su richiesta, ma le altre vengono memorizzate nella cache in un file per velocizzare l'accesso.
- Modalità Produzione: i file statici sono non generati o memorizzati nella cache.
È necessario scrivere manualmente i file di visualizzazione statica nel file system di Commerce utilizzando il comando illustrato in questo argomento. In seguito, è possibile limitare le autorizzazioni per limitare le vulnerabilità e impedire la sovrascrittura accidentale o dannosa dei file.
Per distribuire i file di visualizzazione statica:
-
Accedi al server Commerce come oppure passa al proprietario del file system.
-
Eliminare il contenuto di
<magento_root>/pub/static
, ad eccezione del file.htaccess
. Non eliminare questo file. -
Eseguire lo strumento di distribuzione dei file di visualizzazione statica
<magento_root>/bin/magento setup:static-content:deploy
.note info INFO Se si abilita l'unione dei file di visualizzazione statica in Admin, il sistema di directory pub/static
deve essere scrivibile.Opzioni comando:
code language-bash bin/magento setup:static-content:deploy [<languages>] [-t|--theme[="<theme>"]] [--exclude-theme[="<theme>"]] [-l|--language[="<language>"]] [--exclude-language[="<language>"]] [-a|--area[="<area>"]] [--exclude-area[="<area>"]] [-j|--jobs[="<number>"]] [--no-javascript] [--no-css] [--no-less] [--no-images] [--no-fonts] [--no-html] [--no-misc] [--no-html-minify] [--no-parent] [-f|--force]
Nella tabella seguente vengono illustrati i parametri e i valori di questo comando.
<languages>
en_US
.Trovare l'elenco eseguendo:
bin/magento info:language:list
--language (-l)
Esempio:
--language en_US --language es_ES
--exclude-language
--theme <theme>
Esempio:
--theme Magento/blank --theme Magento/luma
--exclude-theme <theme>
Ad esempio,
--exclude-theme Magento/blank
--area (-a)
adminhtml
e frontend
. Il valore predefinito è all.Esempio:
--area adminhtml
--exclude-area
--jobs (-j)
--symlink-locale
--content-version=CONTENT-VERSION
--no-javascript
--no-css
--no-less
--no-images
--no-fonts
--no-html
--no-misc
--no-html-minify
-s <quick|standard|compact>
Definire la strategia di distribuzione. Utilizzare queste opzioni solo se si dispone di più opzioni locali.
- Utilizza la strategia rapida per ridurre al minimo i tempi di distribuzione. Questa è l'opzione di comando predefinita se non specificata.
- Utilizza la strategia standard per distribuire tutti i file di visualizzazione statica per tutti i pacchetti.
- Utilizza la strategia compatta per risparmiare spazio su disco nel server.
--no-parent
--force (-f)
<languages>
che per --language
, <languages>
ha la precedenza.Esempi
Di seguito sono riportati alcuni comandi di esempio.
Esclusione di un tema e minimizzazione dei HTML
Il comando seguente distribuisce il contenuto statico per la lingua inglese statunitense (en_US
), esclude il tema Luma fornito con Commerce e non minimizza i file HTML.
bin/magento setup:static-content:deploy en_US --exclude-theme Magento/luma --no-html-minify
Output di esempio:
Requested languages: en_US
Requested areas: frontend, adminhtml
Requested themes: Magento/blank, Magento/backend
=== frontend -> Magento/blank -> en_US ===
=== adminhtml -> Magento/backend -> en_US ===
...........................................................
... more ...
Successful: 2055 files; errors: 0
---
New version of deployed files: 1466710645
............
Successful: 1993 files; errors: 0
---
Il comando seguente distribuisce solo JavaScript, con 4 processi, con una strategia di distribuzione standard:
bin/magento setup:static-content:deploy -s standard --no-misc --no-html --no-fonts --no-images --no-less --no-css -j 4
Il comando seguente distribuisce solo CSS e LESS con 3 processi e una strategia di distribuzione rapida:
bin/magento setup:static-content:deploy -s quick --no-misc --no-html --no-fonts --no-images --no-javascript -j 3
Generazione di file di visualizzazione statica per un tema e un'area
Il comando seguente genera file di visualizzazione statica per tutte le lingue, solo l'area front-end, solo il tema Commerce Luma, senza generare font:
bin/magento setup:static-content:deploy --area frontend --no-fonts --theme Magento/luma
Output di esempio:
Requested languages: en_US
Requested areas: frontend
Requested themes: Magento/luma
=== frontend -> Magento/luma -> en_US ===
...........................................................
... more ...
........................................................................
Successful: 2092 files; errors: 0
---
New version of deployed files: 1466711110
Distribuire i file di visualizzazione statica senza installare Commerce
È possibile eseguire il processo di distribuzione in un ambiente separato, non di produzione, per evitare processi di generazione su computer di produzione sensibili.
A questo scopo, effettua le seguenti operazioni:
- Esegui
bin/magento app:config:dump
per esportare la configurazione dal sistema di produzione. - Copia i file esportati nella base di codice non di produzione.
- Distribuire i file di visualizzazione statica:
bin/magento setup:static-content:deploy
Risoluzione dei problemi relativi allo strumento di distribuzione dei file di visualizzazione statica
Installare prima il software Commerce. In caso contrario, non sarà possibile eseguire lo strumento di distribuzione dei file di visualizzazione statica.
Sintomo: quando si esegue lo strumento di distribuzione dei file di visualizzazione statica viene visualizzato l'errore seguente:
ERROR: You need to install the Commerce application before running this utility.
Soluzione:
Procedi come segue:
- Installare il software Commerce utilizzando la riga di comando.
- Accedi al server applicazioni come, o passa a, il proprietario del file system.
- Eliminare il contenuto della directory
<app_root>/pub/static
, ad eccezione del file.htaccess
. Non eliminare questo file. - Distribuire i file di visualizzazione statica:
bin/magento setup:static-content:deploy
Suggerimento per gli sviluppatori sulla personalizzazione dello strumento di distribuzione del contenuto statico
Durante la creazione di un'implementazione personalizzata dello strumento di distribuzione del contenuto statico, utilizzare solo la scrittura di file atomici per i file che devono essere disponibili nel client. Se si utilizza la scrittura di file non atomici, tali file potrebbero essere caricati sul client con contenuto parziale.
Una delle opzioni per rendere atomico è scrivere su file memorizzati in una directory temporanea e copiarli o spostarli nella directory di destinazione (da dove vengono caricati sul client) dopo la fine della scrittura. Per informazioni dettagliate sulla scrittura nei file, vedere php fwrite.