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 !
Mettre en ligne votre application PHP sur Stackhero est à la fois simple et puissant. En quelques étapes, votre projet sera en ligne et prêt à l'emploi. Ce guide vous accompagne pas à pas pour créer, configurer et déployer votre service PHP de manière conviviale.
Démarrer un service PHP
Pour commencer, vous pouvez créer un service PHP sur Stackhero directement depuis le tableau de bord. L'interface est conçue pour rendre cette opération rapide et intuitive.
Prérequis
Avant de commencer, assurez-vous de disposer des outils suivants :
- Git. Téléchargez-le depuis https://git-scm.com/downloads.
- Windows Terminal (optionnel pour les utilisateurs Windows). Ce terminal offre une expérience améliorée. Il est disponible sur le Microsoft Store.
Configurer votre service
La configuration principale requise est votre clé publique SSH. Vous pouvez l'obtenir en exécutant l'une des commandes suivantes :
cat ~/.ssh/id_rsa.pub
ou
cat ~/.ssh/id_ed25519.pub
Si vous ne possédez pas encore de paire de clés SSH, vous pouvez en générer une avec ssh-keygen sous Linux et macOS ou ssh-keygen.exe sous Windows.
Une fois votre clé publique obtenue, rendez-vous sur le tableau de bord Stackhero, sélectionnez votre service PHP, accédez à la page de configuration et collez votre clé dans le champ prévu à cet effet.
Tip: Si vous souhaitez définir votre clé publique SSH pour tous vos futurs services, vous pouvez le faire globalement. Cliquez simplement sur votre photo de profil en haut à droite du tableau de bord, allez dans "Votre profil" et collez votre clé publique SSH à cet endroit.
Cloner l'exemple
Pour faciliter vos premiers pas, nous avons préparé une application PHP d'exemple. Vous pouvez cloner le dépôt avec :
git clone https://github.com/stackhero-io/phpGettingStarted.git stackhero-php-getting-started
cd stackhero-php-getting-started
Configurer le dépôt distant
Stackhero simplifie le déploiement de votre application via Git. Copiez la commande git remote fournie sur la première page de votre service PHP dans le tableau de bord. Elle ressemble à ceci :
git remote add stackhero ssh://stackhero@<XXXXXX>.stackhero-network.com:222/project.git
Déployer votre code PHP
Vous êtes maintenant prêt à déployer votre application. Poussez votre code avec :
git push stackhero main
Lors du premier push, il vous sera demandé d'accepter l'empreinte de la clé. Tapez simplement "yes" lorsque cela vous est demandé. Après quelques instants, votre application sera en ligne. Vous pouvez vérifier son statut à l'URL indiquée dans votre tableau de bord Stackhero (généralement https://<XXXXXX>.stackhero-network.com).
Pour mettre à jour votre application, modifiez simplement le fichier www/index.php (ou tout autre fichier nécessaire), puis 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 disposez déjà d'une application PHP à déployer, il vous suffit d'ajouter le dépôt distant à votre projet (voir Configurer le dépôt distant). Ensuite, poussez vos modifications avec :
git push stackhero main
Par défaut, Stackhero recherche votre code PHP et vos fichiers statiques dans le dossier www. Par exemple, lorsqu'un visiteur accède à yourdomain.com/myphoto.jpg, le fichier est servi depuis www/myphoto.jpg. Si votre application utilise un autre dossier public, vous pouvez modifier ce paramètre dans la configuration de votre service PHP.
Gérer l'erreur "failed to push some refs to '[...]'"
Si vous rencontrez une erreur de ce type 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.
Ce message indique que le dépôt Git distant contient des modifications absentes de votre copie locale. Si vous souhaitez écraser le dépôt distant avec votre version locale, 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 généralement que la branche main n'existe pas localement. Dans ce cas, vous pouvez pousser la branche master à la place :
git push stackhero master
Gérer l'erreur "Everything up-to-date" lors du push
Si Git affiche Everything up-to-date et que vous ne voyez pas vos modifications déployées, il est probable que vous ayez oublié de valider vos changements. Pour corriger cela, exécutez :
git add -A .
git commit -m "Votre message de commit"
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 utiliser 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 autre branche (par exemple, production), utilisez :
git push stackhero production:main
Déployer un tag
Pour déployer un tag spécifique (comme v1.0), exécutez :
git push stackhero 'v1.0^{}:main'
Le ^{} permet de s'assurer que le commit associé au tag est bien poussé.
Revenir en arrière ou déployer un commit spécifique
Si vous devez déployer un commit précis, commencez par récupérer son hash avec git log. Ensuite, forcez le push de ce commit avec :
git push -f stackhero <HASH>:main
Déployer sur plusieurs environnements
Il est courant de disposer de services distincts pour différents environnements, comme la production et le staging. Vous pouvez gérer cela en renommant et en ajoutant des dépôts distants.
Pour renommer votre dépôt distant actuel de stackhero en stackhero-staging, exécutez :
git remote rename stackhero stackhero-staging
Ensuite, créez un nouveau service PHP pour la production via le tableau de bord, puis ajoutez-le avec :
git remote add stackhero-production ssh://stackhero@<XXXXXX>.stackhero-network.com:222/project.git
Vous pouvez maintenant déployer sur l'environnement de votre choix avec :
git push stackhero-production main
ou
git push stackhero-staging main
Enregistrer le mot de passe de votre clé privée SSH dans le trousseau macOS
Si vous êtes sur macOS et que l'on vous demande le mot de passe de votre clé SSH à chaque push, il n'est pas nécessaire de retirer le mot de passe de votre clé SSH. Vous pouvez stocker ce mot de passe de façon sécurisée dans le trousseau macOS. Exécutez simplement :
/usr/bin/ssh-add --apple-use-keychain ~/.ssh/id_rsa
Après cela, 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, comme les tokens et mots de passe, de manière sécurisée. Plutôt que d'intégrer ces secrets dans votre dépôt, privilégiez l'utilisation de variables d'environnement. Vous pouvez ajouter ces variables dans le tableau de bord Stackhero, puis les récupérer dans votre code. Par exemple, si vous créez une variable d'environnement nommée mySecret, vous pouvez l'obtenir en PHP ainsi :
getenv("mySecret")
Gérer les dépendances PHP
Lors du push de votre code, les scripts de déploiement Stackhero lisent votre fichier composer.json et installent automatiquement les dépendances spécifiées via Composer.
Stocker des fichiers
Si votre application doit stocker des fichiers (comme des photos uploadées par les utilisateurs), il est souvent recommandé d'utiliser une solution d'object storage. Cette approche facilite le partage de fichiers entre plusieurs services et sépare vos fichiers uploadés de votre code. Vous pouvez par exemple découvrir MinIO pour une solution rapide, fiable et compatible S3.
Si vous préférez utiliser le stockage local, profitez du stockage persistant inclus avec votre instance PHP. Ce stockage est accessible via le chemin /persistent/storage/.
Par exemple, pour enregistrer un fichier uploadé, utilisez la fonction move_uploaded_file comme ceci :
move_uploaded_file($_FILES['image']['tmp_name'], '/persistent/storage/image.jpg');
Pour plus d'informations sur l'upload de fichiers en PHP, consultez la documentation officielle : https://www.php.net/manual/en/features.file-upload.php.
ATTENTION : Stockez toujours vos données dans le dossier
/persistent/storage/.Si votre instance redémarre ou si vous poussez des modifications de code, toute donnée stockée en dehors du stockage persistant risque d'être perdue.