PHP: Bereitstellung mit GitHub Actions
Wie Sie Ihren PHP-Code mit GitHub Actions bereitstellen
👋 Willkommen in der Stackhero-Dokumentation!
Stackhero bietet eine einsatzbereite PHP-Cloud-Lösung, die zahlreiche Vorteile bietet, darunter:
- Deployen Sie Ihre Anwendung in Sekunden mit einem einfachen
git push.- Verwenden Sie Ihren eigenen Domainnamen und profitieren Sie von der automatischen Konfiguration von HTTPS-Zertifikaten für erhöhte Sicherheit.
- Genießen Sie beruhigende automatische Backups, Ein-Klick-Updates und eine einfache, transparente und vorhersehbare Preisgestaltung.
- Erhalten Sie optimale Performance und robuste Sicherheit dank einer privaten und dedizierten VM.
Sparen Sie Zeit und vereinfachen Sie Ihr Leben: Es dauert nur 5 Minuten, um die PHP-Cloud-Hosting-Lösung von Stackhero auszuprobieren!
GitHub Actions erleichtert die Automatisierung von Aufgaben wie der Bereitstellung Ihres PHP-Codes auf Produktionsservern. In diesem Leitfaden erfahren Sie, wie Sie Ihre PHP-Anwendung sicher in Staging- und Produktionsumgebungen mit GitHub Actions bereitstellen können.
Der Ansatz beinhaltet die Pflege von zwei Branches, staging und production. Code, der in diese Branches gepusht wird, wird automatisch auf der entsprechenden Stackhero-Instanz bereitgestellt.
Eine Staging-Instanz ist nicht zwingend erforderlich. Es wird jedoch dringend empfohlen, sowohl Staging- als auch Produktionsinstanzen zu verwenden, um reibungslose Bereitstellungen und ein höheres Vertrauen bei der Bereitstellung in der Produktion zu gewährleisten. Diese Praxis entspricht den Industriestandards und hilft, potenzielle Probleme zu vermeiden.
Um diesem Leitfaden zu folgen, benötigen Sie ein GitHub-Konto, das Ihr PHP-Code-Repository hostet.
Erstellen der PHP-Dienste
Beginnen Sie, indem Sie sich in Ihr Stackhero-Dashboard einloggen und zwei PHP-Dienste erstellen: einen für das Staging und einen für die Produktion. Um die Übersicht zu behalten, benennen Sie diese Dienste in "Production" und "Staging" um.
Wenn Sie kein Stackhero-Konto haben, können Sie in nur zwei Minuten kostenlos eines erstellen und Ihre PHP-Cloud-Dienste mit wenigen Klicks einrichten.
Beispiel für Produktions- und Staging-Dienste
SSH-Schlüssel konfigurieren
SSH-Schlüssel sind unerlässlich, damit GitHub Actions sicher eine Verbindung zu Ihrem PHP-Dienst für die Bereitstellung herstellen kann. In diesem Leitfaden erstellen Sie ein einzigartiges SSH-Schlüsselpaar, das diesem Zweck gewidmet ist.
SSH-Schlüssel generieren
Sie können neue SSH-Schlüssel generieren, indem Sie den folgenden Befehl auf Ihrem Computer ausführen:
ssh-keygen -C "" -f /tmp/ssh_key -N ""
Den öffentlichen Schlüssel festlegen
Rufen Sie den öffentlichen Schlüssel ab, indem Sie ausführen:
cat /tmp/ssh_key.pub
Navigieren Sie anschließend zu Ihrem Stackhero-Dashboard. Wählen Sie Ihren "Production" PHP-Dienst aus und klicken Sie auf "Configure". Folgen Sie dann diesen Schritten:
- Unter
SSH public keysklicken Sie auf "Add a public key". - Setzen Sie die
Descriptionauf "GitHub Action". - Fügen Sie den abgerufenen öffentlichen Schlüssel in das Feld
Keyein.
Dienst-Einstellungen abrufen
Den privaten Schlüssel festlegen
Öffnen Sie nun Ihr GitHub-Projekt und folgen Sie diesen Schritten, um den privaten Schlüssel für die Bereitstellung zu konfigurieren:
-
Klicken Sie auf
Settings, dannEnvironmentsund wählen SieNew environment.
GitHub-Umgebungen konfigurieren -
Geben Sie im Feld
Name"production" ein und bestätigen Sie.
Umgebung festlegen -
Klicken Sie auf die Schaltfläche
No restrictionund wählen SieSelected branches and tags.
Umgebungsbeschränkungen festlegen -
Klicken Sie auf
Add deployment branch or tag rule, geben Sie "production" im FeldName patternein und klicken Sie aufAdd rule.
Umgebungs-Branch festlegen
Umgebungs-Branch festlegen -
Unter
Environment secretsklicken Sie aufAdd secret.
Secret hinzufügen
Rufen Sie den zuvor generierten privaten Schlüssel ab, indem Sie ausführen:
cat /tmp/ssh_key
In den GitHub-Umgebungseinstellungen:
-
Geben Sie in
NameSTACKHERO_SSH_PRIVATE_KEYein und fügen Sie Ihren privaten Schlüssel in das FeldValueein.
SSH-Privatschlüssel-Secret festlegen -
Klicken Sie im Abschnitt
Environment variablesaufAdd variable.
Variablen festlegen -
Geben Sie in
NameSTACKHERO_ENDPOINTein und fügen Sie den PHP-Dienst-Endpunkt in das FeldValueein. Sie finden diesen Endpunkt in Ihrem Stackhero-Dashboard.
Endpunkt-Variable festlegen
Wenn Sie den Domainnamen Ihres Dienstes angepasst haben, verwenden Sie die angepasste Version anstelle von xxxxxx.stackhero-network.com.
Die generierten Schlüssel löschen
Aus Sicherheitsgründen sollten Sie nun die generierten SSH-Schlüssel von Ihrem Computer entfernen:
rm /tmp/ssh_key /tmp/ssh_key.pub
GitHub Actions-Workflow konfigurieren
Als nächstes richten Sie einen GitHub Actions-Workflow ein, um Ihre Bereitstellungen zu automatisieren. Erstellen Sie in Ihrem Git-Repository ein Verzeichnis namens .github/workflows und fügen Sie eine Datei namens deploy-to-stackhero.yml mit folgendem Inhalt hinzu:
# Datei: .github/workflows/deploy-to-stackhero.yml
name: Deploy to Stackhero
run-name: Deploy branch "${{ github.ref_name }}" to Stackhero
on:
push:
# Liste der Branches, die die Bereitstellungsaktion nach einem Git-Push auslösen
# Vergessen Sie nicht, eine entsprechende Umgebung in GitHub (unter "Settings" -> "Environments") für jeden Branch zu erstellen
# Fügen Sie dann das Secret "STACKHERO_SSH_PRIVATE_KEY" und die Variable "STACKHERO_ENDPOINT" in dieser Umgebung hinzu
branches: [ "production", "staging" ]
jobs:
Deploy:
environment: ${{ github.ref_name }}
runs-on: ubuntu-latest
steps:
- uses: stackhero-io/github-actions-deploy-to-stackhero@v1
with:
# Das Secret "STACKHERO_SSH_PRIVATE_KEY" und die Variable "STACKHERO_ENDPOINT" sollten in der entsprechenden GitHub-Umgebung (unter "Settings" -> "Environments") definiert sein
ssh_private_key: ${{ secrets.STACKHERO_SSH_PRIVATE_KEY }}
endpoint: ${{ vars.STACKHERO_ENDPOINT }}
Nachdem Sie die Datei hinzugefügt haben, committen Sie Ihre Änderungen, indem Sie die folgenden Befehle in Ihrem Terminal ausführen:
git add -A .
git commit -m "Add GitHub Actions to deploy to Stackhero"
Erstellen Sie dann einen Produktions-Branch, indem Sie ausführen:
git checkout -b production
Schließlich pushen Sie Ihre Änderungen zu GitHub:
git push --set-upstream origin production
Dieser Befehl pusht Ihren Code in den production-Branch von GitHub. GitHub Actions wird dann automatisch ausgeführt und stellt Ihren Code auf der zugehörigen Stackhero-Instanz bereit. Um die Bereitstellung zu überprüfen, besuchen Sie Ihr GitHub-Projekt und klicken Sie auf Actions.
GitHub Actions, die in die Produktion bereitgestellt wurden
Herzlichen Glückwunsch, Sie sind jetzt bereit, Ihren Code automatisch in die Produktion mit GitHub Actions bereitzustellen!
Erstellen der Staging-Umgebung
Sie können die Staging-Umgebung mit einem ähnlichen Prozess wie die Produktionsumgebung einrichten. Wiederholen Sie einfach die obigen Schritte und ersetzen Sie production durch staging, wo zutreffend.
Sobald die Einstellungen konfiguriert sind, erstellen Sie einen Staging-Branch, indem Sie ausführen:
git checkout -b staging
Pushen Sie dann Ihre Änderungen zu GitHub:
git push --set-upstream origin staging
GitHub Actions stellt den Code des Staging-Branches automatisch auf dem für das Staging vorgesehenen PHP-Dienst bereit.
Weiterführende Schritte
Es ist eine gute Praxis, die Branches production und staging zu schützen, um direkte Pushes zu vermeiden. Sie könnten in Erwägung ziehen, einen Pull-Request für den staging-Branch zu erstellen, der nur von Personen mit Berechtigungen für die Bereitstellung überprüft und zusammengeführt wird. Sobald die Änderungen in der Staging-Umgebung validiert sind, können autorisierte Benutzer den Pull-Request in den production-Branch zusammenführen.
Dieser Ansatz erhöht die Sicherheit, indem er sicherstellt, dass nur genehmigte Änderungen bereitgestellt werden, und verbessert die Zuverlässigkeit, indem neue Funktionen in einer Staging-Umgebung getestet werden, bevor sie die Produktion erreichen.