Mit Magento 1 habe ich ein Deployment-Tool verwendet, das das GIT-Repository geladen, Befehle ausgeführt modman deploy-all
und sichergestellt hat, dass das var
Verzeichnis schreibbar ist. Für den habe .gitignore
ich diesen benutzt, der ziemlich gut funktioniert hat.
Aber was ist mit Magento 2 ?
Welcher Gitignore funktioniert am besten, wie stellen Sie Ihr Projekt bereit und welcher Befehl sollte vor und nach der Bereitstellung ausgeführt werden? Wir freuen uns auf ein paar Einblicke aus der Community.
Die Frage bleibt noch einige Zeit offen
Antworten:
In den folgenden Schritten wird beschrieben, wie die Umgebung für die Entwicklung benutzerdefinierter Module und nicht für die Produktion eingerichtet wird.
Projektinitialisierung
Erstellen Sie ein Projekt mit dem folgenden Befehl:
composer create-project --repository-url=https://repo.magento.com/ magento/project-community-edition .
Nehmen Sie dieses .gitignore und legen Sie es in Ihrem Projektstamm ab. Fast alle Core-Dateien / -Verzeichnisse sind bereits im Stammverzeichnis enthalten
.gitignore
. Es ist jedoch besser, auch die folgenden 2 hinzuzufügen/update
und/phpserver
(fügen Sie diese 2 Zeilen einfach zu .gitignore hinzu).app/code/VendorName/ModuleName
), jetzt haben Sie nur Ihren benutzerdefinierten Code in Ihrem Git-RepositoryMagento-Installation
Installieren Sie Magento über die Kommandozeile, zB:
${project_root}/bin/magento setup:install \ --db-host=localhost \ --db-name=magento \ --db-user=root \ --backend-frontname=admin \ --base-url=http://base.url.goes.here/ \ --language=en_US \ --timezone=America/Chicago \ --currency=USD \ --admin-lastname=Admin \ --admin-firstname=Admin \ [email protected] \ --admin-user=admin \ --admin-password=123123q \ --cleanup-database \ --use-rewrites=1
Aktivieren Sie den Cron-Job für Indexer, z. B. unter Ubuntu:
echo "* * * * * php ${project_root}/bin/magento cron:run &" | crontab -u www-data -
default
Modus ausgeführt und alle fehlenden Inhalte werden bei der ersten Anforderung automatisch generiert. Sie müssen also keinen Compiler ausführen oder statische Inhalte bereitstellen[optional] Wenn Sie PHP Storm verwenden, führen Sie den folgenden Befehl aus, um die XSD-Unterstützung zu aktivieren:
bin/magento dev:urn-catalog:generate .idea/misc.xml
quelle
vendor
, einschließlichmagento2-base
, die nur ein Grundgerüst für ein neues Projekt darstellen. Wenn Sie nicht sicher sind, warum dieser Schritt nicht so konfiguriert ist, dass er vom Komponisten automatisch ausgeführt wird, versuchen Sie es herauszufinden. Bezüglich des.gitignore
Kopierens von einem anderen Repo wird bereits diskutiert, wie dieser Schritt beseitigt / vereinfacht werden kann.magento2-base
in das Stammverzeichnis ist nicht mehr erforderlich (nur überprüft), scheint in letzter Zeit behoben worden zu sein. Diesen Schritt aus der Antwort entfernt.Für die Initialisierung und Installation folgen Sie den Schritten von Alex, seine Antwort für die meisten Schritte, nur Unterschiede, die ich empfehlen würde:
Git-Konfiguration
Speichern Sie nur die folgenden Dateien in Ihrem Git-Repository:
Verwenden Sie für Ihren projektspezifischen Code auch separate Module, die Sie über Composer einbinden. Die Verwaltung über Composer ist einfacher, da Sie eine bestimmte Version / Release sperren können, die Sie bereitstellen möchten. Dies zwingt Sie auch dazu, den gleichen Ansatz für interne und externe Module zu verwenden.
Einsatz
Während der Entwicklung aktualisieren Sie die Module in Ihrer Umgebung (dev / test) mit dem Befehl:
Dadurch wird die Datei composer.lock mit den bei dieser Installation installierten Versionen aktualisiert.
Bei Staging / Pre-Production / Production können Sie dasselbe Setup mit dem folgenden Befehl erstellen / installieren:
Dadurch werden alle Module installiert, die in dev / test verwendet werden, um sicherzustellen, dass die Tests vor dem Veröffentlichen in der Produktion mit denselben Modulversionen durchgeführt werden, mit denen sie entwickelt wurden.
Nach der Installation führen Sie die folgenden Befehle aus:
Dadurch wird die Datenbank aktualisiert (Schema- und Datenaktualisierung), die DI-Konfiguration generiert und alle statischen Ansichtsdateien bereitgestellt.
quelle
Re .gitignore, ab 2.2 lautet die offizielle Antwort von Magento "config.php geht in git, env.php nicht".
Wir suchen nach Composer-Plugins wie dem Mediawiki, um interne Entwickler näher an die Entwicklung von Erweiterungen und Kundenseiten heranzuführen. Noch zu erforschen, noch nicht endgültig.
Ich mochte es sehr, den Composer-Repository-Typ "Path" mit einem Pfad
../othergitrepo/app/code/*/*
zum Aufnehmen von Modulen zu verwenden, aber er verwendet Symlinks, die in Entwicklungsumgebungen mit Unison oder ähnlichem nicht so gut funktionieren.quelle
Wir verfolgen einen anderen Ansatz, der keinen separaten Build-Server / -Prozess umfasst . Wir entwickeln ihn lokal wie in der Produktion
Wir übergeben dann alle für die Produktion notwendigen Dateien . Anschließend stellen wir einfach die Changesets auf dem Server bereit und führen den Upgrade-Befehl aus.
Eine Version zu finden, die für die Entwicklung geeignet ist, aber auch im Produktionsmodus läuft, war der schwierige Teil und ist immer noch nicht perfekt, aber jetzt haben wir ein Rezept, das funktioniert.
Der Grund dafür ist, dass wir 100% Kontrolle darüber haben wollen, welcher Code in die Produktion geht. da magento2 eine tonne code generiert, müssen wir ihn lokal ausführen, um alle effekte zu verstehen und wie in der produktion debuggen zu können.
Mir ist bewusst, dass dies nicht das ist, was viele Leute empfehlen, aber für uns funktioniert es am besten.
Frontend-Setup-Schritte
Um diese Skripte zu arbeiten , um Ihr Geschäft setzen Produktionsbetrieb in Ihrem env.php und Einrichtung Ihres Thema in
dev/tools/grunt/configs/themes.js
. (Die folgenden Schritte wurden in ein anzeigbares Spielbuch geschrieben)var/cache
var/view_preprocessed
pub/static/*
(den .htaccess nicht löschen)var/composer_home
php bin/magento cache:flush
php bin/magento setup:static-content:deploy %your_languages%
pub/static/frontend
php bin/magento dev:source-theme:deploy --locale="%your_language%" --theme="%your_theme%" css/styles-m css/styles-l css/email css/email-inline
grunt less:your_theme
Backend / Deinstallationsschritte
var/cache
var/generation
var/composer_home
var/di
php bin/magento cache:flush
php bin/magento setup:di:compile
quelle
Sie sollten diese Dateien auch ignorieren:
/app/etc/config.php
/app/etc/env.php
/.idea/workspace.xml // phpstorm
quelle