PHP: Aan de slag
Hoe te beginnen 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!
PHP implementeren op Stackhero is eenvoudig en krachtig. In slechts een paar stappen kunt u uw applicatie online hebben draaien. Deze gids begeleidt u op een vriendelijke, stapsgewijze manier bij het maken, configureren en implementeren van uw PHP-service.
Start een PHP-service
Begin met het maken van een PHP-service op Stackhero via het dashboard. De intuïtieve interface maakt het proces snel en efficiënt.
Vereisten
Voordat u begint, zorg ervoor dat u de volgende tools geïnstalleerd heeft:
- Git. U kunt het downloaden van https://git-scm.com/downloads.
- Windows-gebruikers kunnen merken dat Windows Terminal een verbeterde ervaring biedt. U kunt het verkrijgen via de Microsoft Store.
Configureer uw service
De enige instelling die u moet aanpassen in uw serviceconfiguratie is de SSH-publieke sleutel. U kunt uw publieke sleutel ophalen met een van de volgende commando's:
cat ~/.ssh/id_rsa.pub
of
cat ~/.ssh/id_ed25519.pub
Als u nog geen sleutelpaar heeft, kunt u er een genereren met ssh-keygen op Linux en macOS of ssh-keygen.exe op Windows.
Nadat u uw publieke sleutel heeft verkregen, navigeert u naar het Stackhero-dashboard, selecteert u uw PHP-service, gaat u naar de configuratiepagina en plakt u uw sleutel in het juiste veld.
Tip: U kunt uw SSH-publieke sleutel globaal definiëren zodat toekomstige services deze automatisch opnemen. Om dit te doen, klikt u op uw profielfoto in de rechterbovenhoek van het dashboard, selecteert u 'Uw profiel' en plakt u uw SSH-publieke sleutel.
Clone het voorbeeld
Een eenvoudige PHP-applicatie is voorbereid om te demonstreren hoe het werkt op Stackhero. Om te beginnen, kloon de repository met de volgende commando's:
git clone https://github.com/stackhero-io/phpGettingStarted.git stackhero-php-getting-started
cd stackhero-php-getting-started
Configureer de externe repositoryserver
Stackhero vereenvoudigt het implementeren van uw applicatie met behulp van Git. Kopieer de waarde die wordt verstrekt door het git remote commando van de eerste pagina van uw PHP-service in het dashboard. Het commando zal er ongeveer zo uitzien:
git remote add stackhero ssh://stackhero@XXXXX.stackhero-network.com:222/project.git
Implementeer uw PHP-code
Het is nu tijd om uw applicatie te implementeren. Push uw code met het volgende commando:
git push stackhero main
De eerste keer dat u pusht, wordt u gevraagd om de sleutelvingerafdruk te accepteren. Typ "yes" wanneer daarom wordt gevraagd. Na een korte wachttijd zou uw applicatie online moeten zijn. U kunt de status controleren door de URL te bezoeken die op het Stackhero-dashboard wordt verstrekt (meestal iets als https://XXXXX.stackhero-network.com).
Om uw applicatie bij te werken, wijzigt u het bestand www/index.php zoals nodig en implementeert u uw wijzigingen opnieuw met:
git add -A .
git commit -m "Update www/index.php"
git push stackhero main
Implementeer een bestaande applicatie
Als u een bestaande PHP-applicatie heeft, kunt u deze eenvoudig implementeren door de externe repository aan uw project toe te voegen (zie Configureer de externe repositoryserver). Vervolgens pusht u uw wijzigingen met:
git push stackhero main
Standaard is de openbare directory ingesteld op "www". Hier wordt uw PHP-code uitgevoerd (inclusief index.php) en worden uw statische bestanden opgeslagen. Bijvoorbeeld, het bezoeken van yourdomain.com/myphoto.jpg haalt het bestand op van www/myphoto.jpg. U kunt deze directory bijwerken in uw PHP-serviceconfiguratie indien nodig.
Fout "failed to push some refs to '[...]'" afhandelen
Als u een fout tegenkomt zoals de volgende bij het implementeren:
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 fout geeft aan dat de externe Git-repository wijzigingen bevat die niet in uw lokale repository aanwezig zijn. Om deze wijzigingen veilig te overschrijven, kunt u forceren met:
git push -f stackhero main
Fout "src refspec main does not match any" afhandelen
Als u deze fout ziet:
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 dat de branch main lokaal niet bestaat. Probeer in dit geval de branch master te pushen:
git push stackhero master
Fout "Everything up-to-date" bij het pushen afhandelen
Als Git reageert met Everything up-to-date en uw wijzigingen niet zijn geïmplementeerd, bent u mogelijk vergeten uw wijzigingen te committen. Om dit op te lossen, voert u uit:
git add -A .
git commit -m "Your commit message"
git push stackhero main
Als u geen code heeft gewijzigd maar toch een implementatie wilt forceren, kunt u een update forceren met een lege commit:
git commit --allow-empty -m "Force update"
git push stackhero main
Een andere branch dan main implementeren
Als u een andere branch dan main wilt implementeren (bijvoorbeeld een branch genaamd "production"), kunt u het volgende commando gebruiken:
git push stackhero production:main
Een tag implementeren
Om een specifieke tag te implementeren (bijvoorbeeld tag "v1.0"), gebruikt u:
git push stackhero 'v1.0^{}:main'
De ^{} syntax zorgt ervoor dat de commit die aan de tag is gekoppeld correct wordt gepusht.
Terugrollen of een specifieke commit implementeren
Als u een specifieke commit moet implementeren, verkrijgt u eerst de hash met git log. Vervolgens forceert u de push van die commit met:
git push -f stackhero <HASH>:main
Implementeren naar meerdere omgevingen
Vaak heeft u mogelijk aparte services voor verschillende omgevingen, zoals productie en staging. U kunt deze beheren door externe repositories te hernoemen en toe te voegen.
Om uw huidige remote van stackhero naar stackhero-staging te hernoemen, gebruikt u:
git remote rename stackhero stackhero-staging
Maak vervolgens een nieuwe PHP-service voor productie via het dashboard en voeg deze toe met:
git remote add stackhero-production ssh://stackhero@XXXXX.stackhero-network.com:222/project.git
U kunt nu implementeren naar de juiste omgeving met ofwel:
git push stackhero-production main
of
git push stackhero-staging main
Sla uw SSH privésleutelwachtwoord op in de macOS-sleutelhanger
Op macOS kunt u worden gevraagd om uw sleutelhangerwachtwoord elke keer dat u uw code pusht. In plaats van het wachtwoord van uw SSH-sleutel te verwijderen, kunt u uw sleutelhangerwachtwoord opslaan in de macOS-sleutelhanger. Deze aanpak behoudt de veiligheid terwijl u tijd bespaart. Voer het volgende commando uit om uw sleutel aan de sleutelhanger toe te voegen:
/usr/bin/ssh-add --apple-use-keychain ~/.ssh/id_rsa
Zodra dit is ingesteld, zal macOS niet langer om uw sleutelhangerwachtwoord vragen wanneer u uw code pusht.
Geheimen beheren
Voor productie- en stagingomgevingen is het essentieel om gevoelige gegevens, zoals tokens en wachtwoorden, veilig op te slaan. In plaats van geheimen hard te coderen in uw repository, overweeg het gebruik van omgevingsvariabelen. U kunt deze variabelen toevoegen op het Stackhero-dashboard en er in uw code toegang toe krijgen. Bijvoorbeeld, als u een omgevingsvariabele genaamd "mySecret" maakt, kunt u de waarde in PHP ophalen met:
getenv("mySecret")
PHP-afhankelijkheden beheren
Wanneer u uw code pusht, lezen de implementatiescripts uw composer.json bestand en installeren automatisch alle gespecificeerde afhankelijkheden via Composer.
Bestanden opslaan
Als uw applicatie bestanden moet opslaan (bijvoorbeeld gebruikersfoto's), is het raadzaam om een objectopslagoplossing te gebruiken. Deze aanpak vergemakkelijkt niet alleen het delen van bestanden tussen meerdere services, maar scheidt ook uw geüploade bestanden van uw code. We raden aan om MinIO te verkennen voor een snelle, betrouwbare en S3-compatibele oplossing.
Als alternatief, als u de voorkeur geeft aan lokale bestandsopslag, kunt u de persistente opslag gebruiken die bij uw PHP-instantie wordt geleverd. Deze opslag bevindt zich in de directory /persistent/storage/.
Bijvoorbeeld, om een geüpload bestand op te slaan, kunt u de functie move_uploaded_file als volgt gebruiken:
move_uploaded_file($_FILES['image']['tmp_name'], '/persistent/storage/image.jpg');
Voor meer details over bestandsuploads, raadpleeg de officiële PHP-documentatie: https://www.php.net/manual/en/features.file-upload.php.
LET OP: Sla nooit gegevens op buiten de map
/persistent/storage/!Als uw instantie opnieuw opstart of als u codewijzigingen pusht, kunnen alle gegevens die buiten de persistente opslag zijn opgeslagen verloren gaan!