Lokale WordPress-Entwicklung mit Lando (oder Docker leicht gemacht)

Veröffentlicht: 2019-11-22

Anfang dieses Jahres habe ich eine Anleitung zur Verwendung von Docker für die Entwicklung in WordPress geschrieben. Ich habe es wirklich genossen, an diesem Beitrag zu arbeiten, und es sieht so aus, als ob er Ihnen auch gefallen hat (danke für all Ihre Kommentare und E-Mails). Falls Sie den Beitrag nicht gelesen haben, hier eine kurze Erinnerung:

Docker ist ein Programm, mit dem Sie Software in Containern verpacken und auf virtuellen Maschinen ausführen können. Der Hauptvorteil von Docker besteht darin, dass seine Container in der vom Host-Betriebssystem bereitgestellten Virtualisierungsumgebung ausgeführt werden, was zu schnellen und leichten Containern führt.

Das Hauptproblem von Docker ist, dass seine Konfiguration umständlich ist . Um beispielsweise eine WordPress-Entwicklungsumgebung zu erstellen, müssen wir (mindestens) zwei Dienste starten: einen Datenbankdienst und einen Webapp-Server.

In dem eingangs kommentierten Beitrag haben wir ein Tool gesehen, Docker Compose , mit dem wir alle Dienste definieren können, die wir für ein bestimmtes Projekt einrichten müssen. Mit Docker Compose haben wir es geschafft, in einer einzigen Datei docker-compose.yml alle Abhängigkeiten unseres Projekts zu definieren und es mit einem einzigen Befehl zu starten.

Oder das habe ich anfangs versprochen, denn ich habe den Beitrag geschlossen, indem ich erklärt habe, wie man einen weiteren Docker-Dienst konfiguriert, mit dem Sie schöne Domainnamen in Ihren WordPress-Installationen verwenden können. Wenn Sie sich erinnern, wäre unsere WordPress-Entwicklungsumgebung mit der ursprünglichen docker-compose.yml Datei über http://localhost:8080 zugänglich. Aber wenn wir so etwas wie http://myplugin.local verwenden wollten, mussten wir einen Proxy einrichten, der Domainnamen auflösen und unserer docker-compose.yml weitere Einstellungen hinzufügen konnte …

Ich weiß, ich weiß – es war ziemlich kompliziert, die Dinge zum Laufen zu bringen! Aber sobald Sie alles richtig eingerichtet hatten, war es ganz einfach, oder? Wie auch immer, ich habe beschlossen, euch meinen neuen Freund vorzustellen: Lando. Er hilft Ihnen, in Sekundenschnelle neue Entwicklungsumgebungen einzurichten.

Geben Sie Lando ein

Ich denke, der beste Weg, sich Lando vorzustellen, ist, einen Satz aus seiner Dokumentation zu verwenden:

Lando ist für Entwickler, die den eingebauten Masochismus der direkten Verwendung von docker oder docker-compose vermeiden wollen.

Landos Dokumente

Yup, docker und docker-compose zu verwenden ist anscheinend etwas für Masochisten… Sehen wir uns also an, wie wir schnell und unkompliziert alle Dienste spezifizieren können, die wir brauchen, um an einem neuen WordPress-Projekt zu arbeiten.

Lando installieren

Das erste, was Sie tun sollten, um Lando verwenden zu können, ist (Überraschung, Überraschung!), es auf Ihrem Computer zu installieren. Der Installationsprozess ist extrem einfach und sehr gut dokumentiert, aber wir können ihn in den folgenden Schritten zusammenfassen:

  1. Lando benötigt Docker. Wenn Sie Linux verwenden, installieren Sie zuerst die Docker Community Edition. Wenn Sie Mac oder Windows verwenden, installiert das Installationsprogramm von Lando selbst Docker, falls es noch nicht verfügbar ist.
  2. Laden Sie das entsprechende Lando-Installationsprogramm für Ihr Betriebssystem herunter. In meinem Fall habe ich beispielsweise die Datei lando-v3.0.0-rc.22.deb (ich bin auf Linux) heruntergeladen und mit dpkg installiert. Verwenden Sie für Mac die .dmg -Datei und für Windows die .exe -Datei.
  3. Führen Sie das Installationsprogramm aus und folgen Sie den Schritten.

Und das ist es!

So erstellen Sie ein neues WordPress-Projekt in Lando

Als erstes müssen wir zu dem Projektordner gehen, mit dem wir arbeiten möchten (oder einen neuen dafür erstellen). In meinem Fall werde ich eine neue WordPress-Entwicklungsumgebung erstellen, um unser Nelio A/B Testing-Plugin zu entwickeln, also werde ich in den Ordner cd , in den ich das Projekt heruntergeladen habe: ~/dev/plugins/nelio-ab-testing .

Dort müssen wir die Konfigurationsdatei von Lando erstellen. Diese Datei ähnelt docker-compose.yml , ist aber viel einfacher. Für den Anfang müssen Sie es nicht einmal schreiben – Lando kann es für Sie tun! Verwenden Sie einfach lando init , um eine neue Entwicklungsumgebung zu erstellen:

 lando init \ --recipe wordpress --source remote --remote-url https://wordpress.org/latest.tar.gz --webroot wordpress --name "Nelio AB Testing" # name the project as you want

Mal sehen, was die vorherige Anweisung tut:

  • Zuerst teilen wir Lando mit, dass wir mit lando init eine neue Konfigurationsdatei im aktuellen Verzeichnis erstellen möchten.
  • Der erste Parameter ( --recipe wordpress ) teilt Lando mit, dass wir ein WordPress-Projekt erstellen möchten. Dadurch weiß Lando, welche Dienste eingerichtet werden müssen (eine Datenbank, ein Webserver usw.).
  • Dann geben wir an, dass Lando WordPress von WordPress.org herunterladen soll.
  • Mit --webroot wordpress teilen wir Lando mit, wo WordPress installiert werden soll. Da wir gerade angegeben haben, dass WordPress von WordPress.org heruntergeladen werden muss und die ZIP-Datei, die Lando herunterlädt, nach dem Entpacken einen wordpress -Ordner erstellt, verwenden wir diesen Speicherort für Lando.
  • Schließlich geben wir den Namen unseres Projekts an (Lando wird ihn verwenden, um freundliche URL-Domains zu generieren).

Nachdem Sie den vorherigen Befehl ausgeführt haben, sehen Sie, wie Lando alles installiert und Sie mit den folgenden Informationen begrüßt:

 NOW WE'RE COOKING WITH FIRE!!! Your app has been initialized! Go to the directory where your app was initialized and run `lando start` to get rolling. Check the LOCATION printed below if you are unsure where to go. Oh... and here are some vitals: NAME my-site LOCATION /tmp/plugin RECIPE wordpress DOCS https://docs.devwithlando.io/tutorials/wordpress.html

Listen Sie alle Dateien im aktuellen Ordner auf und Sie werden sehen, dass Lando eine versteckte Datei namens .lando.yml mit folgendem Inhalt erstellt hat:

 name: my-site recipe: wordpress config: webroot: wordpress

Extrem einfach, oder? Starten Sie nun Ihren Dienst mit lando start und schon kann es losgehen:

 BOOMSHAKALAKA!!! Your app has started up correctly. Here are some vitals: NAME my-site LOCATION /tmp/plugin SERVICES appserver, database APPSERVER URLS https://localhost:32781 http://localhost:32782 http://nelio-ab-testing.lndo.site https://nelio-ab-testing.lndo.site

Herzlichen Glückwunsch! Sie haben jetzt eine neue WordPress-Installation, die ausgeführt wird. Wenn wir jetzt zu einer der URLs gehen, die Lando beim Start aufgelistet hat, sehen Sie, dass Sie einfach den Schritten folgen müssen, um die Installation von WordPress abzuschließen:

Installieren Sie WordPress im Land
Installieren Sie WordPress in Lando.

WordPress-Installation schnell abschließen

Natürlich können Sie die Installation von WordPress mit dem Installationsprogramm des vorherigen Bildschirms abschließen. Aber es gibt eine noch bessere Lösung: Verwenden Sie WP-CLI, das wir auch in Lando verfügbar haben.

Um WordPress mit WP-CLI zu installieren, müssen wir zuerst eine wp-config.php im wordpress -Verzeichnis erstellen. Um diese Datei zu erstellen, benötigen wir einige Informationen über unsere Datenbank: wo sie sich befindet, ihren Benutzernamen und ihr Passwort usw. Alle diese Informationen finden Sie über lando info , das den folgenden JSON zurückgibt:

 [ { service: 'appserver', urls: [ 'https://localhost:32781', 'http://localhost:32782', 'http://nelio-ab-testing.lndo.site', 'https://nelio-ab-testing.lndo.site' ], //... }, { service: 'database', //... creds: { database: 'wordpress', password: 'wordpress', user: 'wordpress', }, //... } ]

Da das Ergebnis eine JSON-Zeichenfolge ist, können wir das jq -Tool von Unix verwenden, um die spezifischen Werte abzurufen, an denen wir interessiert sind. Wenn wir beispielsweise den Benutzer unserer Datenbank wissen möchten, führen Sie einfach Folgendes aus:

 $ lando info --service database --format json | jq -r ".[0].creds.user" wordpress

Lassen Sie uns nun diesen Befehl nutzen und alle relevanten Daten abrufen, die wir zum Erstellen der Konfigurationsdatei mit WP-CLI benötigen:

 # Find WordPress' directory (webroot entry in .lando.yml) WEBROOT=`grep webroot .lando.yml | cut -d: -f2 | xargs` # Retrieve database credentials using lando info DBNAME=`lando info --service database --format json | jq -r ".[0].creds.database"` DBUSER=`lando info --service database --format json | jq -r ".[0].creds.user"` DBPASS=`lando info --service database --format json | jq -r ".[0].creds.password"` DBHOST=`lando info --service database --format json | jq -r ".[0].hostnames[0]"` # Create WordPress' config file lando wp config create \ --dbname=$DBNAME \ --dbuser=$DBUSER \ --dbpass=$DBPASS \ --dbhost=$DBHOST \ --path=$WEBROOT

Sobald wir die Datei erstellt haben, können wir den Installationsbefehl starten:

 # Get WordPress' project name from .lando.yml PROJECT_NAME=`grep name .lando.yml | cut -d: -f2 | xargs` SITE_NAME=`echo "$PROJECT_NAME" | sed -e "s/-/ /g" | sed "s/\b[az]/\u&/g"` # Get one of the possible WordPress' URLs ando created (https) URL=`lando info --service appserver --format json | jq -r ".[0].urls" | grep -vw localhost | grep https: | cut -d'"' -f2` # Extract the domain from the previous URL (removing https) DOMAIN=`echo "$URL" | sed -e "s/^https:\/\///"` # Install WordPress lando wp core install --url=$URL --title="$SITE_NAME" --admin_user=admin --admin_password=password --admin_email=admin@$DOMAIN --path=$WEBROOT

Getan! Wir haben WordPress bereits installiert und funktioniert.

Wie wir unser Projekt in WordPress einfügen

Wenn wir uns jetzt in WordPress einloggen und einen Blick auf die verfügbaren Plugins werfen, sehen wir, dass unser Plugin (in meinem Beispiel Nelio A/B Testing) nicht vorhanden ist. Das liegt daran, dass sich Nelio A/B Testing nicht in wordpress/wp-content/plugins/ befindet. Um dies zu beheben, müssen wir einfach einen Softlink in diesem Verzeichnis erstellen, der auf das Stammverzeichnis unseres Projekts verweist:

 cd wordpress/wp-content/plugins/ ln -s ../../../ nelio-ab-testing cd -

Und das ist es!

Es liegt nun an Ihnen, den Ansatz zu wählen, der Ihren Anforderungen am besten entspricht. Wenn Sie für jedes Projekt eine WordPress-Installation erstellen möchten, folgen Sie einfach den von mir beschriebenen Schritten. Wenn du hingegen eine einzelne WordPress-Installation mit all deinen Themes und Plugins darin haben möchtest, dann erstelle einfach einen neuen Ordner, init Lando dort und füge alle deine Plugins in wordpress/wp-content/plugins/ hinzu.

Ich hoffe, Ihnen hat dieser Beitrag und das Tool genauso gut gefallen wie mir. Und ich hoffe, es macht Ihre Arbeit einfacher und lustiger. Seitdem ich Lando verwende, habe ich mich komplett von Docker entfernt.

Beitragsbild von Victoire Joncheray auf Unsplash.