Stellen Sie WordPress mit Github Actions bereit

Hinweis: Der folgende Artikel hilft Ihnen dabei: Stellen Sie WordPress mit Github Actions bereit

Stellen Sie WordPress mit Github Actions bereit

Vor einiger Zeit habe ich Ihnen gezeigt, wie Sie Ihre WordPress-Site mit Deploybot bereitstellen. Ich nutze diesen Dienst schon seit Jahren, aber als ich anfing, lag er außerhalb meiner Preisspanne, also habe ich nichts genutzt und bei der Bereitstellung meiner Websites viele Fehler gemacht, die mich viele verlorene Stunden und einige Tränen gekostet haben.

Heute werde ich Ihnen zeigen, wie Sie Github Actions verwenden, um Ihre Website automatisch und kostenlos bereitzustellen. Die Einrichtung ist komplexer als bei Deploybot, aber für die meisten Projekte wird es kostenlos sein.

Dieser Beitrag enthält eine Reihe funktionierender Teile. Nehmen Sie sich also etwas Zeit, insbesondere wenn Sie noch nie mit Git- oder SSH-Schlüsseln gearbeitet haben. Wir werden Folgendes behandeln:

  • Erstellen eines Hosting-Kontos
  • Holen Sie sich Ihren Code in Git
  • Erstellen spezieller Bereitstellungs-SSH-Schlüssel für die Verwendung durch Github
  • Konfigurieren der Github Actions YAML-Datei
  • Verwendung von Github-Repository-Geheimnissen, um private Informationen zu schützen
  • rsync über ssh

Was sind Github-Aktionen??

Github-Aktionen ist eine Funktion von Github, mit der Sie Aufgaben basierend auf dem Status Ihres Codes automatisch ausführen können. Heute schauen wir uns die Bereitstellung an, aber Sie könnten auch eine Aktion haben, um Ihre Unit-Tests auszuführen oder einen Slack-Chat zu benachrichtigen, wenn jemand eine neue PR für Ihr Projekt macht.

Auch wenn die Einrichtung beim ersten Mal etwas Zeit und Mühe erfordert, zahlt sich die Investition aus, da Sie wieder mit dem Code beginnen können, anstatt sich darum kümmern zu müssen, die gleiche Arbeit immer wieder zu wiederholen.

So richten Sie Ihre Website ein

Als Erstes müssen Sie ein Hosting-Konto bei Hostinger erstellen. Schauen Sie sich also die verfügbaren Tarife an. Der Maker WordPress-Plan ist ein guter Plan, wenn Sie mehrere Websites hosten.

Gehen Sie nach der Einrichtung Ihrer Site zu den Backups und erstellen Sie ein Backup der Site, bevor Sie etwas anderes tun. Stellen Sie sicher, dass Sie auch dieses Backup herunterladen, damit Sie für alle Fälle eine Kopie auf Ihrem Computer haben.

Entpacken Sie das Backup und kopieren Sie dann den Ordner, um ihn als unser Git-Repository zu verwenden. Sie können die Datei wp-config.php entfernen, da wir sie heute nicht benötigen.

Nachdem wir nun unsere Kopie des Repositorys heruntergeladen haben, fügen wir sie zu Github hinzu. Zunächst müssen wir ein neues Repository in Github erstellen. Fügen Sie Ihren Titel und die gewünschte Beschreibung hinzu, normalerweise ich nicht Initialisieren Sie das Repository mit einer README-Datei, da ich alle projektspezifischen Notizen und Dokumentationen für ein Kundenprojekt selbst bereitstellen werde.

Lesen:  Top 10 der besten Risikolebensversicherungsunternehmen im Jahr 2024

Öffnen Sie als Nächstes Terminal und die heruntergeladene Kopie von WordPress, damit Sie das Repository mit initialisieren können. Als Erstes möchten wir unsere .gitignore-Datei hinzufügen, damit wir keine Dateien hinzufügen, die möglicherweise überschreiben, was Hostinger zum Betrieb Ihrer Website benötigt. Sie können die unten bereitgestellte .gitignore-Datei verwenden.

Die obersten acht Zeilen sind spezifisch für Hostinger. Stellen Sie daher sicher, dass Sie diese Zeilen kopieren, wenn Sie Ihre eigene bevorzugte Ignorierungskonfiguration haben.

Wenn Sie mit Git nicht vertraut sind, lesen Sie meinen Beitrag zur Einführung in Git.

.htaccess

wp-config.php

wp-content/uploads/*

wp-content/cache/*

wp-content/upgrade/*

wp-content/advanced-cache.php

wp-content/object-cache.php

wp-content/mu-plugins/*

config/app_config.yml

config/database.yml

config/*.sphinx.conf

config/s3_credentials.yml

*~

*.Zwischenspeicher

*.Protokoll

*.pid

tmp/**/*

.DS_Store

db/cstore/**

db/sphinx/**

doc/api

doc/app

doc/plugins

doc/*.dot

Abdeckung/*

db/*.sqlite3

*.tmproj

*.sw?

*.esproj

_Anmerkungen*

dwsync.xml

Podcast.xml

*.kpf

*uploads/*

*.swp

*.Idee

*.sublime-projekt

*.sublime-workspace

*/node_modules/*

Stichworte

*.bak

Zwischenspeicher/*

managewp/*

Nachdem Sie nun die Ignorierdatei bereit haben, verwenden Sie und, um die WordPress-Dateien zu Ihrem Repository hinzuzufügen. Schieben Sie diese Dateien dann in Ihr Github-Repository.

Erstellen eines Deploy-SSH-Schlüssels für Github

Um unsere Website über Github Actions bereitzustellen, benötigen wir einen SSH-Schlüssel für die Aktion. Tun nicht Verwenden Sie Ihren regulären SSH-Schlüssel.

Um die benötigten SSH-Schlüssel zu generieren, verwenden Sie den folgenden Befehl unter Verwendung Ihrer E-Mail-Adresse. Wenn Sie zur Eingabe einer Passphrase aufgefordert werden, drücken Sie die Eingabetaste und lassen Sie das Feld leer. Wenn Sie nach einem Standort gefragt werden, wählen Sie einen Ort aus, an dem sie vorübergehend gespeichert werden sollen. Die Github-Dokumentation zu SSH-Schlüsseln mit zusätzlichen Details finden Sie hier.

ssh-keygen -t rsa -b 4096 -C „[email protected]

Öffnen Sie nun den öffentlichen Schlüssel (der auf .pub endet) und öffnen Sie ihn im Texteditor Ihrer Wahl. Klicken Sie in Ihrem Hostinger-Konto oben rechts auf Ihren Kontonamen und wählen Sie SSH-Schlüssel aus.

Wählen Sie als Nächstes „Schlüssel hinzufügen“ und kopieren Sie den gesamten Schlüssel und fügen Sie ihn in das Haupttextfeld ein. Achten Sie darauf, Ihren Schlüssel ordnungsgemäß zu beschriften, damit Sie erkennen können, wofür der Schlüssel verwendet wird.

Klicken Sie abschließend auf „Hinzufügen“, um den Schlüssel in Ihrem Konto zu speichern.

Hinzufügen und Konfigurieren Ihrer Github-Aktion

Bevor wir mit dem Aufbau unserer Aktion beginnen, benötigen wir einige geheime Informationen, die in unserem Konto gespeichert sind. Dinge wie unser privater Schlüssel für das Schlüsselpaar, das wir gerade erstellt haben, der Standort unseres Servers und der Eintrag für die Datei „known_hosts“.

Beginnen Sie damit, indem Sie oben rechts in Ihrem Repository „Einstellungen“ auswählen. Wählen Sie dann in der linken Spalte „Geheimnisse“ aus. Wir werden 3 verschiedene Werte hinzufügen.

  1. DEPLOY_SSH_KEY: Dies ist der private Schlüssel, den wir generiert haben (hat am Ende kein .pub)
  2. NEXCESS_LOCATION: Der Speicherort, auf den SSH auf unserem Server zugreift, sowie der Dateipfad zu Ihrem HTML-Verzeichnis. Wenn Sie hier einen Fehler machen, könnte Ihre Website gelöscht werden. Aus diesem Grund haben wir ein Backup erstellt.
  3. NEXCESS_HOST: Die zulässige Hostdatei, die wir von unserem Server benötigen
Lesen:  Die Unterschiede zwischen Webhostern und Domain-Registraren

Sie haben bereits 1, also öffnen Sie Ihre Schlüsseldatei und kopieren Sie deren gesamten Inhalt in ein Geheimnis namens DEPLOY_SSH_KEY.

Als Nächstes können Sie den Standort Ihres Servers über Ihr Hostinger-Kontrollfeld für Ihre Site im Menü „Zugriff“ abrufen.

Der einfachste Weg, den Inhalt für NEXCESS_HOST abzurufen, besteht schließlich darin, von Ihrem Computer aus eine SSH-Verbindung zu Ihrem Server herzustellen. Dies sollte Sie dazu auffordern, einen neuen bekannten Server zu akzeptieren. Akzeptieren Sie den neuen Server und gehen Sie dann zu ~/.ssh/known_hosts und rufen Sie die letzte Zeile in der Datei für das Geheimnis ab, das Sie Ihrem Repository hinzufügen müssen.

Warum halten wir dieses Zeug geheim? Jede dieser Informationen birgt ein gewisses Sicherheitsrisiko, sodass Sie sie nicht in Ihrem Repository haben möchten. Indem Sie sie in eine geheime Variable in Github einfügen, stellen Sie sicher, dass Sie nicht versehentlich Informationen preisgeben.

Wir sind bereit, zu unserem Repository auf Github zurückzukehren und unsere Aktion in Gang zu bringen. Gehen Sie zunächst zum Menü „Aktionen“ oben in Ihrem Repository und klicken Sie darauf. Obwohl es viele vorgefertigte Aktionen gibt, beginnen wir damit, unsere eigene Aktion zu erstellen. Wählen Sie diese also im Bildschirm „Aktionen“ aus.

Dadurch erhalten Sie eine grundlegende Workflow-Datei, die in YAML geschrieben ist. Standardmäßig funktioniert es nur in Ihrem Hauptzweig, aber indem Sie in den Argumenten in den Zeilen 9 und 11 ändern, welcher Zweig sich befindet, können Sie dafür sorgen, dass es für einen anderen Zweig funktioniert. Sie können dies tun, wenn Sie die Bereitstellung von einem Staging-Zweig auf einer Staging-Site und von der Master-Site auf der Live-Site durchführen möchten.

Beginnen Sie mit der folgenden Zeile und löschen Sie den Rest Ihrer Standard-Workflow-Datei.

# Führt einen einzelnen Befehl mit der Runners-Shell aus

– Name: Führen Sie ein einzeiliges Skript aus

run: echo Hallo Welt

Jetzt müssen wir unseren SSH-Agenten besorgen. Suchen Sie auf der rechten Seite des Workflow-Bildschirms nach webfactory/ssh-agent.

Klicken Sie darauf und Sie erhalten einige Befehle zum Kopieren und Einfügen am Ende Ihrer Datei. Wir werden jedoch unser eigenes benutzerdefiniertes Skript verwenden. Kopieren Sie den Code unten und fügen Sie ihn in Ihre Workflow-Datei unter der Zeile „actions/checkout@v2“ ein.

Lesen:  Memcached vs. Redis: Welches ist das Beste für Sie?

# SSH einrichten

– Name: SSH-Agent einrichten

verwendet: webfactory/[email protected]

mit:

ssh-private-key: ${{ Secrets.DEPLOY_SSH_KEY }}

– Name: Bekannte_Hosts einrichten

Führen Sie Folgendes aus: echo ‘${{ Secrets.NEXCESS_HOST }}’ >> ~/.ssh/known_hosts

– Name: Projektdateien synchronisieren

Führen Sie Folgendes aus: rsync -uvzr –backup –backup-dir=”~/deploy-backup/” –exclude ‘wp-config.php’ –exclude ‘.gitignore’ –exclude ‘.git/*’ — include ‘wp-content/uploads/*’ –exclude ‘.htaccess’ –exclude ‘wp-content/cache/*’ –exclude ‘wp-content/advanced-cache.php’ –exclude ‘wp-content /object-cache.php’ –exclude ‘wp-content/mu-plugins/*’ ${GITHUB_WORKSPACE}/ ${{ Secrets.NEXCESS_LOCATION }}

Sie können die Geheimnisse, die wir zuvor eingerichtet haben, in dieser Datei sehen. Zunächst wird der SSH-Agent aufgerufen und unser privater DEPLOY_SSH_KEY zum Server hinzugefügt, der im Hintergrund vorbereitet wird. Als nächstes fügt es unseren Server als bekannten Host hinzu.

Zum Abschluss werden die Projektdateien mit einem langen rsync-Befehl mit dem Live-Server synchronisiert. Kurz gesagt, es sichert den Remote-Server in einem Verzeichnis namens „deploy-backup“ und verschiebt dann alle neuen Dateien im Github-Projekt auf den Live-Server. Wir haben alle Speicherorte ausgeschlossen, die wir in unserer ursprünglichen .gitignore-Datei ignoriert haben, damit rsync sie nicht versehentlich berührt.

Wenn Sie sich über die einzelnen rsync-Befehle dort informieren möchten, verweise ich normalerweise darauf Ubuntu-Dokumentation zu rsync

Jetzt müssen Sie nur noch einige Änderungen in Ihrem Repository vornehmen und diese dann mit Git hinzufügen und in Ihr Repository übertragen. Übertragen Sie diese Änderungen auf Github, und die Aktion sichert automatisch Ihre Dateien und überträgt Ihre Änderungen dann auf Ihre Website.

Wenn Sie mit automatischen Bereitstellungen noch nicht vertraut sind, scheint dies eine Menge Arbeit zu sein. Selbst als ich Github Actions zum ersten Mal zum Bereitstellen meiner Website verwendete, habe ich ein paar Tage damit verbracht, am Skript zu arbeiten. Dies scheint keine Zeit zu sparen, bis ich wochenlang dasselbe Skript verwende und ein Projekt regelmäßig bereitstellt.

Wenn Sie Ihre Bereitstellung automatisieren und sich die Zeit nehmen, sie richtig zu machen, bedeutet das, dass Sie nie versehentlich die falschen Dateien überschreiben, die falschen Dateien im falschen Verzeichnis ablegen oder einen der vielen anderen Fehler machen, die ich in den 12 Jahren beim Verschieben von Dateien gemacht habe Ich habe Baustellen gebaut.

Ein oder zwei Tage Zeit, die Sie damit verbringen, die Bereitstellung zum ersten Mal zu konfigurieren, sind es wert, sich diesen Aufwand zu ersparen.