PHP: Erste Schritte
Wie man mit PHP auf Stackhero beginnt
👋 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!
Das Bereitstellen von PHP auf Stackhero ist einfach und leistungsstark. In nur wenigen Schritten können Sie Ihre Anwendung online haben. Dieser Leitfaden führt Sie Schritt für Schritt durch die Erstellung, Konfiguration und Bereitstellung Ihres PHP-Dienstes.
Starten Sie einen PHP-Dienst
Beginnen Sie mit der Erstellung eines PHP-Dienstes auf Stackhero über das Dashboard. Die intuitive Benutzeroberfläche macht den Prozess schnell und effizient.
Voraussetzungen
Bevor Sie beginnen, stellen Sie bitte sicher, dass Sie die folgenden Tools installiert haben:
- Git. Sie können es von https://git-scm.com/downloads herunterladen.
- Windows-Benutzer könnten feststellen, dass Windows Terminal eine verbesserte Erfahrung bietet. Sie können es aus dem Microsoft Store beziehen.
Konfigurieren Sie Ihren Dienst
Die einzige Einstellung, die Sie in Ihrer Dienstkonfiguration anpassen müssen, ist der 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
Wenn Sie noch kein Schlüsselpaar haben, können Sie eines mit ssh-keygen auf Linux und macOS oder ssh-keygen.exe auf Windows generieren.
Nachdem Sie Ihren Public-Key erhalten haben, navigieren Sie zum Stackhero-Dashboard, wählen Sie Ihren PHP-Dienst aus, gehen Sie zur Konfigurationsseite und fügen Sie Ihren Schlüssel in das entsprechende Feld ein.
Tipp: Sie können Ihren SSH-Public-Key global definieren, sodass zukünftige Dienste ihn automatisch einschließen. Klicken Sie dazu auf Ihr Profilbild in der oberen rechten Ecke des Dashboards, wählen Sie 'Ihr Profil' und fügen Sie Ihren SSH-Public-Key ein.
Klonen Sie das Beispiel
Eine einfache PHP-Anwendung wurde vorbereitet, um zu demonstrieren, wie sie auf Stackhero funktioniert. Um zu beginnen, klonen Sie das Repository mit den folgenden Befehlen:
git clone https://github.com/stackhero-io/phpGettingStarted.git stackhero-php-getting-started
cd stackhero-php-getting-started
Konfigurieren Sie den Remote-Repository-Server
Stackhero vereinfacht die Bereitstellung Ihrer Anwendung mit Git. Kopieren Sie den Wert, der von dem git remote-Befehl auf der ersten Seite Ihres PHP-Dienstes im Dashboard bereitgestellt wird. Der Befehl sieht ähnlich aus wie:
git remote add stackhero ssh://stackhero@XXXXX.stackhero-network.com:222/project.git
Bereitstellen Ihres PHP-Codes
Es ist jetzt an der Zeit, Ihre Anwendung bereitzustellen. Pushen Sie Ihren Code mit dem folgenden Befehl:
git push stackhero main
Beim ersten Push werden Sie aufgefordert, den Schlüssel-Fingerprint zu akzeptieren. Geben Sie "yes" ein, wenn Sie dazu aufgefordert werden. Nach kurzer Wartezeit sollte Ihre Anwendung online sein. Sie können den Status überprüfen, indem Sie die im Stackhero-Dashboard angegebene URL besuchen (typischerweise etwas wie https://XXXXX.stackhero-network.com).
Um Ihre Anwendung zu aktualisieren, ändern Sie die Datei www/index.php nach Bedarf und stellen Sie Ihre Änderungen erneut bereit mit:
git add -A .
git commit -m "Update www/index.php"
git push stackhero main
Bereitstellen einer bestehenden Anwendung
Wenn Sie eine bestehende PHP-Anwendung haben, können Sie diese einfach bereitstellen, indem Sie das Remote-Repository zu Ihrem Projekt hinzufügen (siehe Konfigurieren Sie den Remote-Repository-Server). Dann pushen Sie Ihre Änderungen mit:
git push stackhero main
Standardmäßig ist das öffentliche Verzeichnis auf "www" gesetzt. Hier wird Ihr PHP-Code ausgeführt (einschließlich index.php) und Ihre statischen Dateien werden gespeichert. Zum Beispiel ruft der Besuch von yourdomain.com/myphoto.jpg die Datei von www/myphoto.jpg ab. Sie können dieses Verzeichnis in Ihrer PHP-Dienstkonfiguration bei Bedarf aktualisieren.
Fehler "failed to push some refs to '[...]'" behandeln
Wenn Sie beim Bereitstellen auf einen Fehler wie den folgenden 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.
Dieser Fehler zeigt an, dass das Remote-Git-Repository Änderungen enthält, die in Ihrem lokalen Repository nicht vorhanden sind. Um diese Änderungen sicher zu überschreiben, können Sie den Push erzwingen mit:
git push -f stackhero main
Fehler "src refspec main does not match any" behandeln
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 dies, dass der Branch main lokal nicht existiert. In diesem Fall versuchen Sie, stattdessen den Branch master zu pushen:
git push stackhero master
Fehler "Everything up-to-date" beim Pushen behandeln
Wenn Git mit Everything up-to-date antwortet und Ihre Änderungen nicht bereitgestellt werden, haben Sie möglicherweise vergessen, Ihre Änderungen zu committen. Um dies zu beheben, führen Sie aus:
git add -A .
git commit -m "Your commit message"
git push stackhero main
Wenn Sie keinen Code geändert haben, aber dennoch eine Bereitstellung auslösen möchten, können Sie ein Update mit einem leeren Commit erzwingen:
git commit --allow-empty -m "Force update"
git push stackhero main
Einen anderen Branch als main bereitstellen
Wenn Sie einen anderen Branch als main bereitstellen möchten (zum Beispiel einen Branch namens "production"), können Sie den folgenden Befehl verwenden:
git push stackhero production:main
Einen Tag bereitstellen
Um einen bestimmten Tag bereitzustellen (zum Beispiel den Tag "v1.0"), verwenden Sie:
git push stackhero 'v1.0^{}:main'
Die ^{}-Syntax stellt sicher, dass der mit dem Tag verbundene Commit korrekt gepusht wird.
Zurücksetzen oder einen bestimmten Commit bereitstellen
Wenn Sie einen bestimmten Commit bereitstellen müssen, erhalten Sie zuerst dessen Hash mit git log. Dann erzwingen Sie den Push dieses Commits mit:
git push -f stackhero <HASH>:main
Bereitstellen in mehreren Umgebungen
Oft haben Sie möglicherweise separate Dienste für verschiedene Umgebungen, wie Produktion und Staging. Sie können diese verwalten, indem Sie Remote-Repositories umbenennen und hinzufügen.
Um Ihr aktuelles Remote von stackhero in stackhero-staging umzubenennen, verwenden Sie:
git remote rename stackhero stackhero-staging
Erstellen Sie dann einen neuen PHP-Dienst für die Produktion über das Dashboard und fügen Sie ihn hinzu mit:
git remote add stackhero-production ssh://stackhero@XXXXX.stackhero-network.com:222/project.git
Sie können jetzt in die entsprechende Umgebung bereitstellen, indem Sie entweder:
git push stackhero-production main
oder
git push stackhero-staging main
Speichern Sie Ihr SSH-Passwort im macOS-Schlüsselbund
Auf macOS werden Sie möglicherweise jedes Mal nach Ihrem Schlüsselpasswort gefragt, wenn Sie Ihren Code pushen. Anstatt das Passwort von Ihrem SSH-Schlüssel zu entfernen, können Sie Ihr Schlüsselpasswort im macOS-Schlüsselbund speichern. Dieser Ansatz bewahrt die Sicherheit und spart Zeit. Führen Sie den folgenden Befehl aus, um Ihren Schlüssel zum Schlüsselbund hinzuzufügen:
/usr/bin/ssh-add --apple-use-keychain ~/.ssh/id_rsa
Sobald dies eingerichtet ist, wird macOS nicht mehr nach Ihrem Schlüsselpasswort fragen, wenn Sie Ihren Code pushen.
Geheimnisse verwalten
Für Produktions- und Staging-Umgebungen ist es wichtig, sensible Daten wie Tokens und Passwörter sicher zu speichern. Anstatt Geheimnisse in Ihr Repository zu hardcoden, sollten Sie Umgebungsvariablen verwenden. Sie können diese Variablen im Stackhero-Dashboard hinzufügen und in Ihrem Code darauf zugreifen. Wenn Sie beispielsweise eine Umgebungsvariable namens "mySecret" erstellen, können Sie deren Wert in PHP mit folgendem Befehl abrufen:
getenv("mySecret")
PHP-Abhängigkeiten verwalten
Wenn Sie Ihren Code pushen, lesen die Bereitstellungsskripte Ihre composer.json-Datei und installieren automatisch alle angegebenen Abhängigkeiten über Composer.
Dateien speichern
Wenn Ihre Anwendung Dateien speichern muss (zum Beispiel Benutzerfotos), ist es ratsam, eine Objekt-Speicherlösung zu verwenden. Dieser Ansatz erleichtert nicht nur das Teilen von Dateien zwischen mehreren Diensten, sondern trennt auch Ihre hochgeladenen Dateien von Ihrem Code. Wir empfehlen, MinIO für eine schnelle, zuverlässige und S3-kompatible Lösung zu erkunden.
Alternativ, wenn Sie lokalen Dateispeicher bevorzugen, können Sie den persistenten Speicher verwenden, der mit Ihrer PHP-Instanz bereitgestellt wird. Dieser Speicher befindet sich im Verzeichnis /persistent/storage/.
Um beispielsweise eine hochgeladene Datei zu speichern, könnten Sie die Funktion move_uploaded_file wie folgt verwenden:
move_uploaded_file($_FILES['image']['tmp_name'], '/persistent/storage/image.jpg');
Für weitere Details zu Dateiuploads konsultieren Sie die offizielle PHP-Dokumentation: https://www.php.net/manual/en/features.file-upload.php.
VORSICHT: Speichern Sie niemals Daten außerhalb des Ordners
/persistent/storage/!Wenn Ihre Instanz neu startet oder Sie Codeänderungen pushen, können alle Daten, die außerhalb des persistenten Speichers gespeichert sind, verloren gehen!