PHP: Aan de slag
Hoe u aan de slag gaat met PHP op Stackhero
👋 Welkom bij de Stackhero-documentatie!
Stackhero biedt een PHP cloud platform dat is ontworpen voor snelle en betrouwbare deployments:
- Deploy uw PHP-applicatie naar productie in enkele seconden met een eenvoudige
git push.- Gebruik uw eigen domein, met automatisch geconfigureerde HTTPS-certificaten. Er zijn geen handmatige stappen nodig.
- Vertrouw op automatische back-ups, one-click updates en duidelijke, voorspelbare prijzen. Stackhero regelt deze zaken, zodat u zich kunt richten op uw code.
- Profiteer van uitstekende performance en security op een privé, dedicated infrastructuur die speciaal voor uw applicaties is gebouwd.
Maak uw workflow efficiënter en bespaar tijd. Beginnen met Stackhero's PHP cloud hosting duurt slechts een paar minuten.
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.
Start een PHP-service
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.
Vereisten
Zorg ervoor dat u de volgende tools heeft geïnstalleerd voordat u begint:
- Git. U kunt het downloaden via https://git-scm.com/downloads.
- Windows Terminal (optioneel voor Windows-gebruikers). Deze terminal biedt een verbeterde ervaring en is beschikbaar via de Microsoft Store.
Configureer uw service
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.
Clone het voorbeeld
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
Configureer de remote repository server
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
Deploy uw PHP-code
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
Een bestaande applicatie deployen
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.
Foutmelding "failed to push some refs to '[...]'" oplossen
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
Foutmelding "src refspec main does not match any" oplossen
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
Foutmelding "Everything up-to-date" bij pushen oplossen
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
Een andere branch dan main deployen
Wilt u een andere branch deployen (bijvoorbeeld production)? Gebruik dan:
git push stackhero production:main
Een tag deployen
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.
Terugdraaien of een specifieke commit deployen
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
Deployen naar meerdere omgevingen
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
Sla het wachtwoord van uw SSH-private key op in de macOS-sleutelhanger
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.
Omgaan met secrets
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")
PHP-afhankelijkheden beheren
Wanneer u uw code pusht, lezen de deployment scripts van Stackhero uw composer.json-bestand en installeren automatisch alle opgegeven afhankelijkheden via Composer.
Bestanden opslaan
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.