PHP: Premiers pas
Comment débuter avec PHP sur Stackhero
👋 Bienvenue sur la documentation de Stackhero !
Stackhero propose une solution PHP cloud prête à l'emploi qui offre de nombreux avantages, notamment :
- Déployez votre application en quelques secondes avec un simple
git push.- Utilisez votre propre nom de domaine et bénéficiez de la configuration automatique des certificats HTTPS pour une sécurité renforcée.
- Profitez de la tranquillité d'esprit avec des sauvegardes automatiques, des mises à jour en un clic, et une tarification simple, transparente et prévisible.
- Obtenez des performances optimales et une sécurité robuste grâce à une VM privée et dédiée.
Gagnez du temps et simplifiez-vous la vie : il ne faut que 5 minutes pour essayer la solution PHP cloud hosting de Stackhero !
Déployer PHP sur Stackhero est simple et puissant. En quelques étapes, vous pouvez avoir votre application en ligne. Ce guide vous accompagnera dans la création, la configuration et le déploiement de votre service PHP de manière conviviale et étape par étape.
Démarrer un service PHP
Commencez par créer un service PHP sur Stackhero via le tableau de bord. L'interface intuitive rend le processus rapide et efficace.
Prérequis
Avant de commencer, assurez-vous d'avoir les outils suivants installés :
- Git. Vous pouvez le télécharger depuis https://git-scm.com/downloads.
- Les utilisateurs de Windows pourraient trouver que Windows Terminal offre une expérience améliorée. Vous pouvez l'obtenir depuis le Microsoft Store.
Configurer votre service
Le seul paramètre à ajuster dans la configuration de votre service est la clé publique SSH. Vous pouvez récupérer votre clé publique en utilisant l'une des commandes suivantes :
cat ~/.ssh/id_rsa.pub
ou
cat ~/.ssh/id_ed25519.pub
Si vous n'avez pas encore de paire de clés, vous pouvez en générer une en utilisant ssh-keygen sur Linux et macOS ou ssh-keygen.exe sur Windows.
Après avoir obtenu votre clé publique, accédez au tableau de bord Stackhero, sélectionnez votre service PHP, allez à sa page de configuration et collez votre clé dans le champ approprié.
Astuce : Vous pouvez définir votre clé publique SSH globalement pour que les futurs services l'incluent automatiquement. Pour ce faire, cliquez sur votre photo de profil en haut à droite du tableau de bord, sélectionnez 'Votre profil', et collez votre clé publique SSH.
Cloner l'exemple
Une application PHP simple a été préparée pour démontrer son fonctionnement sur Stackhero. Pour commencer, clonez le dépôt avec les commandes suivantes :
git clone https://github.com/stackhero-io/phpGettingStarted.git stackhero-php-getting-started
cd stackhero-php-getting-started
Configurer le serveur de dépôt distant
Stackhero simplifie le déploiement de votre application en utilisant Git. Copiez la valeur fournie par la commande git remote depuis la première page de votre service PHP dans le tableau de bord. La commande ressemblera à ceci :
git remote add stackhero ssh://stackhero@XXXXX.stackhero-network.com:222/project.git
Déployer votre code PHP
Il est maintenant temps de déployer votre application. Poussez votre code avec la commande suivante :
git push stackhero main
La première fois que vous poussez, vous serez invité à accepter l'empreinte de la clé. Tapez "yes" lorsque vous y êtes invité. Après une courte attente, votre application devrait être en ligne. Vous pouvez vérifier son statut en visitant l'URL fournie sur le tableau de bord Stackhero (typiquement quelque chose comme https://XXXXX.stackhero-network.com).
Pour mettre à jour votre application, modifiez le fichier www/index.php selon vos besoins et redéployez vos modifications avec :
git add -A .
git commit -m "Update www/index.php"
git push stackhero main
Déployer une application existante
Si vous avez une application PHP existante, vous pouvez facilement la déployer en ajoutant le dépôt distant à votre projet (voir Configurer le serveur de dépôt distant). Ensuite, poussez vos modifications en utilisant :
git push stackhero main
Par défaut, le répertoire public est défini sur "www". C'est là que votre code PHP est exécuté (y compris index.php) et où vos fichiers statiques sont stockés. Par exemple, visiter yourdomain.com/myphoto.jpg récupère le fichier depuis www/myphoto.jpg. Vous pouvez mettre à jour ce répertoire dans la configuration de votre service PHP si nécessaire.
Gérer l'erreur "failed to push some refs to '[...]'"
Si vous rencontrez une erreur comme la suivante lors du déploiement :
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.
Cette erreur indique que le dépôt Git distant contient des modifications qui ne sont pas présentes dans votre dépôt local. Pour écraser ces modifications en toute sécurité, vous pouvez forcer le push avec :
git push -f stackhero main
Gérer l'erreur "src refspec main does not match any"
Si vous voyez cette erreur :
error: src refspec main does not match any
error: failed to push some refs to 'ssh://<XXXXXX>.stackhero-network.com:222/project.git'
Cela signifie que la branche main n'existe pas localement. Dans ce cas, essayez de pousser la branche master à la place :
git push stackhero master
Gérer l'erreur "Everything up-to-date" lors du push
Si Git répond avec Everything up-to-date et que vos modifications ne sont pas déployées, vous avez peut-être oublié de valider vos modifications. Pour résoudre cela, exécutez :
git add -A .
git commit -m "Your commit message"
git push stackhero main
Si vous n'avez pas modifié de code mais souhaitez tout de même déclencher un déploiement, vous pouvez forcer une mise à jour avec un commit vide :
git commit --allow-empty -m "Force update"
git push stackhero main
Déployer une branche autre que main
Si vous souhaitez déployer une branche autre que main (par exemple, une branche nommée "production"), vous pouvez utiliser la commande suivante :
git push stackhero production:main
Déployer un tag
Pour déployer un tag spécifique (par exemple, le tag "v1.0"), utilisez :
git push stackhero 'v1.0^{}:main'
La syntaxe ^{} garantit que le commit associé au tag est correctement poussé.
Revenir en arrière ou déployer un commit spécifique
Si vous devez déployer un commit spécifique, obtenez d'abord son hash en utilisant git log. Ensuite, forcez le push de ce commit en utilisant :
git push -f stackhero <HASH>:main
Déployer sur plusieurs environnements
Souvent, vous pouvez avoir des services séparés pour différents environnements, tels que la production et le staging. Vous pouvez les gérer en renommant et en ajoutant des dépôts distants.
Pour renommer votre dépôt distant actuel de stackhero à stackhero-staging, utilisez :
git remote rename stackhero stackhero-staging
Ensuite, créez un nouveau service PHP pour la production via le tableau de bord et ajoutez-le en utilisant :
git remote add stackhero-production ssh://stackhero@XXXXX.stackhero-network.com:222/project.git
Vous pouvez maintenant déployer dans l'environnement approprié en utilisant soit :
git push stackhero-production main
ou
git push stackhero-staging main
Enregistrer le mot de passe de votre clé SSH privée dans le trousseau de macOS
Sur macOS, vous pourriez être invité à entrer le mot de passe de votre clé à chaque fois que vous poussez votre code. Au lieu de supprimer le mot de passe de votre clé SSH, vous pouvez stocker votre mot de passe de clé dans le trousseau de macOS. Cette approche maintient la sécurité tout en gagnant du temps. Exécutez la commande suivante pour ajouter votre clé au trousseau :
/usr/bin/ssh-add --apple-use-keychain ~/.ssh/id_rsa
Une fois configuré, macOS ne vous demandera plus le mot de passe de votre clé lors du push de votre code.
Gérer les secrets
Pour les environnements de production et de staging, il est essentiel de stocker les données sensibles, telles que les tokens et les mots de passe, de manière sécurisée. Au lieu de coder en dur les secrets dans votre dépôt, envisagez d'utiliser des variables d'environnement. Vous pouvez ajouter ces variables sur le tableau de bord Stackhero et y accéder dans votre code. Par exemple, si vous créez une variable d'environnement nommée "mySecret", vous pouvez récupérer sa valeur en PHP en utilisant :
getenv("mySecret")
Gérer les dépendances PHP
Lorsque vous poussez votre code, les scripts de déploiement lisent votre fichier composer.json et installent automatiquement toutes les dépendances spécifiées via Composer.
Stocker des fichiers
Si votre application a besoin de stocker des fichiers (par exemple, des photos d'utilisateurs), il est conseillé d'utiliser une solution de stockage d'objets. Cette approche facilite non seulement le partage de fichiers entre plusieurs services, mais sépare également vos fichiers téléchargés de votre code. Nous vous recommandons d'explorer MinIO pour une solution rapide, fiable et compatible S3.
Alternativement, si vous préférez le stockage de fichiers local, vous pouvez utiliser le stockage persistant fourni avec votre instance PHP. Ce stockage est situé dans le répertoire /persistent/storage/.
Par exemple, pour stocker un fichier téléchargé, vous pourriez utiliser la fonction move_uploaded_file comme suit :
move_uploaded_file($_FILES['image']['tmp_name'], '/persistent/storage/image.jpg');
Pour plus de détails sur les téléchargements de fichiers, consultez la documentation officielle PHP : https://www.php.net/manual/en/features.file-upload.php.
ATTENTION : Ne stockez jamais de données en dehors du dossier
/persistent/storage/!Si votre instance redémarre ou si vous poussez des modifications de code, toutes les données stockées en dehors du stockage persistant peuvent être perdues !