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.
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:
-
Melden Sie sichbei Ihrem Projekt an.
-
Wählen Sie den Zweig
integration
aus. -
Wählen Sie die Option Zusammenführen aus, um sie für das Staging bereitzustellen.
{width="150"}
-
Schließen Sie alle Tests in der Staging-Umgebung ab.
-
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:
-
Melden Sie sichbei Ihrem Projekt an.
-
Wählen Sie die vorbereitete Codeverzweigung aus.
-
Wählen Sie die Option Zusammenführen aus, um sie für das Staging bereitzustellen.
{width="150"}
-
Schließen Sie alle Tests in der Staging-Umgebung ab.
-
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
-
Nachdem Sie sich beim Projekt angemeldet haben, sehen Sie sich die Integrationsumgebung an:
code language-bash magento-cloud environment:checkout <environment-ID>
-
Synchronisieren Sie Ihre lokale Integrationsumgebung mit der Remote-Umgebung:
code language-bash magento-cloud environment:synchronize <environment-ID>
-
Erstellen Sie einen Schnappschuss der Umgebung als Sicherung:
code language-bash magento-cloud snapshot: create -e <environment-ID>
-
Aktualisieren Sie den Code in Ihrer lokalen Verzweigung nach Bedarf.
-
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>
-
Umfassende Site-Tests.
Schritt 2: Zusammenführen von Änderungen zu Staging und Bereitstellung
-
Sehen Sie sich die Staging-Umgebung an:
code language-bash magento-cloud environment:checkout <environment-ID>
-
Synchronisieren Sie Ihre lokale Staging-Umgebung mit der Remote-Umgebung:
code language-bash magento-cloud environment:synchronize <environment-ID>
-
Erstellen Sie einen Schnappschuss der Umgebung als Sicherung:
code language-bash magento-cloud snapshot: create -e <environment-ID>
-
Führen Sie die Integrationsumgebung zum Staging zusammen, um Folgendes bereitzustellen:
code language-bash magento-cloud environment:merge <integration-ID>
-
Umfassende Site-Tests.
Schritt 3: Bereitstellen in der Produktion
-
Checken Sie die lokale Produktionsumgebung aus, synchronisieren Sie sie und erstellen Sie einen Schnappschuss.
-
Führen Sie die Staging-Umgebung zur Produktion zusammen, um Folgendes bereitzustellen:
code language-bash magento-cloud environment:merge <staging-ID>
-
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
-archivez
komprimieren Dateien während der Migrationv
-verboseP
partieller Fortschritt
Siehe Hilfe zu rsync .
So migrieren Sie statische Dateien direkt von Remote-zu-Remote-Umgebungen (schneller Ansatz):
-
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>
-
Verwenden Sie den Befehl
rsync
, um den Ordnerpub/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/
-
Melden Sie sich bei der anderen Remote-Umgebung an, um zu überprüfen, ob die Dateien erfolgreich migriert wurden.
Datenbank migrieren
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.
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.
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:
-
Verwenden Sie SSH, um sich bei der Remote-Umgebung anzumelden, die die zu kopierende Datenbank enthält.
-
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). -
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
-
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
-
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:
-
Richten Sie einen SSH-Tunnel in die Remote-Umgebung ein.
-
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>'
-
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>;
-
Erstellen Sie die Datenbank neu.
Für Starter- und Pro-Integration:
code language-shell create database main;
-
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.