Best Practices zum Ausführen und Aktualisieren mehrerer separater Geschäfte

7

Vor 3 Jahren war ich Teil eines Unternehmens, das Magento-Webshops für viele unabhängige Kunden betrieb. Was wir am Ende erlebt haben, war, dass wir, wenn wir eine Änderung vornehmen wollten, die alle Shops betrifft (Fehlerbehebung) oder ein Upgrade von Magento, dies von Fall zu Fall tun mussten.

Ich würde gerne Ihre Meinung dazu erfahren, ob es eine Möglichkeit gibt, eine Struktur einzurichten, die es ermöglicht, alle Shops gleichzeitig zu aktualisieren und gemeinsame Probleme für alle auf einfache Weise zu beheben.

Jeder Shop hat den gleichen Kern, aber Module usw. können variieren. Da es sich jeweils um Einzelgeschäfte handelt.

David Gulbrandsen
quelle
Sie haben viele verschiedene Installationen oder eine Installation und mehrere Stores?
Brentwpeterson
Viele verschiedene Installationen
David Gulbrandsen
Dies setzt voraus, dass jeder Shop identisch ist und keine korrekten Codeänderungen aufweist.
Brentwpeterson
Jeder Shop hat den gleichen Kern, aber Module usw. können variieren. Da sie jeweils einzelne Geschäfte sind.
David Gulbrandsen
1
Sie können die Kerndateien mit Symlinks verknüpfen, müssen sich jedoch weiterhin mit jedem einzelnen Geschäft befassen. Ich
bin

Antworten:

6

Ich empfehle, Ihre Magento-Projekte mit Composer einzurichten . Anschließend können Sie den Magento-Kern als Abhängigkeit einbinden und in einem separaten Repository mit allen offiziellen Updates und Patches verwalten. Sie könnten dort auch benutzerdefinierte Patches einfügen, aber ich würde sie lieber in einem anderen Repository aufbewahren.

Dies funktioniert nur, wenn Sie Kern und Anpassung trennen. Wenn Sie bereits Modman verwenden, habe ich gute Nachrichten für Sie: Der Übergang ist einfach.

Da Sie jedoch aus mehreren monolithischen Projekt-Repositorys stammen, sind einige anfängliche Anstrengungen erforderlich, um Ihre Anpassungen vom Kern zu trennen.

Wie es funktioniert

(Anweisungen für die Einrichtung eines neuen Projekts)

  1. Erstellen Sie ein Repository, das den Magento-Kern enthält, und erstellen Sie darin eine composer.jsonDatei mit folgendem Inhalt:

    {
        "name": "magento/ce",
        "type": "magento-source",
        "require": {}
    }

    Sie können einen der vorhandenen Spiegel wie https://github.com/OpenMage/magento-mirror oder https://github.com/firegento/magento klonen , die alle aktuellen Community-Versionen einschließlich Sicherheitspatches enthalten. Sie müssen diese jedoch hinzufügen the composer.json(das wichtige Bit ist "type": "magento-source", das dem Composer-Installer mitteilt, dass dieser den Magento-Kern enthält).

  2. Erstellen Sie composer.jsonin Ihren Projekten eine Datei mit diesem Inhalt (ersetzen Sie sie url_to_your_magento_repo.gitdurch die URL des zuvor erstellten Repositorys (z. B. [email protected]:your-company/magento-ce.git).

    {
        "require": {
            "aoepeople/composer-installers": "dev-master",
            "magento/ce": "dev-master"
        }
        "minimum-stability": "dev",
        "repositories": [
            {
                "type": "vcs",
                "url": "url_to_your_magento_repo.git"
            },
            {
                "type": "composer",
                "url": "http://packages.firegento.com"
            }
        ],
        "extra":{
            "installer-paths": {
                "www/" : [ "type:magento-source" ],
                ".modman/{$vendor}_{$name}/" : [ "type:magento-module" ]
            }
        }
    }

    Dadurch wird Composer angewiesen, die Magento-Quelle auf wwwund Magento-Module zu installieren , auf denen Sie möglicherweise Composer installieren .modman. Sie können durch "magento/ce": "dev-master"eine bestimmte Version oder einen bestimmten Zweig ersetzen . Zweigen muss "dev-" vorangestellt werden.

  3. Führen Sie diese aus composer install, um die Abhängigkeiten zu installieren (z. B. Magento-Kern).

  4. Holen Sie sich Modman und laufen modman init www. Modman ist ein Tool, das Symlinks erstellt, um Ihre Module vom Kern zu trennen.

  5. Schreiben Sie alle Anpassungen als Module in .modmaneine modmanDatei, die die Symlinks definiert, und führen Sie sie aus modman deploy MODULE_NAME, um die Symlinks zu erstellen. Weitere Informationen finden Sie in der Modman-Dokumentation.

  6. Benutzerdefinierte Module, die Sie an mehreren Standorten verwenden, können als separate Repositorys erstellt werden, die dem Magento-Kernrepository ähneln, jedoch mit "type": "magento-module". Außerdem müssen sie eine modmanDatei enthalten . Nachdem Sie ein solches Repository als Abhängigkeit definiert und ausgeführt composer updatehaben, finden Sie das Modul in .modmanund können es modman deployzum Erstellen der Symlinks verwenden.

Diese Präsentation erklärt das Setup im Detail:

Magento mit Komponist - Marcel Hauri - Treffen Sie Magento CH 2014 (Video, 21 min)

Fabian Schmengler
quelle
Sehr gute Antwort!
David Gulbrandsen