Bereitstellen in Staging und Produktion

Der Prozess für die Bereitstellung und Live-Schaltung beginnt mit der Entwicklung, läuft weiter bis zum Staging und endet mit der Live-Schaltung in der Produktion. Adobe bietet eine End-to-End-Umgebungslösung zur Sicherstellung konsistenter Konfigurationen. Jede Umgebung unterstützt den direkten URL-Zugriff auf die Storefront sowie den Admin- und SSH-Zugriff für CLI-Befehle.

Wenn Sie bereit sind, Ihren Store bereitzustellen, müssen Sie die Bereitstellung und den Test in der Staging-Umgebung vor der Bereitstellung in der Produktion abschließen. Dieser Abschnitt enthält ausführliche Anweisungen und Informationen zum Build- und Bereitstellungsprozess, zur Migration von Daten und Inhalten sowie zum Testen.

TIP
Adobe empfiehlt, vor der Bereitstellung eine Sicherung der Umgebung zu erstellen.

Außerdem können Sie die Nachverfolgung von Bereitstellungen mit New Relic aktivieren, um Bereitstellungsereignisse zu überwachen und die Leistung zwischen Bereitstellungen zu analysieren.

Starter-Implementierungsfluss

Adobe empfiehlt, eine staging -Verzweigung aus der master -Verzweigung zu erstellen, um die Entwicklung und Bereitstellung Ihres Starter-Plans optimal zu unterstützen. Anschließend sind zwei Ihrer vier aktiven Umgebungen bereit: master für die Produktion und staging für die Staging-Umgebung.

Ausführliche Informationen zum Prozess finden Sie unter Workflow "Starter Dedevelop and Deploy"(Starterentwicklung und -bereitstellung).

Pro-Implementierungsfluss

Pro verfügt über eine große Integrationsumgebung mit zwei aktiven Verzweigungen, einer globalen master-Verzweigung, Staging- und Produktionsverzweigung. Wenn Sie Ihr Projekt erstellen, kann Code verzweigt, entwickelt und gepusht werden, um Ihre Website zu erstellen und bereitzustellen. Die Integrationsumgebung kann zwar viele Verzweigungen aufweisen, Staging und Produktion verfügen jedoch nur über eine Verzweigung für jede Umgebung.

Detaillierte Informationen zum Prozess finden Sie unter Pro-Workflow für Entwicklung und Bereitstellung.

Bereitstellen von Code für Staging

Die Staging-Umgebung bietet eine nahezu produktionsorientierte Umgebung mit einer Datenbank, einem Webserver und allen Diensten, einschließlich Fastly und New Relic. Sie können die Cloud-CLI-Befehle Cloud Console oder Cloud-CLI-Befehle vollständig über eine Terminal-Anwendung übertragen, zusammenführen und bereitstellen.

Bereitstellen von Code mit dem Cloud Console

Der Cloud Console bietet Funktionen zum Erstellen, Verwalten und Bereitstellen von Code in Integrations-, Staging- und Produktionsumgebungen für Starter- und Pro-Pläne.

Stellen Sie für Pro-Projekte die Integrationsverzweigung für Staging bereit:

  1. Melden Sie sichbei Ihrem Projekt an.

  2. Wählen Sie den Zweig integration aus.

  3. Wählen Sie die Option Zusammenführen aus, um sie für das Staging bereitzustellen.

    Zusammenführen {width="150"}

  4. Schließen Sie alle Tests in der Staging-Umgebung ab.

  5. Wenn das Staging fertig ist, wählen Sie die Option Zusammenführen aus, um sie für die Produktion bereitzustellen.

Für Starter stellen Sie die Entwicklungsverzweigung für Staging bereit:

  1. Melden Sie sichbei Ihrem Projekt an.

  2. Wählen Sie die vorbereitete Codeverzweigung aus.

  3. Wählen Sie die Option Zusammenführen aus, um sie für das Staging bereitzustellen.

    Zusammenführen {width="150"}

  4. Schließen Sie alle Tests in der Staging-Umgebung ab.

  5. Wenn das Staging fertig ist, wählen Sie die Option Zusammenführen aus, um sie für die Produktion bereitzustellen (master).

Bereitstellen von Code mit der Befehlszeile

Die Cloud-CLI bietet Befehle zum Bereitstellen von Code. Sie benötigen SSH- und Git-Zugriff auf Ihr Projekt.

Schritt 1: Bereitstellen und Testen der Integrationsumgebung

  1. Nachdem Sie sich beim Projekt angemeldet haben, sehen Sie sich die Integrationsumgebung an:

    code language-bash
    magento-cloud environment:checkout <environment-ID>
    
  2. Synchronisieren Sie Ihre lokale Integrationsumgebung mit der Remote-Umgebung:

    code language-bash
    magento-cloud environment:synchronize <environment-ID>
    
  3. Erstellen Sie einen Schnappschuss der Umgebung als Sicherung:

    code language-bash
    magento-cloud snapshot: create -e <environment-ID>
    
  4. Aktualisieren Sie den Code in Ihrer lokalen Verzweigung nach Bedarf.

  5. Hinzufügen, Übertragen und Pushen von Änderungen in die Umgebung.

    code language-bash
    git add -A && git commit -m "Commit message" && git push origin <environment-ID>
    
  6. Umfassende Site-Tests.

Schritt 2: Zusammenführen von Änderungen zu Staging und Bereitstellung

  1. Sehen Sie sich die Staging-Umgebung an:

    code language-bash
    magento-cloud environment:checkout <environment-ID>
    
  2. Synchronisieren Sie Ihre lokale Staging-Umgebung mit der Remote-Umgebung:

    code language-bash
    magento-cloud environment:synchronize <environment-ID>
    
  3. Erstellen Sie einen Schnappschuss der Umgebung als Sicherung:

    code language-bash
    magento-cloud snapshot: create -e <environment-ID>
    
  4. Führen Sie die Integrationsumgebung zum Staging zusammen, um Folgendes bereitzustellen:

    code language-bash
    magento-cloud environment:merge <integration-ID>
    
  5. Umfassende Site-Tests.

Schritt 3: Bereitstellen in der Produktion

  1. Checken Sie die lokale Produktionsumgebung aus, synchronisieren Sie sie und erstellen Sie einen Schnappschuss.

  2. Führen Sie die Staging-Umgebung zur Produktion zusammen, um Folgendes bereitzustellen:

    code language-bash
    magento-cloud environment:merge <staging-ID>
    
  3. Umfassende Site-Tests.

Migrieren von statischen Dateien

Statische Dateien werden in mounts gespeichert. Es gibt zwei Methoden zum Migrieren von Dateien von einem Quellbereitstellungsspeicherort, wie z. B. Ihrer lokalen Umgebung, zu einem Ziel-Bereitstellungsspeicherort. Beide Methoden verwenden das Dienstprogramm rsync , Adobe empfiehlt jedoch die Verwendung der CLI magento-cloud für das Verschieben von Dateien zwischen der lokalen und der Remote-Umgebung. Adobe empfiehlt die Verwendung der rsync-Methode beim Verschieben von Dateien von einer Remote-Quelle an einen anderen Remote-Speicherort.

Migrieren von Dateien mithilfe der CLI

Sie können die CLI-Befehle mount:upload und mount:download verwenden, um Dateien zwischen der lokalen und der Remote-Umgebung zu migrieren. Beide Befehle verwenden das Dienstprogramm rsync , die CLI-Befehle bieten jedoch Optionen und Eingabeaufforderungen, die auf die Adobe Commerce in der Cloud-Infrastrukturumgebung zugeschnitten sind. Wenn Sie beispielsweise den einfachen Befehl ohne Optionen verwenden, fordert Sie die CLI auf, auszuwählen, welche Bereitstellung oder Bereitstellung hochgeladen oder heruntergeladen werden soll.

magento-cloud mount:download

Beispielantwort:

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

So laden Sie Dateien aus einem lokalen pub/media/ -Ordner in den Remote pub/media/ -Ordner für die aktuelle Umgebung hoch:

magento-cloud mount:upload --source /path/to/project/pub/media/ --mount pub/media/

Beispielantwort:

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

Verwenden Sie die Option --help für die Befehle mount:upload und mount:download , um weitere Optionen anzuzeigen. Beispielsweise gibt es eine --delete -Option, um irrelevante Dateien während der Migration zu entfernen.

Migrieren von Dateien mit rsync

Alternativ können Sie das Dienstprogramm rsync verwenden, um Dateien zu migrieren.

rsync -azvP <source> <destination>

Dieser Befehl verwendet die folgenden Optionen:

  • a-archive
  • z komprimieren Dateien während der Migration
  • v-verbose
  • P partieller Fortschritt

Siehe Hilfe zu rsync .

NOTE
Um Medien direkt von Remote-zu-Remote-Umgebungen zu übertragen, müssen Sie die SSH-Agent-Weiterleitung aktivieren, siehe GitHub-Anleitung.

So migrieren Sie statische Dateien direkt von Remote-zu-Remote-Umgebungen (schneller Ansatz):

  1. Verwenden Sie SSH, um sich bei der Quellumgebung anzumelden. Verwenden Sie nicht die CLI magento-cloud . Die Verwendung der Option -A ist wichtig, da sie die Weiterleitung der Verbindung des Authentifizierungsagenten ermöglicht.

    note tip
    TIP
    Um den Link SSH access in Ihrem Cloud Console zu finden, wählen Sie die Umgebung aus und klicken Sie auf Access Site.
    code language-bash
    ssh -A <environment_ssh_link@ssh.region.magento.cloud>
    
  2. Verwenden Sie den Befehl rsync , um den Ordner pub/media aus Ihrer Quellumgebung in eine andere Remote-Umgebung zu kopieren.

    code language-bash
    rsync -azvP pub/media/ <destination_environment_ssh_link@ssh.region.magento.cloud>:pub/media/
    
  3. Melden Sie sich bei der anderen Remote-Umgebung an, um zu überprüfen, ob die Dateien erfolgreich migriert wurden.

Datenbank migrieren

WARNING
Der Import und Export von Datenbanken kann lange dauern, was sich auf die Leistung und Verfügbarkeit der Site auswirken kann. Planen Sie Import- und Exportvorgänge außerhalb der Spitzenzeiten, um eine langsame Leistung oder Ausfälle auf Produktions-Sites zu verhindern.
recommendation-more-help

Voraussetzung: Ein Datenbank-Dump (siehe Schritt 3) sollte Trigger der Datenbank enthalten. Vergewissern Sie sich für das Dumping, dass Sie über die Berechtigung TRIGGER verfügen.

IMPORTANT
Die Integrationsumgebungs-Datenbank dient ausschließlich Entwicklungstests und kann Daten enthalten, die Sie nicht in Staging und Produktion migrieren möchten.

Bei kontinuierlichen Integrationsbereitstellungen empfiehlt Adobe nicht die Migration von Daten von der Integration in die Staging- und Produktionsumgebung. Sie können Testdaten übergeben oder wichtige Daten überschreiben. Alle wichtigen Konfigurationen werden beim Erstellen und Bereitstellen mithilfe des Befehls Konfigurationsdatei und setup:upgrade übergeben.

Adobe empfiehlt die Migration von Daten aus der Produktion in die Staging-Umgebung, um Ihre Site vollständig zu testen und in einer Produktionsumgebung mit allen Diensten und Einstellungen zu speichern.

NOTE
Um Medien direkt von Remote-zu-Remote-Umgebungen zu übertragen, müssen Sie die SSH-Agent-Weiterleitung aktivieren, siehe GitHub-Anleitung.

Datenbank sichern

Es empfiehlt sich, eine Sicherung der Datenbank zu erstellen. Im folgenden Verfahren wird die Anleitung von Datenbank sichern verwendet.

So speichern Sie die Datenbank:

  1. Verwenden Sie SSH, um sich bei der Remote-Umgebung anzumelden, die die zu kopierende Datenbank enthält.

  2. Führen Sie die Umgebungsbeziehungen auf und notieren Sie sich die Informationen zur Datenbankanmeldung.

    code language-bash
    php -r 'print_r(json_decode(base64_decode($_ENV["MAGENTO_CLOUD_RELATIONSHIPS"]))->database);'
    

    Bei Pro Staging and Production befindet sich der Name der Datenbank in der Variable MAGENTO_CLOUD_RELATIONSHIPS (normalerweise identisch mit dem Anwendungsnamen und Benutzernamen).

  3. Erstellen Sie eine Sicherung der Datenbank. Verwenden Sie die Option --dump-directory , um ein Zielverzeichnis für den DB-Dump auszuwählen.

    Verwenden Sie für Starter-Umgebungen und Pro-Integrationsumgebungen main als Namen der Datenbank:

    code language-bash
    php vendor/bin/ece-tools db-dump main
    

    Dump-Optionen:

    • --dump-directory=<dir> - Wählen Sie ein Zielverzeichnis für den Datenbank-Dump
    • --remove-definers—DEFINER-Anweisungen aus der Datenbank-Dump entfernen
  4. Obwohl die ECE-Tools-Methode bevorzugt wird, besteht eine andere Methode darin, eine Datenbank-Dump-Datei mit nativem MySQL im GZIP-Format zu erstellen.

    code language-bash
    mysqldump -h <database-host> --user=<database-username> --password=<password> --single-transaction --triggers <database-name> | gzip - > /tmp/database.sql.gz
    

    Wenn Sie eine Authentifizierung mit zwei Faktoren für die Zielumgebung konfiguriert haben, sollten Sie entsprechende 2FA-Tabellen ausschließen, um eine Neukonfiguration nach der Datenbankmigration zu vermeiden:

    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. Geben Sie logout ein, um die SSH-Verbindung zu beenden.

Datenbank ablegen und neu erstellen

Beim Datenimport müssen Sie eine Datenbank ablegen und erstellen.

So legen Sie die Datenbank ab und erstellen sie neu:

  1. Richten Sie einen SSH-Tunnel in die Remote-Umgebung ein.

  2. Stellen Sie eine Verbindung zum Datenbankdienst her.

    code language-bash
    mysql --host=127.0.0.1 --user='<database-username>' --pass='<user-password>' --database='<name>' --port='<port>'
    
  3. Legen Sie an der Eingabeaufforderung MariaDB [main]> die Datenbank ab.

    Für Starter- und Pro-Integration:

    code language-shell
    drop database main;
    

    Für die Produktion:

    code language-shell
    drop database <cluster-id>;
    

    Für das Staging:

    code language-shell
    drop database <cluster-ID_stg>;
    
  4. Erstellen Sie die Datenbank neu.

    Für Starter- und Pro-Integration:

    code language-shell
    create database main;
    
  5. Importieren Sie die Datenbank.

    Für Produktion importieren:

    code language-shell
    zcat <cluster-ID>.sql.gz | sed -e 's/DEFINER[ ]*=[ ]*[^*]*\*/\*/' | mysql -h 127.0.0.1 -p -u <database-username> <database-name>;
    

    Import für 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>;
    

    Diese Befehle dekomprimieren die Datenbank-Dump-Datei, entfernen die DEFINER -Anweisungen und importieren die Datenbank mit den angegebenen Anmeldeinformationen.

05f2f56e-ac5d-4931-8cdb-764e60e16f26