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.

TIP
L'Adobe consiglia di creare un backup dell'ambiente prima delle distribuzioni.

È 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:

  1. Accedi al progetto.

  2. Selezionare il ramo integration.

  3. Selezionare l'opzione Unisci per eseguire la distribuzione nell'area di gestione temporanea.

    Unisci {width="150"}

  4. Completa tutti i test nell'ambiente di staging.

  5. 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:

  1. Accedi al progetto.

  2. Seleziona il ramo del codice preparato.

  3. Selezionare l'opzione Unisci per eseguire la distribuzione nell'area di gestione temporanea.

    Unisci {width="150"}

  4. Completa tutti i test nell'ambiente di staging.

  5. 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

  1. Dopo aver effettuato l’accesso al progetto, controlla l’ambiente di integrazione:

    code language-bash
    magento-cloud environment:checkout <environment-ID>
    
  2. Sincronizzare l'ambiente di integrazione locale con l'ambiente remoto:

    code language-bash
    magento-cloud environment:synchronize <environment-ID>
    
  3. Creare un'istantanea dell'ambiente come backup:

    code language-bash
    magento-cloud snapshot: create -e <environment-ID>
    
  4. Aggiorna il codice nel ramo locale in base alle esigenze.

  5. 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>
    
  6. Completare il test del sito.

Passaggio 2: unire le modifiche a Staging e distribuzione

  1. Consulta l’ambiente di staging:

    code language-bash
    magento-cloud environment:checkout <environment-ID>
    
  2. Sincronizzare l'ambiente di staging locale con l'ambiente remoto:

    code language-bash
    magento-cloud environment:synchronize <environment-ID>
    
  3. Creare un'istantanea dell'ambiente come backup:

    code language-bash
    magento-cloud snapshot: create -e <environment-ID>
    
  4. Unisci l’ambiente di integrazione a Staging per distribuire:

    code language-bash
    magento-cloud environment:merge <integration-ID>
    
  5. Completare il test del sito.

Passaggio 3: distribuire in produzione

  1. Estrai, sincronizza e crea un’istantanea dell’ambiente di produzione locale.

  2. Unisci l’ambiente di staging alla produzione per distribuire:

    code language-bash
    magento-cloud environment:merge <staging-ID>
    
  3. 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 migrazione
  • v-dettagliato
  • Avanzamento parziale di P

Consulta la Guida di rsync.

NOTE
Per trasferire i file multimediali direttamente dagli ambienti remoti a remoti, è necessario abilitare l'inoltro dell'agente SSH. Vedere Guida GitHub.

Migrazione diretta di file statici da ambienti remoti a remoti (approccio rapido):

  1. 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>
    
  2. Utilizzare il comando rsync per copiare la directory pub/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/
    
  3. Accedere all'altro ambiente remoto per verificare i file migrati correttamente.

Migrare il database

WARNING
Le operazioni di importazione ed esportazione del database possono richiedere molto tempo e influire sulle prestazioni e sulla disponibilità del sito. Pianificare le operazioni di importazione ed esportazione durante le ore di minore utilizzo per evitare rallentamenti delle prestazioni o interruzioni nei siti di produzione.
recommendation-more-help

Prerequisito: Un dump del database (vedere il passaggio 3) deve includere i trigger del database. Per scaricarli, confermare di disporre del privilegio TRIGGER.

IMPORTANT
Il database dell’ambiente di integrazione è destinato esclusivamente ai test di sviluppo e può includere dati di cui non desideri eseguire la migrazione nell’ambiente di staging e produzione.

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.

NOTE
Per trasferire i file multimediali direttamente dagli ambienti remoti a quelli remoti, è necessario abilitare l'inoltro degli agenti SSH. Vedere le linee guida GitHub.

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:

  1. Utilizzare SSH per accedere all'ambiente remoto che contiene il database da copiare.

  2. 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).

  3. 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
  4. 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
    
  5. 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:

  1. Stabilisci un tunnel SSH per l'ambiente remoto.

  2. Connettersi al servizio del database.

    code language-bash
    mysql --host=127.0.0.1 --user='<database-username>' --pass='<user-password>' --database='<name>' --port='<port>'
    
  3. 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>;
    
  4. 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>;
    
05f2f56e-ac5d-4931-8cdb-764e60e16f26