Distribuzione a staging e produzione
Il processo per la distribuzione e la pubblicazione inizia con lo sviluppo, continua con la gestione temporanea e termina con la pubblicazione in produzione. Adobe fornisce una soluzione di ambiente end-to-end per garantire configurazioni coerenti. Ogni ambiente supporta l’accesso diretto agli URL della vetrina e l’accesso amministratore e SSH per i comandi CLI.
Quando sei pronto per distribuire l’archivio, devi completare la distribuzione e il test nell’ambiente di staging prima di distribuirlo nell’ambiente di produzione. In questa sezione vengono fornite istruzioni e informazioni dettagliate sul processo di creazione e distribuzione, sulla migrazione di dati e contenuti e sui test.
È inoltre possibile abilitare Tracciare le distribuzioni con New Relic per monitorare gli eventi di distribuzione e analizzare le prestazioni tra le distribuzioni.
Flusso di distribuzione iniziale
L'Adobe consiglia di creare un ramo staging
dal ramo master
per supportare al meglio lo sviluppo e la distribuzione del piano Starter. Sono quindi pronti due dei quattro ambienti attivi: master
per la produzione e staging
per la gestione temporanea.
Per informazioni dettagliate sul processo, vedere Avvia sviluppo e distribuzione del flusso di lavoro.
Flusso di distribuzione Pro
Pro viene fornito con un ampio ambiente di integrazione con due rami attivi, un ramo master
globale, staging e rami di produzione. Quando crei il progetto, il codice è pronto per diramarsi, sviluppare e inviare messaggi push per la creazione e la distribuzione del sito. Anche se l’ambiente di integrazione può avere molti rami, Staging e Produzione hanno un solo ramo per ogni ambiente.
Per informazioni dettagliate sul processo, vedere Pro Develop and Deploy Workflow.
Distribuire il codice nello staging
L’ambiente di staging fornisce un ambiente di produzione simile a quello di, che include un database, un server web e tutti i servizi, compresi Fastly e New Relic. È possibile eseguire il push, l'unione e la distribuzione completi tramite i comandi CLI Cloud Console o Cloud tramite un'applicazione terminal.
Distribuisci il codice con Cloud Console
Cloud Console fornisce funzionalità per creare, gestire e distribuire il codice negli ambienti di integrazione, gestione temporanea e produzione per i piani Starter e Pro.
Per i progetti Pro, distribuire il ramo di integrazione nell'area di gestione temporanea:
-
Accedi al progetto.
-
Selezionare il ramo
integration
. -
Selezionare l'opzione Unisci per eseguire la distribuzione nell'area di gestione temporanea.
-
Completa tutti i test nell'ambiente di staging.
-
Quando la gestione temporanea è pronta, seleziona l'opzione Unisci per distribuirla alla produzione.
Per iniziare, distribuire il ramo di sviluppo nell'area di gestione temporanea:
-
Accedi al progetto.
-
Seleziona il ramo del codice preparato.
-
Selezionare l'opzione Unisci per eseguire la distribuzione nell'area di gestione temporanea.
-
Completa tutti i test nell'ambiente di staging.
-
Quando la gestione temporanea è pronta, selezionare l'opzione Unisci da distribuire alla produzione (
master
).
Distribuire il codice con la riga di comando
Cloud CLI fornisce i comandi per distribuire il codice. Hai bisogno dell’accesso SSH e Git al progetto.
Passaggio 1: distribuire e testare l’ambiente di integrazione
-
Dopo aver effettuato l’accesso al progetto, controlla l’ambiente di integrazione:
code language-bash magento-cloud environment:checkout <environment-ID>
-
Sincronizzare l'ambiente di integrazione locale con l'ambiente remoto:
code language-bash magento-cloud environment:synchronize <environment-ID>
-
Creare un'istantanea dell'ambiente come backup:
code language-bash magento-cloud snapshot: create -e <environment-ID>
-
Aggiorna il codice nel ramo locale in base alle esigenze.
-
Aggiungi, esegui il commit e invia le modifiche all’ambiente.
code language-bash git add -A && git commit -m "Commit message" && git push origin <environment-ID>
-
Completare il test del sito.
Passaggio 2: unire le modifiche a Staging e distribuzione
-
Consulta l’ambiente di staging:
code language-bash magento-cloud environment:checkout <environment-ID>
-
Sincronizzare l'ambiente di staging locale con l'ambiente remoto:
code language-bash magento-cloud environment:synchronize <environment-ID>
-
Creare un'istantanea dell'ambiente come backup:
code language-bash magento-cloud snapshot: create -e <environment-ID>
-
Unisci l’ambiente di integrazione a Staging per distribuire:
code language-bash magento-cloud environment:merge <integration-ID>
-
Completare il test del sito.
Passaggio 3: distribuire in produzione
-
Estrai, sincronizza e crea un’istantanea dell’ambiente di produzione locale.
-
Unisci l’ambiente di staging alla produzione per distribuire:
code language-bash magento-cloud environment:merge <staging-ID>
-
Completare il test del sito.
Migrazione di file statici
I file statici sono archiviati in mounts
. Esistono due metodi per migrare i file da una posizione di montaggio di origine, ad esempio l'ambiente locale, a una posizione di montaggio di destinazione. Entrambi i metodi utilizzano l'utilità rsync
, ma Adobe consiglia di utilizzare l'interfaccia della riga di comando magento-cloud
per spostare i file tra l'ambiente locale e remoto. Adobe consiglia inoltre di utilizzare il metodo rsync
per spostare i file da un'origine remota a un'altra posizione remota.
Eseguire la migrazione dei file tramite CLI
È possibile utilizzare i comandi CLI mount:upload
e mount:download
per eseguire la migrazione dei file tra l'ambiente locale e remoto. Entrambi i comandi utilizzano l'utilità rsync
, ma i comandi CLI forniscono opzioni e prompt personalizzati per l'ambiente Adobe Commerce sull'infrastruttura cloud. Ad esempio, se si utilizza il comando semplice senza opzioni, la CLI richiede di selezionare il mount o i mount da caricare o scaricare.
magento-cloud mount:download
Risposta di esempio:
Enter a number to choose a mount to download from:
[0] app/etc
[1] pub/static
[2] var
[3] pub/media
[4] All mounts
> 3
Target directory: ~/pub/media/
Downloading files from the remote mount pub/media to pub/media
Are you sure you want to continue? [Y/n] Y
Per caricare i file da una cartella pub/media/
locale nella cartella pub/media/
remota per l'ambiente corrente:
magento-cloud mount:upload --source /path/to/project/pub/media/ --mount pub/media/
Risposta di esempio:
Uploading files from pub/media to the remote mount pub/media
Are you sure you want to continue? [Y/n] Y
building file list ... done
./
sample-file.jpeg
sent 8.43K bytes received 48 bytes 3.39K bytes/sec
total size is 154.57K speedup is 18.23
Utilizzare l'opzione --help
per i comandi mount:upload
e mount:download
per visualizzare altre opzioni. Ad esempio, è disponibile un'opzione --delete
per rimuovere i file estranei durante la migrazione.
Eseguire la migrazione dei file tramite rsync
In alternativa, è possibile utilizzare l'utilità rsync
per eseguire la migrazione dei file.
rsync -azvP <source> <destination>
Questo comando utilizza le opzioni seguenti:
- Archivio
a
z
-compressione dei file durante la migrazionev
-dettagliato- Avanzamento parziale di
P
Consulta la Guida di rsync.
Migrazione diretta di file statici da ambienti remoti a remoti (approccio rapido):
-
Utilizza SSH per accedere all’ambiente di origine. Non utilizzare l'interfaccia della riga di comando
magento-cloud
. L'utilizzo dell'opzione-A
è importante perché consente l'inoltro della connessione dell'agente di autenticazione.note tip TIP Per trovare il collegamento Accesso SSH in Cloud Console, selezionare l'ambiente e fare clic su Accesso al sito. code language-bash ssh -A <environment_ssh_link@ssh.region.magento.cloud>
-
Utilizzare il comando
rsync
per copiare la directorypub/media
dall'ambiente di origine in un ambiente remoto diverso.code language-bash rsync -azvP pub/media/ <destination_environment_ssh_link@ssh.region.magento.cloud>:pub/media/
-
Accedere all'altro ambiente remoto per verificare i file migrati correttamente.
Migrare il database
Prerequisito: Un dump del database (vedere il passaggio 3) deve includere i trigger del database. Per scaricarli, confermare di disporre del privilegio TRIGGER.
Per le distribuzioni di integrazione continue, l'Adobe sconsiglia la migrazione dei dati dall'integrazione all'ambiente di staging e produzione. Puoi trasmettere dati di test o sovrascrivere dati importanti. Tutte le configurazioni vitali vengono passate utilizzando il file di configurazione e il comando setup:upgrade
durante la compilazione e la distribuzione.
L'Adobe consiglia di migrare i dati dalla produzione alla gestione temporanea per testare completamente il sito e archiviarlo in un ambiente vicino alla produzione con tutti i servizi e le impostazioni.
Eseguire il backup del database
È consigliabile creare un backup del database. Nella procedura seguente vengono utilizzate le istruzioni di Backup del database.
Per scaricare il database:
-
Utilizzare SSH per accedere all'ambiente remoto che contiene il database da copiare.
-
Elencare le relazioni dell’ambiente e prendere nota delle informazioni di accesso al database.
code language-bash php -r 'print_r(json_decode(base64_decode($_ENV["MAGENTO_CLOUD_RELATIONSHIPS"]))->database);'
Per Pro Staging and Production, il nome del database è nella variabile
MAGENTO_CLOUD_RELATIONSHIPS
(in genere lo stesso nome dell'applicazione e nome utente). -
Crea un backup del database. Per scegliere una directory di destinazione per il dump del database, utilizzare l'opzione
--dump-directory
.Per gli ambienti Starter e gli ambienti di integrazione Pro, utilizzare
main
come nome del database:code language-bash php vendor/bin/ece-tools db-dump main
Opzioni di dump:
--dump-directory=<dir>
- Scegliere una directory di destinazione per il dump del database--remove-definers
- Rimuovi istruzioni DEFINER dal dump del database
-
Sebbene sia preferibile utilizzare il metodo ECE-Tools, un altro metodo consiste nel creare un file di dump del database utilizzando MySQL nativo in formato GZIP.
code language-bash mysqldump -h <database-host> --user=<database-username> --password=<password> --single-transaction --triggers <database-name> | gzip - > /tmp/database.sql.gz
Se nell'ambiente di destinazione è stata configurata l'autenticazione a due fattori, è preferibile escludere le tabelle 2FA correlate per evitare di riconfigurarle dopo la migrazione del database:
code language-bash mysqldump -h <database-host> --user=<database-username> --password=<password> --single-transaction --triggers --ignore-table=<database-name>.tfa_user_config --ignore-table=<database-name>.tfa_country_codes <database-name> | gzip - > /tmp/database.sql.gz
-
Digitare
logout
per terminare la connessione SSH.
Eliminare e ricreare il database
Durante l'importazione dei dati è necessario eliminare e creare un database.
Per eliminare e ricreare il database:
-
Stabilisci un tunnel SSH per l'ambiente remoto.
-
Connettersi al servizio del database.
code language-bash mysql --host=127.0.0.1 --user='<database-username>' --pass='<user-password>' --database='<name>' --port='<port>'
-
Al prompt
MariaDB [main]>
, eliminare il database.Per l'integrazione con Starter e Pro:
code language-shell drop database main;
Per la produzione:
code language-shell drop database <cluster-id>;
Per staging:
code language-shell drop database <cluster-ID_stg>;
-
Ricreare il database.
Per l'integrazione con Starter e Pro:
code language-shell create database main;
Importa per produzione:
code language-shell zcat <cluster-ID>.sql.gz | sed -e 's/DEFINER[ ]*=[ ]*[^*]*\*/\*/' | mysql -h 127.0.0.1 -p -u <database-username> <database-name>;
Importa per staging:
code language-shell zcat <cluster-ID_stg>.sql.gz | sed -e 's/DEFINER[ ]*=[ ]*[^*]*\*/\*/' | mysql -h 127.0.0.1 -p -u <database-username> <database-name>;