So installieren Sie WordPress mit Composer: Schritt-für-Schritt-Installationsanleitung

Veröffentlicht: 2023-02-28

Einführung: Warum Composer Base WordPress?

Wie jede andere Anwendung ist Ihre WordPress-Site am sichersten, wenn Sie wiederholbare Builds und festschreibbare Updates für Ihren Code und seine Abhängigkeiten sicherstellen können. Ihre Infrastruktur wird durch eine Reihe von Konfigurationsdateien festgelegt, die angeben, welche Version von PHP und MariaDB Sie verwenden möchten. Dies ist der beste Weg, um sicherzustellen, dass Ihr Projekt reproduzierbar bleibt, wenn Sie neue Funktionen entwickeln.

Der WordPress-Kern sowie seine Themen und Plugins sollten idealerweise auf die gleiche Weise funktionieren, aber oft ist dies nicht der Fall. Das WordPress-Administrationspanel bietet Ein-Klick-Schaltflächen, um alle diese Komponenten zu aktualisieren, wenn sie veraltet sind oder anderweitig Schreibzugriff auf das Dateisystem erwarten, um Konfigurationsänderungen zur Laufzeit vorzunehmen. Eine solche Entwicklung hat jedoch ihre Folgen.

Erstens haben Sie zur Laufzeit nicht immer Schreibzugriff auf das Dateisystem. Daher ist die Abhängigkeit von diesem Mechanismus für Updates und Konfigurationsänderungen für viele Hosting-Lösungen völlig eingeschränkt. Wenn Sie andererseits zur Laufzeit Schreibzugriff auf den Ort haben, an dem Sie gerade hosten, stellt die Installation eines neuen Moduls oder Themas ein nicht triviales Sicherheitsrisiko dar (wenn die Quelle unbekannt ist).

Aber, was vielleicht am wichtigsten ist, die Aktualisierung von WordPress zur Laufzeit entkoppelt den Zustand Ihrer Website vom Code in Ihrem Repository. Ein Kollege, der an einer neuen Funktion in seinem lokalen Klon des Projekts arbeitet, könnte durchaus eine Vollversion hinter der Live-Site sein. Als Ergebnis dieses Arbeitsablaufs könnten Sie Fehler mit unbekannten (und ungetesteten) Folgen einführen.

Vorteile der Verwendung von Composer

Angesichts der oben genannten Fakten hat die Verwaltung Ihrer WordPress-Seite mit dem Composer klare Vorteile. Erstens können Sie Ihre Abhängigkeiten explizit in einer festgeschriebenen Datei (composer.lock) definieren. Diese Sperrdatei wird aus einer aussagekräftigeren Liste von Abhängigkeitseinschränkungen (composer.json) generiert, wenn Ihre Abhängigkeiten installiert werden, und wird Teil des Commit-Verlaufs Ihres Projekts. Von da an arbeitet jeder neue Zweig von der identischen Sammlung von Abhängigkeiten bis hinunter zum exakten Commit-Hash. An diesem Punkt spielt es keine Rolle, wer zum Projekt beiträgt oder wo es eingesetzt wird – es ist überall derselbe Code für alle.

Der Composer beseitigt auch die Notwendigkeit, viel externen Code in Ihr Repository zu übertragen. Im Fall von WordPress erfordert die Nichtverwendung des Composer normalerweise, dass Sie den gesamten Code für ein Thema und sogar für den WordPress-Kern und die Plugins selbst in Ihr eigenes Projekt übernehmen. Abgesehen davon, dass das Repository unnötig groß und langsam zu klonen wird, wird das Aktualisieren dieser Kopien zu einem Jonglierakt, mit dem sich niemand auseinandersetzen muss.

Mit dem Composer können Sie Abhängigkeiten zu Ihrem Projekt hinzufügen und aktualisieren und dann ihre genauen Versionen sperren, sodass jeder neue Zweig dasselbe Update erhält. Wäre das Update auf der bereitgestellten Site zur Laufzeit durchgeführt worden, müssten Sie daran denken, zuerst git pull zu verwenden.

Installation des WordPress-Kerns mit Composer

Auf die gleiche Weise macht es die Verwendung von Composer für Sie unnötig, WordPress vollständig in Ihr Repository zu übertragen, da Sie es als Abhängigkeit hinzufügen können. Es gibt mehrere Möglichkeiten, dies zu tun (wie Bedrock), je nachdem, wie viele Annahmen Sie für Ihre Konfiguration und Projektstruktur treffen möchten. Der einfachste verwendet den John Bloch Composer-Fork, um Ihren Builds für WordPress einen Installer hinzuzufügen:

 $ Composer benötigt johnpbloch/wordpress-core-installer
$ Composer benötigt johnpbloch/wordpress-core

Der obige Befehl erstellt eine composer.json-Datei und installiert den WordPress-Kern im WordPress-Verzeichnis. Die composer.json sieht so aus

 {
    "erfordern": {
        "johnpbloch/wordpress-core-installer": "^2.0",
        "johnpbloch/wordpress-core": "^6.1"
    },
    "config": {
        "Plugins zulassen": {
            "johnpbloch/wordpress-core-installer": wahr
        }
    }
}

Wir haben den WordPress-Kern im WordPress-Ordner. Aber wir müssen index.php außerhalb des WordPress-Verzeichnisses kopieren, damit wir den Webserver auf das Stammverzeichnis verweisen können.

Um WordPress vollständig mit Composer zu verwalten , müssen wir ein anderes Verzeichnis für wp-content anstelle des Standardverzeichnisses WordPress/wp-content verwenden.

Erstellen wir ein neues Verzeichnis im Stammverzeichnis des Projekts mit dem Namen wp-content.

Kopieren Sie einmal die index.php aus dem WordPress-Ordner. Wir müssen den Speicherort der Datei wp-blog-header.php ändern, in der sich unser WordPress-Verzeichnis befindet.

Nach der Änderung sieht die index.php so aus

 <?php 
define('WP_USE_THEMES', true);
require( dirname( __FILE__ ). '/wordpress/wp-blog-header.php' );

Wir müssen eine .htaccess-Datei im Stammverzeichnis mit folgendem Inhalt erstellen:

 # STARTE WordPress
<IfModul mod_rewrite.c>
RewriteEngine ein
RewriteBase /
RewriteRule ^index.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</WennModul>
# WordPress BEENDEN

Lass uns weitermachen und die Beispieldatei wp-config.php kopieren und dann den folgenden Code hinzufügen:

 $domain = 'meinedomain.com;
define('WP_SITEURL', "https://{$domain}/wordpress");
define('WP_HOME',"https://{$domain}");
$httpHost = isset($_SERVER['HTTPS_HOST']) ? $_SERVER['HTTPS_HOST'] : $Domäne;
define( 'WP_CONTENT_DIR', dirname( __FILE__ ) . '/wp-content' );
define( 'WP_CONTENT_URL', 'https://' . $httpHost . '/wp-content' );
/** Absoluter Pfad zum WordPress-Verzeichnis. */
if ( !defined('ABSPATH') ) {
    define('ABSPATH', dirname(__FILE__) . '/wordpress');
}

Wir haben WordPress in ABSPATH hinzugefügt, da sich der WordPress-Kern in /WordPress befindet
Da die Datei wp-config.php sensible Daten enthält; Wir werden es nicht in unser Repository übertragen, indem wir eine .gitignore-Datei erstellen:

 /wp-config.php
/wordpress/
/wp-content/
/Verkäufer/

Die WordPress-, wp-content- und Vendor-Verzeichnisse müssen ebenfalls ignoriert werden, damit wir sie ebenfalls zur .gitignore-Datei hinzufügen.

Hinweis: Du musst das wp-content-Verzeichnis ändern, falls du eine andere Namenskonvention für deinen wp-content hinzufügen möchtest.

Unser Projektstammverzeichnis sollte wie folgt aussehen

 .git
.gitignorieren
komponist.lock
composer.json
Verkäufer
wp-config.php
index.php
WordPress

Sie müssen eine Datenbank erstellen und Details in wp-config.php ändern. Ihre WordPress-Website wird unter „mydomain.com“ aufgerufen und das WordPress-Backend ist unter mydomain.com/wordpress/wp-admin erreichbar

Hinzufügen von Plugins und Themes aus dem WordPress-Repository

Standardmäßig betrachtet Composer nur das Repository von packagist.org. Aber es enthält keine WordPress-Plugins und -Themen.

Um WordPress-Plugins und -Designs einbinden zu können, müssen Sie Composer auf das wpackagist.org-Repository verweisen. Sie tun dies, indem Sie diesen Teil der Konfiguration in Ihre composer.json-Datei einfügen:

 "Repositorys": [
  {
    "Typ": "Komponist",
    "url": "https://wpackagist.org",
    "nur": [
      "wpackagist-plugin/*",
      "wpackagist-theme/*"
    ]
  }
],

Wir müssen Composer auch mitteilen, wo Plugins und Designs abgelegt werden sollen. Dies beinhaltet das Hinzufügen von etwas mehr Konfiguration in composer.json:

 "extra": {
        "Installationspfade": {
            "wp-content/mu-plugins/{$name}/": [
                "type:wordpress-muplugin"
            ],
           "wp-content/plugins/{$name}/": [
                "type:wordpress-plugin"
            ],
           "wp-content/themes/{$name}/": [
                "type:wordpress-theme"
            ]
        }
    }

Damit können Sie jetzt jedes Plugin oder Design aus den offiziellen Repositories mit dem Befehl composer require installieren, wie wir es bei der Installation von WordPress getan haben.

# Verwenden Sie dieses Format, um ein Plugin zu installieren:

 Komponist benötigt "wpackagist-plugin/:"

# Um ein Design zu installieren, verwenden Sie dieses Format:

 Komponist benötigt "wpackagist-theme/:"

Versionseinschränkungen sind kompliziert, aber die wahrscheinlich einfachste Form, die man sich merken sollte, ist die Verwendung eines *-Wildcards. Um die kostenlose Version unseres WP Migrate-Plugins mit Version 2.x zu installieren, würden Sie Folgendes ausführen:

composer require "wpackagist-plugin/wp-migrate-db:2.*"

Wenn Sie immer wollten, dass Sie mit Ihren Updates die neueste Version erhalten, können Sie ein * als Versionseinschränkung verwenden:

composer require "wpackagist-plugin/wp-migrate-db:*"

Wenn Sie einen solchen Befehl zum ersten Mal ausführen, werden Sie möglicherweise gefragt, ob Sie „dem „Composer/Installer“ vertrauen möchten, um Code auszuführen“. Dies ist sicher, aber beachten Sie, dass Composer dadurch Code auf Ihrem Computer ausführen kann.

Wenn alles in Ordnung ist, sollten Sie das Plugin installieren (aber nicht aktivieren). Ich würde auch empfehlen, Ihre Änderungen an dieser Stelle an Git zu übergeben.

Hinzufügen von benutzerdefinierten oder Drittanbieter-Plugins und -Designs

Das ist alles in Ordnung, wenn Sie Plugins und Themes aus dem Repository möchten. Aber was ist, wenn Sie Plugins von Drittanbietern hinzufügen möchten, die sich nicht im Repository von wordpress.org befinden, oder Ihren eigenen benutzerdefinierten Code? Das WordPress-Verzeichnis ist nicht in Git, also wie kontrollieren Sie die Version Ihrer eigenen Dinge?

Einige Design- und Plug-in-Autoren unterstützen benutzerdefinierte Repositories für ihre Plug-ins.

Und einige Themes und Plugins dürfen kein Repository für ihre Plugins verwenden, zum Beispiel kostenpflichtige Plugins.

Aber wenn das nicht zutrifft, dann besteht der Trick hier darin, bestimmte Verzeichnisse mithilfe der .gitignore-Datei selektiv zu ignorieren und diese benutzerdefinierten Plugins und Designs in composer.json hinzuzufügen.

Wir können diese Plugins auch in einem anderen Verzeichnis ablegen, um sie von composer.json zu installieren.

Da wir den Plugins-Ordner in .gitignore ignorieren, müssen wir einen weiteren Ordner namens dist erstellen.

Im Dist können wir kostenpflichtige und benutzerdefinierte Plugins haben und sie vom Composer installieren.

  • Abstand/
    • Plugins/
    • Themen/
    • mu-Plugins/

Wir müssen unsere benutzerdefinierten Plugins und Designs in den entsprechenden Ordner kopieren.

Und wir müssen für jedes Plugin, das in dist/plugins hinzugefügt wird, composer.json erstellen.

Derzeit haben wir Advanced-Custom-Fields-Pro, das kostenpflichtig ist. Wir möchten dieses Plugin auch über Composer für die Ein-Klick-Installation hinzufügen und Bereitstellungen automatisieren.

Wir müssen dieses Plugin vom Autoren-Website-Portal herunterladen und dieses Plugin in den Ordner dist/plugins/advanced-custom-fields-pro extrahieren. Und erstellen Sie composer.json im selben Ordner mit folgendem Inhalt:

 {
   "name": "custom-plugins/acf-pro",

   "description": "Erweiterte benutzerdefinierte Felder PRO",

   "Version": "5.12.2",

   "type": "wordpress-plugin",

   "erfordern": {

       "composer/installers": "^1.0",
       "johnpbloch/wordpress-core": ">=5.4"
   }


}

Wir können hier die Version und den Namen mit benutzerdefinierten Präfixen hinzufügen. Und fügen Sie etwas Code in die Root-Datei composer.json ein, um dieses Plugin während der Installation aufzurufen.

Fügen Sie im Abschnitt "Repositories": den folgenden Code im letzten hinzu,

 "Repositorys": [
{
     "Typ": "Pfad",

     "url": "dist/plugins/*",

     "Optionen": {

       "Symlink": falsch

     }

Sie haben auch andere Einträge im Bereich Repositories. Um dieses Plugin zu installieren, haben wir zwei Möglichkeiten, zuerst den Plugin-Namen mit Version in der hinzuzufügen

 "erfordern": {
     "custom-plugins/acf-pro": ">=5.12.2"
}

Oder führen Sie den folgenden Befehl aus, es installiert das Plugin und fügt den obigen Eintrag in der composer.json hinzu.

 $ Composer erfordert benutzerdefinierte Plugins/acf-pro

Auf die gleiche Weise können wir Themes und Mu-Plugins installieren.

Für das Thema müssen wir den Speicherort des Themenordners hinzufügen,

 "Repositorys": [
{
     "Typ": "Pfad",

     "url": "dist/themen/*",

     "Optionen": {

       "Symlink": falsch

     }

Sie müssen composer.json in Ihrem benutzerdefinierten Design mit Namen und Versionsdetails hinzufügen. Mit diesem Namen können wir das Design mit dem Befehl composer require installieren.

Abschließend

Die Verwendung von Composer ist der effektivste Ansatz, um sicherzustellen, dass Ihr WordPress sicher, aktuell und reproduzierbar bleibt. Composer ermöglicht es Entwicklern, Abhängigkeiten in ihren Projekten einfach hinzuzufügen und zu aktualisieren und ihre genauen Versionen zu sperren, um sicherzustellen, dass jeder neue Zweig mit demselben Code funktioniert.

Mit diesen Vorteilen ist Composer eine großartige Wahl für die Verwaltung von WordPress-Projekten, um wiederholbare Builds und festschreibbare Updates sicherzustellen.

Wir verstehen, dass der Einstieg in Composer etwas überfordernd sein kann. Wenn Sie Fragen haben, zögern Sie nicht, uns zu kontaktieren. Wir sind hier, um Ihnen dabei zu helfen, das Beste aus Ihrer WordPress-Erfahrung herauszuholen.

Verweise:

    • https://docs.platform.sh/guides/wordpress/composer.html
    • https://deliciousbrains.com/storing-wordpress-in-git/
    • https://time2hack.com/composer-wordpress-deployment/