PHP: Erste Schritte
Wie Sie mit PHP auf Stackhero starten
👋 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!
Ihre PHP-Anwendung auf Stackhero bereitzustellen ist sowohl einfach als auch leistungsstark. In nur wenigen Schritten ist Ihr Projekt online und einsatzbereit. Diese Anleitung führt Sie Schritt für Schritt durch das Erstellen, Konfigurieren und Bereitstellen Ihres PHP-Services auf eine benutzerfreundliche Weise.
Einen PHP-Service starten
Zu Beginn können Sie einen PHP-Service direkt über das Stackhero-Dashboard erstellen. Die Benutzeroberfläche ist darauf ausgelegt, diesen Vorgang schnell und unkompliziert zu gestalten.
Voraussetzungen
Bevor Sie starten, stellen Sie sicher, dass Sie folgende Tools eingerichtet haben:
- Git. Sie können es unter https://git-scm.com/downloads herunterladen.
- Windows Terminal (optional für Windows-Nutzer). Dieses Terminal bietet eine verbesserte Benutzererfahrung und ist über den Microsoft Store verfügbar.
Service konfigurieren
Die wichtigste Konfiguration ist Ihr SSH Public Key. Sie können Ihren Public Key mit einem der folgenden Befehle abrufen:
cat ~/.ssh/id_rsa.pub
oder
cat ~/.ssh/id_ed25519.pub
Falls Sie noch kein SSH-Schlüsselpaar besitzen, können Sie eines mit ssh-keygen unter Linux und macOS oder ssh-keygen.exe unter Windows generieren.
Sobald Sie Ihren Public Key haben, gehen Sie ins Stackhero-Dashboard, wählen Sie Ihren PHP-Service, navigieren Sie zur Konfigurationsseite und fügen Sie Ihren Schlüssel in das dafür vorgesehene Feld ein.
Tip: Wenn Sie Ihren SSH Public Key für alle zukünftigen Services global hinterlegen möchten, können Sie dies tun. Klicken Sie einfach oben rechts im Dashboard auf Ihr Profilbild, gehen Sie zu "Ihr Profil" und fügen Sie dort Ihren SSH Public Key ein.
Beispiel klonen
Um Ihnen den Einstieg zu erleichtern, haben wir eine Beispiel-PHP-Anwendung vorbereitet. Sie können das Repository mit folgendem Befehl klonen:
git clone https://github.com/stackhero-io/phpGettingStarted.git stackhero-php-getting-started
cd stackhero-php-getting-started
Remote-Repository-Server konfigurieren
Stackhero macht das Deployment Ihrer Anwendung via Git besonders einfach. Kopieren Sie den git remote-Befehl, der auf der Übersichtsseite Ihres PHP-Services im Dashboard angezeigt wird. Er sieht etwa so aus:
git remote add stackhero ssh://stackhero@<XXXXXX>.stackhero-network.com:222/project.git
PHP-Code bereitstellen
Sie sind nun bereit, Ihre Anwendung zu deployen. Sie können Ihren Code mit folgendem Befehl pushen:
git push stackhero main
Beim ersten Push werden Sie aufgefordert, den Key-Fingerprint zu akzeptieren. Geben Sie einfach "yes" ein, wenn Sie dazu aufgefordert werden. Nach kurzer Zeit sollte Ihre Anwendung online sein. Den Status können Sie über die im Stackhero-Dashboard angegebene URL prüfen (in der Regel https://<XXXXXX>.stackhero-network.com).
Um Ihre Anwendung zu aktualisieren, ändern Sie einfach die Datei www/index.php (oder eine andere gewünschte Datei) und deployen Sie Ihre Änderungen erneut mit:
git add -A .
git commit -m "Update www/index.php"
git push stackhero main
Eine bestehende Anwendung bereitstellen
Wenn Sie bereits eine PHP-Anwendung haben, die Sie deployen möchten, müssen Sie lediglich das Remote-Repository zu Ihrem Projekt hinzufügen (siehe Remote-Repository-Server konfigurieren). Anschließend können Sie Ihre Änderungen wie gewohnt pushen:
git push stackhero main
Standardmäßig sucht Stackhero Ihren PHP-Code und statische Dateien im Verzeichnis www. Wenn beispielsweise jemand yourdomain.com/myphoto.jpg aufruft, wird die Datei aus www/myphoto.jpg ausgeliefert. Falls Ihre Anwendung ein anderes öffentliches Verzeichnis verwendet, können Sie diese Einstellung in der Konfiguration Ihres PHP-Services anpassen.
Fehler "failed to push some refs to '[...]'" beheben
Falls Sie beim Deployment auf folgenden Fehler stoßen:
error: failed to push some refs to '[...]'
hint: Updates were rejected because the remote contains work that you do
hint: not have locally. This is usually caused by another repository pushing
hint: to the same ref. You may want to first integrate the remote changes
hint: (e.g., 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.
Diese Meldung bedeutet, dass das Remote-Git-Repository Änderungen enthält, die in Ihrer lokalen Kopie nicht vorhanden sind. Wenn Sie sicher sind, dass Sie das Remote-Repository mit Ihrer lokalen Version überschreiben möchten, können Sie den Push erzwingen mit:
git push -f stackhero main
Fehler "src refspec main does not match any" beheben
Wenn Sie diesen Fehler sehen:
error: src refspec main does not match any
error: failed to push some refs to 'ssh://<XXXXXX>.stackhero-network.com:222/project.git'
Bedeutet das in der Regel, dass der Branch main lokal nicht existiert. In diesem Fall können Sie stattdessen den Branch master pushen:
git push stackhero master
Fehler "Everything up-to-date" beim Push beheben
Wenn Git Everything up-to-date meldet und Sie Ihre Änderungen nicht deployed sehen, haben Sie vermutlich vergessen, Ihre Änderungen zu committen. Sie können das wie folgt beheben:
git add -A .
git commit -m "Ihr Commit-Text"
git push stackhero main
Falls Sie keinen Code geändert haben, aber dennoch ein Deployment auslösen möchten, können Sie einen leeren Commit verwenden:
git commit --allow-empty -m "Force update"
git push stackhero main
Einen anderen Branch als main deployen
Wenn Sie einen anderen Branch (z.B. production) deployen möchten, verwenden Sie:
git push stackhero production:main
Einen Tag deployen
Um einen bestimmten Tag (wie v1.0) zu deployen, führen Sie aus:
git push stackhero 'v1.0^{}:main'
Das ^{} stellt sicher, dass der Commit, auf den sich der Tag bezieht, korrekt gepusht wird.
Rollback oder einen bestimmten Commit deployen
Wenn Sie einen bestimmten Commit deployen möchten, ermitteln Sie zunächst dessen Hash mit git log. Anschließend können Sie diesen Commit mit folgendem Befehl erzwingen:
git push -f stackhero <HASH>:main
Deployment in mehrere Umgebungen
Es ist üblich, separate Services für verschiedene Umgebungen wie Produktion und Staging zu betreiben. Sie können dies verwalten, indem Sie Remote-Repositories umbenennen und hinzufügen.
Um Ihr aktuelles Remote von stackhero in stackhero-staging umzubenennen, führen Sie aus:
git remote rename stackhero stackhero-staging
Erstellen Sie anschließend über das Dashboard einen neuen PHP-Service für die Produktion und fügen Sie ihn hinzu mit:
git remote add stackhero-production ssh://stackhero@<XXXXXX>.stackhero-network.com:222/project.git
Nun können Sie in die gewünschte Umgebung deployen mit:
git push stackhero-production main
oder
git push stackhero-staging main
SSH Private Key Passwort im macOS-Schlüsselbund speichern
Wenn Sie auf macOS arbeiten und bei jedem Push nach dem Passwort Ihres SSH-Keys gefragt werden, müssen Sie das Passwort nicht aus dem Key entfernen. Sie können das Passwort sicher im macOS-Schlüsselbund speichern. Führen Sie dazu einfach aus:
/usr/bin/ssh-add --apple-use-keychain ~/.ssh/id_rsa
Danach wird macOS beim Pushen Ihres Codes nicht mehr nach dem Passwort fragen.
Umgang mit Secrets
Für Produktions- und Staging-Umgebungen ist es wichtig, sensible Daten wie Tokens und Passwörter sicher zu speichern. Anstatt Secrets im Repository zu hinterlegen, empfiehlt es sich, Umgebungsvariablen zu verwenden. Sie können diese Variablen im Stackhero-Dashboard hinzufügen und dann in Ihrem Code darauf zugreifen. Wenn Sie beispielsweise eine Umgebungsvariable namens mySecret anlegen, können Sie sie in PHP so abrufen:
getenv("mySecret")
PHP-Abhängigkeiten verwalten
Wenn Sie Ihren Code pushen, lesen die Stackhero-Deploymentskripte Ihre composer.json und installieren automatisch alle dort angegebenen Abhängigkeiten mit Composer.
Dateien speichern
Wenn Ihre Anwendung Dateien speichern muss (z.B. von Nutzern hochgeladene Fotos), empfiehlt es sich häufig, eine Object Storage-Lösung zu verwenden. Damit können Sie Dateien einfach zwischen mehreren Services teilen und halten Ihre Uploads getrennt vom Anwendungscode. Sie können beispielsweise MinIO als schnelle, zuverlässige und S3-kompatible Lösung nutzen.
Wenn Sie lieber lokalen Speicher verwenden möchten, steht Ihnen der persistente Speicher Ihrer PHP-Instanz zur Verfügung. Dieser ist unter /persistent/storage/ erreichbar.
Um beispielsweise eine hochgeladene Datei zu speichern, können Sie die Funktion move_uploaded_file wie folgt verwenden:
move_uploaded_file($_FILES['image']['tmp_name'], '/persistent/storage/image.jpg');
Weitere Informationen zum Datei-Upload in PHP finden Sie in der offiziellen Dokumentation: https://www.php.net/manual/en/features.file-upload.php.
ACHTUNG: Speichern Sie Ihre Daten immer im Verzeichnis
/persistent/storage/.Wenn Ihre Instanz neu startet oder Sie Code-Änderungen pushen, können alle außerhalb des persistenten Speichers abgelegten Daten verloren gehen.