PHP: Aan de slag

Hoe u aan de slag gaat met PHP op Stackhero

👋 Welkom bij de Stackhero-documentatie!

Stackhero biedt een kant-en-klare PHP cloud oplossing die tal van voordelen biedt, waaronder:

  • Implementeer uw applicatie in seconden met een eenvoudige git push.
  • Gebruik uw eigen domeinnaam en profiteer van de automatische configuratie van HTTPS-certificaten voor verbeterde beveiliging.
  • Geniet van gemoedsrust met automatische back-ups, updates met één klik, en eenvoudige, transparante en voorspelbare prijzen.
  • Krijg optimale prestaties en robuuste beveiliging dankzij een privé en dedicated VM.

Bespaar tijd en vereenvoudig uw leven: het kost slechts 5 minuten om de PHP cloud hosting oplossing van Stackhero te proberen!

Uw PHP-applicatie online krijgen op Stackhero is zowel eenvoudig als krachtig. In slechts een paar stappen staat uw project online en is het klaar voor gebruik. Deze gids begeleidt u stap voor stap bij het aanmaken, configureren en uitrollen van uw PHP-service op een toegankelijke manier.

Om te beginnen kunt u direct vanuit het dashboard een PHP-service aanmaken op Stackhero. De interface is ontworpen om dit proces snel en eenvoudig te maken.

Zorg ervoor dat u de volgende tools heeft geïnstalleerd voordat u begint:

  1. Git. U kunt het downloaden via https://git-scm.com/downloads.
  2. Windows Terminal (optioneel voor Windows-gebruikers). Deze terminal biedt een verbeterde ervaring en is beschikbaar via de Microsoft Store.

De belangrijkste configuratie die u nodig heeft, is uw SSH-public key. U kunt uw public key ophalen door een van de volgende commando's uit te voeren:

cat ~/.ssh/id_rsa.pub

of

cat ~/.ssh/id_ed25519.pub

Als u nog geen SSH-sleutelpaar heeft, kunt u er een genereren met ssh-keygen op Linux en macOS of ssh-keygen.exe op Windows.

Zodra u uw public key heeft, gaat u naar het Stackhero-dashboard, selecteert u uw PHP-service, navigeert u naar de configuratiepagina en plakt u uw key in het daarvoor bestemde veld.

Tip: Wilt u uw SSH-public key instellen voor alle toekomstige services? Dit kan ook globaal. Klik rechtsboven in het dashboard op uw profielfoto, ga naar "Uw profiel" en plak daar uw SSH-public key.

Om u op weg te helpen, hebben we een voorbeeld-PHP-applicatie voor u klaargezet. U kunt de repository klonen met:

git clone https://github.com/stackhero-io/phpGettingStarted.git stackhero-php-getting-started
cd stackhero-php-getting-started

Stackhero maakt het eenvoudig om uw applicatie te deployen via Git. Kopieer het git remote-commando dat op de eerste pagina van uw PHP-service in het dashboard wordt weergegeven. Dit ziet er ongeveer zo uit:

git remote add stackhero ssh://stackhero@<XXXXXX>.stackhero-network.com:222/project.git

U bent nu klaar om uw applicatie te deployen. U kunt uw code pushen met:

git push stackhero main

Bij uw eerste push wordt u gevraagd om de key fingerprint te accepteren. Typ simpelweg "yes" wanneer hierom wordt gevraagd. Na een korte wachttijd zou uw applicatie online moeten zijn. U kunt de status controleren via de URL die in uw Stackhero-dashboard wordt weergegeven (meestal https://<XXXXXX>.stackhero-network.com).

Om uw applicatie bij te werken, past u bijvoorbeeld het bestand www/index.php aan (of een ander gewenst bestand) en deployt u uw wijzigingen opnieuw met:

git add -A .
git commit -m "Update www/index.php"
git push stackhero main

Heeft u al een PHP-applicatie die u wilt deployen? Voeg dan simpelweg de remote repository toe aan uw project (zie Configureer de remote repository server). Vervolgens kunt u uw wijzigingen pushen met:

git push stackhero main

Standaard zoekt Stackhero naar uw PHP-code en statische bestanden in de www-map. Bijvoorbeeld, wanneer iemand yourdomain.com/myphoto.jpg bezoekt, wordt het bestand geserveerd vanuit www/myphoto.jpg. Als uw applicatie een andere publieke map gebruikt, kunt u deze instelling aanpassen in de configuratie van uw PHP-service.

Krijgt u tijdens het deployen een foutmelding zoals deze:

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.

Deze melding betekent dat de remote Git-repository wijzigingen bevat die niet in uw lokale kopie staan. Als u zeker weet dat u de remote wilt overschrijven met uw lokale versie, kunt u forceren met:

git push -f stackhero main

Ziet u deze foutmelding:

error: src refspec main does not match any
error: failed to push some refs to 'ssh://<XXXXXX>.stackhero-network.com:222/project.git'

Dit betekent meestal dat de main-branch lokaal niet bestaat. In dat geval kunt u de master-branch pushen:

git push stackhero master

Als Git aangeeft Everything up-to-date en u ziet uw wijzigingen niet online, bent u waarschijnlijk vergeten uw wijzigingen te committen. U kunt dit oplossen door:

git add -A .
git commit -m "Uw commitbericht"
git push stackhero main

Heeft u geen code gewijzigd maar wilt u toch een deployment forceren? Gebruik dan een lege commit:

git commit --allow-empty -m "Force update"
git push stackhero main

Wilt u een andere branch deployen (bijvoorbeeld production)? Gebruik dan:

git push stackhero production:main

Om een specifieke tag te deployen (zoals v1.0), voert u uit:

git push stackhero 'v1.0^{}:main'

De ^{} zorgt ervoor dat de commit die bij de tag hoort correct wordt gepusht.

Moet u een specifieke commit deployen? Zoek dan eerst de hash op met git log. Vervolgens forceert u de push van die commit met:

git push -f stackhero <HASH>:main

Het is gebruikelijk om aparte services te hebben voor verschillende omgevingen, zoals productie en staging. U kunt dit beheren door remote repositories te hernoemen en toe te voegen.

Om uw huidige remote van stackhero naar stackhero-staging te hernoemen, voert u uit:

git remote rename stackhero stackhero-staging

Maak vervolgens via het dashboard een nieuwe PHP-service aan voor productie en voeg deze toe met:

git remote add stackhero-production ssh://stackhero@<XXXXXX>.stackhero-network.com:222/project.git

Nu kunt u naar de gewenste omgeving deployen met:

git push stackhero-production main

of

git push stackhero-staging main

Als u op macOS werkt en telkens bij het pushen om het wachtwoord van uw SSH-sleutel wordt gevraagd, hoeft u het wachtwoord niet uit uw SSH-key te verwijderen. U kunt het wachtwoord veilig opslaan in de macOS-sleutelhanger. Voer hiervoor uit:

/usr/bin/ssh-add --apple-use-keychain ~/.ssh/id_rsa

Hierna zal macOS niet meer om het wachtwoord van uw key vragen bij het pushen van uw code.

Voor productie- en stagingomgevingen is het belangrijk om gevoelige gegevens, zoals tokens en wachtwoorden, veilig op te slaan. In plaats van secrets hardcoded in uw repository te plaatsen, kunt u beter gebruikmaken van omgevingsvariabelen. U kunt deze variabelen toevoegen via het Stackhero-dashboard en ze vervolgens in uw code benaderen. Als u bijvoorbeeld een omgevingsvariabele mySecret aanmaakt, haalt u deze in PHP op als volgt:

getenv("mySecret")

Wanneer u uw code pusht, lezen de deployment scripts van Stackhero uw composer.json-bestand en installeren automatisch alle opgegeven afhankelijkheden via Composer.

Als uw applicatie bestanden moet opslaan (zoals door gebruikers geüploade foto's), is het vaak verstandig om een object storage-oplossing te gebruiken. Dit maakt het eenvoudiger om bestanden te delen tussen meerdere services en houdt uw uploads gescheiden van uw code. U kunt bijvoorbeeld MinIO overwegen voor een snelle, betrouwbare en S3-compatibele oplossing.

Wilt u liever lokale opslag gebruiken, maak dan gebruik van de persistente opslag die bij uw PHP-instantie is inbegrepen. Deze opslag is beschikbaar op /persistent/storage/.

Om bijvoorbeeld een geüpload bestand op te slaan, gebruikt u de functie move_uploaded_file als volgt:

move_uploaded_file($_FILES['image']['tmp_name'], '/persistent/storage/image.jpg');

Meer informatie over het uploaden van bestanden in PHP vindt u in de officiële documentatie: https://www.php.net/manual/en/features.file-upload.php.

LET OP: Sla uw data altijd op in de map /persistent/storage/.

Als uw instantie opnieuw opstart of u codewijzigingen pusht, kan data buiten de persistente opslag verloren gaan.