Dies ist ein Beitrag für alle WordPress-Entwickler da draußen!

Heute werden wir erklären, wie man Bedrock und Trellis bei Kinsta benutzt und integriert.

Falls du noch nie von diesen beiden Tools gehört hast, werden wir sie auch vorstellen und hoffentlich helfen, zu erklären, warum du sie gegenüber einem traditionellen Setup verwenden solltest.

Bedrock und Trellis

Sowohl Bedrock als auch Trellis existieren, um die Entwicklung, Wartung und Bereitstellung von WordPress-Seiten zu erleichtern.

  • Bedrock bietet eine alternative Möglichkeit, deine WordPress-Installation mit einer verbesserten Ordnerstruktur, modernen Entwicklungswerkzeugen und verbesserter Sicherheit zu verwalten.
  • Trellis arbeitet mit Bedrock zusammen, um Entwicklungsumgebungen mit Vagrant zusammen mit Ein-Kommando-Einsätzen zu erstellen.

Der Hauptgrund für die Verwendung von Bedrock ist die korrekte Verwaltung von Abhängigkeiten und Paketen für ein WordPress-Projekt. Vielleicht bist du bereits mit npm für JavaScript oder Bundler für Ruby vertraut. PHP ist nicht anders, und sein Äquivalent ist Composer.

Während die Verwendung eines Paketmanagers üblich ist, ist sie für WordPress selbst weniger üblich, da WordPress bereits ein eigenes Konzept für Plugins hat. Bedrock integriert Composer, um Plugins, Themes und sogar den WordPress-Core selbst als Abhängigkeiten zu verwalten.

Trellis ist ein Werkzeug zur einfachen Erstellung von Entwicklungs- und Produktionsservern zum Hosten von WordPress-Seiten. Es wurde speziell für die Arbeit mit Bedrock-basierten Seiten entwickelt. Trellis wird standardmäßig für die Entwicklung mit Vagrant und in der Produktion verwendet, um die Parität zwischen diesen beiden Umgebungen zu erreichen.

Dieser Beitrag erklärt einen etwas anderen Anwendungsfall: Trellis für deinen Entwicklungsserver und Kinsta für deinen Produktions- (und/oder Staging-) Server.

Warum Kinsta über einen Trellis-versorgten VPS verwenden? Weil man manchmal jemand anderen für die Verwaltung des Servers bezahlen möchte, anstatt es selbst zu tun (besonders wenn man viele Clients hat). Kinsta macht auch die Skalierung einfacher, ohne dass man sich mit mehreren Servern, Loadbalancern und Cloud-Uploads beschäftigen muss.

Viele WordPress-Hosts sind nicht sehr entwicklerfreundlich und bieten keinen SSH-Zugang und keine Composer- oder WP-CLI-Integration an, die Voraussetzung für die Verwendung von Trellis und Bedrock sind. Glücklicherweise bietet Kinsta SSH-Zugang für alle ihre Hosting-Pakete, von Starter bis Enterprise, was all dies ermöglicht. Du kannst auch den Root-Pfad für die richtige Funktionalität modifizieren.

Bedrock vs. reguläres WordPress

Du fragst dich vielleicht, warum du Bedrock gegenüber einer traditionellen WordPress-Installation verwenden solltest. Der Grund dafür ist, dass Bedrock speziell für den modernen Webentwickler entwickelt wurde:

  • Umgebungsspezifische Konfigurationsdateien, die außerhalb des öffentlichen Web-Stammverzeichnisses gespeichert werden.
  • Umgebungsvariablen zur Trennung von Konfiguration und Code in einer einzigen .env-Datei
  • Verbesserte Sicherheit durch Beschränkung des Zugriffs auf Nicht-Web-Dateien zusammen mit gehashten bcrypt-Passwörtern
  • Benutzerdefiniertes wp-Inhaltsverzeichnis namens app
  • Composer zur Verwaltung von WordPress, Plugins, Themes und anderen PHP-Abhängigkeiten
  • .gitignore, das den WordPress-Core, Plugins und Uploads ausschließt

Raspberry Pi, Snopes, JetBlue und andere vertrauen auf Bedrock, um ihre WordPress-Seiten zu betreiben.

Schauen wir uns die beiden Ordnerstrukturen nebeneinander an:

Bedrock vs. WordPress
Bedrock vs. WordPress

Bedrock bringt die Installation von WordPress in ein Unterverzeichnis auf die nächste Ebene. Ein großer Teil der Philosophie hinter Bedrock ist von der Twelve Factor App Methode inspiriert, einschließlich der WordPress-spezifischen Version.

Konfigurieren von Trellis für Kinsta

Stelle zunächst sicher, dass deine öffentlichen SSH-Schlüssel zum MyKinsta-Dashboard hinzugefügt werden.

Trellis kann mit nur wenigen Aktualisierungen in Kinsta eingesetzt werden. Da Kinsta alles vom Standpunkt des Web-Servers aus bietet, ist die Bereitstellung deiner Staging- und Produktionsumgebung nicht erforderlich.

Die Ein-Befehl-Bereitstellungen in Trellis funktionieren mit Kinsta mit einer kleinen Konfiguration. Nach der Konfiguration kann man die WordPress-Seiten bereitstellen, indem man das Deploy-Playbook in Trellis ausführt:

ansible-playbook deploy.yml -e env=staging -e site=example.com --limit=kinsta_staging

Rufe dein MyKinsta-Dashboard auf und navigiere zu der WordPress-Seite, die du mit Bedrock und Trellis einrichtest, zusammen mit deinem Code-Editor, der zum trellis-Verzeichnis in deinem Projekt geöffnet ist.

Bearbeite zuerst die Datei trellis/ansible.cfg, um das Folgende zu [defaults] oben hinzuzufügen:

forks = 3
host_key_checking = False

Staging Konfiguration

Stelle sicher, dass trellis/group_vars/staging/wordpress_sites.yml mit der richtigen canonical Version für deine Staging-Seite konfiguriert ist:

wordpress_sites:
  example.com:
    site_hosts:
      - canonical: staging-example.kinsta.com

Öffne dann trellis/group_vars/staging/main.yml und füge Folgendes am Ende der Datei hinzu:

project_root: /www/example_123/public
www_root: /www/example_123/public
web_user: example
web_group: www-data

Ersetze die project_root– und www_root-Pfade mit dem korrekten Pfad, der dir im MyKinsta-Dashboard für deine Kinsta-Staging-Umgebung angeboten wird.

Finde die public Root in MyKinsta.
Finde die public Root in MyKinsta.

Als nächtes öffne trellis/group_vars/staging/vault.yml zur Bearbeitung, indem du ansible-vault edit group_vars/staging/vault.yml.

Wir müssen db_userdb_name, und db_password zu envhinzufügen. Du findest die Werte für diese auf dem Hauptinfobildschirm deiner Webseite im MyKinsta-Dashboard.

SFTP und Datenbank-Anmeldeinformationen in MyKinsta.
SFTP und Datenbank-Anmeldeinformationen in MyKinsta.
vault_wordpress_sites:
  example.com:
    env:
      db_user: "example"
      db_name: "example"
      db_password: "xxxxxxxxxxxxxxx"
      # Generate your keys here: https://roots.io/salts.html
      auth_key: ""
      secure_auth_key: ""
      logged_in_key: ""
      nonce_key: ""
      auth_salt: ""
      secure_auth_salt: ""
      logged_in_salt: ""
      nonce_salt: ""

Zum Schluss öffne trellis/hosts/staging und esetze den Inhalt durch:

kinsta_staging ansible_host=104.154.94.123 ansible_ssh_port=12345 ansible_ssh_extra_args='-o StrictHostKeyChecking=no'

[web]
kinsta_staging

[staging]
kinsta_staging

Vergewisser dich, dass der Host und der SSH-Port mit der Liste im MyKinsta-Dashboard übereinstimmen.

SFTP Host- und Port-Details für deine Staging-Umgebung.
SFTP Host- und Port-Details für deine Staging-Umgebung.

Konfiguration der Produktion

Wiederholen wir nun den oben beschriebenen Prozess für die Produktionsumgebung. Stelle sicher, dass du im MyKinsta-Dashboard auf deine „Live“-Umgebung umschaltest.

Wechsle zu deiner Live-Umgebung in MyKinsta.
Wechsle zu deiner Live-Umgebung in MyKinsta.

Öffne trellis/group_vars/production/main.yml und füge Folgendes am Ende der Datei hinzu:project_root: /www/example_123/public
www_root: /www/example_123/public
web_user: example
web_group: www-data

Achte darauf, die project_root– und www_root-Pfade durch den korrekten Pfad zu ersetzen, der dir im MyKinsta-Dashboard für deine Live-Umgebung angeboten wird.

Als nächtes öffnetrellis/group_vars/production/vault.yml zur Bearbeitung, indem du ansible-vault edit group_vars/production/vault.yml:

vault_wordpress_sites:
  example.com:
    env:
      db_user: "example"
      db_name: "example"
      db_password: "xxxxxxxxxxxxxxx"
      # Generate your keys here: https://roots.io/salts.html
      auth_key: ""
      secure_auth_key: ""
      logged_in_key: ""
      nonce_key: ""
      auth_salt: ""
      secure_auth_salt: ""
      logged_in_salt: ""
      nonce_salt: ""

Schließlich öffne das  trellis/hosts/production production und ersetze den Inhalt durch

kinsta_production ansible_host=104.154.94.123 ansible_ssh_port=12345 ansible_ssh_extra_args='-o StrictHostKeyChecking=no'

[web]
kinsta_production

[production]
kinsta_production

Ändern der Bereitstellungsaufgaben

Trellis versucht, php-fpm neu zu laden, was wir von dem Versuch, auf den Kinsta-Servern zu laufen, entfernen müssen. Wir müssen auch die Löschung von Kinsta’s Cache auf einem Deployment auslösen.

Öffne die Datei trellis/roles/deploy/hooks/finalize-after.yml und scrolle nach unten. Entferne die letzte Aufgabe für Reload php-fpmand und füge Folgendes hinzu::

- name: Clear Kinsta cache
  uri:
    url: "{{ site_env.wp_home }}/ask-support-rep/"
    method: GET

Ersetze ask-support-rep oben, nachdem du einen Kinsta-Supportvertreter nach der URL zum Löschen des Caches auf deiner Webseite gefragt hast.

Optional: Composer-Abhängigkeiten installieren

Wenn du einen Screen bekommst, der dir sagt, dass du ‚Composer Install‘ ausführen sollst, füge das folgende direkt vor dem obigen „Clear Kinsta cache“-Code hinzu:

- name: Install Composer dependencies
composer:
command: install
working_dir: >/www/example123/public/final-path

Der /final-path kann je nach deinen Bedrock / Trellis Einstellungen variieren.

Hinzufügen von kinsta-mu-Plugins zu Bedrock

Auf Bedrock-Seiten werden mu-plugins automatisch installiert, aber du musst das Kinsta MU-Plugin installieren, indem du das Paket kinsta-mu-plugins mitbringst. Dieses Plugin (das standardmäßig installiert wird, wenn du eine WordPress-Seite über MyKinsta erstellst) kümmert sich um Dinge wie Full Page Caching und die Integration des Kinsta CDN.

Öffne site/composer.json und füge Folgendes innerhalb des Arrays der repositories hinzu:

{
  "type": "package",
  "package": {
    "name": "kinsta/kinsta-mu-plugins",
    "type": "wordpress-muplugin",
    "version": "2.3.3",
    "dist": {
      "url": "https://kinsta.com/kinsta-tools/kinsta-mu-plugins.zip",
      "type": "zip"
    }
  }
}

Dann führe Folgendes in deinem Bedrock/site-Verzeichnis aus (oder gib kinsta/kinsta-mu plugins als Voraussetzung in deiner composer.json-Datei an:

composer require kinsta/kinsta-mu-plugins:2.3.3

Die folgenden Konstanten können erforderlich sein, um Probleme mit CDN-Pfaden und gemeinsam genutzten Plugin-URLs zu beheben. Füge den folgenden Code in die Konfigurationsdatei deiner Seite ein (bedrock/config/application.php in Bedrock-Seiten):

/**
 * Kinsta CDN fix for Bedrock
 */
define('KINSTA_CDN_USERDIRS', 'app');
/**
 * Fix Kinsta MU Plugins URL path with Bedrock
 */
$mu_plugins_url = Config::get('WP_CONTENT_URL') . '/mu-plugins';
define('KINSTAMU_CUSTOM_MUPLUGIN_URL', "{$mu_plugins_url}/kinsta-mu-plugins");

Weitere Informationen und wie du das Plugin aktualisieren kannst, findest du in unserer Anleitung für das Kinsta MU Plugin.

Letzte Schritte mit Unterstützung von Kinsta

Das letzte, was man tun muss, ist, Kinsta darüber zu informieren, worauf der Dokument-Stamm zu setzen ist. Hüpfe auf MyKinsta und bitte das Support-Team darum, dass dein Dokumentenstamm auf public/current/web aktualisiert wird.

Falls die URL zum Löschen des Caches nicht schon früher bekannt war, frage auch den Support-Mitarbeiter danach und stelle sicher, dass die Datei trellis/roles/deploy/hooks/finalize-after.yml mit der richtigen URL aktualisiert wird, um den Cache von Kinsta bei einem erfolgreichen Deployment zu löschen.

Sobald diese Änderung vorgenommen wurde, kannst du die Bereitstellung sowohl in deiner Staging- als auch in deiner Produktionsumgebung mit einer einzigen Zeile durchführen:

# Deploy staging
ansible-playbook deploy.yml -e env=staging -e site=example.com --limit=kinsta_staging

# Deploy production
ansible-playbook deploy.yml -e env=production -e site=example.com --limit=kinsta_production

Besser noch… richte einen kontinuierlichen Integrationsdienst wie CircleCI ein, um das Deployment automatisch für dich auszuführen, wenn du dich entweder für staging oder master entscheidest!