Ce tutoriel décrit comment utiliser Composer, le très populaire gestionnaire de dépendances de PHP, sur une instance Simple Hosting PHP.
Ce tutoriel couvre l'ensemble d'un projet avec Composer, depuis la création de l'instance à l'ouverture de la page web dans votre navigateur, en passant par l'écriture du code, l'installation et l'utilisation de Composer.
Vous travaillerez à partir de l'interface en ligne de commande de votre ordinateur, d'où vous exécuterez l'ensemble des opérations. Certaines commandes utilisent Gandi CLI, notre outil maison qui facilite l'utilisation des produits Gandi à partir d'un Terminal. Tous les exemples proposent aussi des commandes alternatives, qui ne demandent pas l'utilisation de Gandi CLI.
Un gestionnaire de dépendances est un outil facilitant l'inclusion de code externe (dépendances) à un projet. C'est particulièrement pratique lorsque ces dépendances incluent elles-mêmes des dépendances.
Afin d'éviter la copie de plusieurs fichiers à la main (avec possibilité de doublon), un gestionnaire de dépendances tel que Composer fourni un outil simple permettant de lister les dépendances dans un fichier, pour lancer une commande qui les télécharge et installe pour vous.
En complément, les gestionnaires de dépendances populaires attirent un nombre croissant de développeurs qui choisissent de publier des librairies compatibles, facilitant leur l'adoption par les utilisateurs. En résulte, pour les développeurs modernes, une grande quantité de librairies de bonne qualité, prêtes à l'usage.
Pour ce tutoriel, vous aurez besoin de :
Commencez par créer le dossier du projet sur votre ordinateur.
~ $ mkdir gstatus ~ $ cd gstatus ~/gstatus $ git init . ~/gstatus $ mkdir htdocs
Composer fourni un script d'installation automatisé que vous pouvez exécuter directement à partir de la ligne de commande.
Copiez-Collez la commande suivante dans votre Terminal pour créer le fichier “composer.phar” à la racine du site/vhost.
~/gstatus $ php -r "readfile('https://getcomposer.org/installer');" | php
Vous pouvez désormais exécuter ce fichier avec 'php' pour obtenir les instructions d'utilisation et vérifier l'installation.
~/gstatus $ php composer.phar
L'application utilisée dans cet exemple tient en un seul fichier de 30 lignes, contenant du code PHP et HTML. Lorsque la page est chargée, le script PHP effectue une requête HTTP vers l'API de Statut de Gandi et récupère l'état actuel des services. La page affiche alors un text détaillant le statut, ainsi qu'un lien pour obtenir plus d'informations.
Au lieu d'écrire la requête HTTP à la main, vous utiliserez Guzzle, une librairie facilitant l'écriture et la manipulation de requêtes. Guzzle est disponible à travers Composer, donc vous pouvez déclare cette dépendance dans un fichier “composer.json”, que vous allez créer à la racine du site/vhost.
NB: Avec PHP 5.4, vous aurez besoin de la version 5 de Guzzle plutôt que de la version 6.
~/gstatus $ vim composer.json
{ "require": { "guzzlehttp/guzzle": "~6" } }
Maintenant, lancez la commande Composer pour l'installation :
~/gstatus $ php composer.phar install
Les dépendances de l'application, en l'occurrence Guzzle et ses propres dépendances, sont désormais installées dans le dossier “vendor” de votre projet.
Vous noterez également que Composer à créé un fichier “composer.lock” dans ce dossier. Ce fichier contient les versions exactes des librairies qui ont été téléchargées par Composer, et qui seront les mêmes qui seront utilisées par l'instance Simple Hosting.
Votre code consistera en un simple fichier, index.php
. Il contient une fonction “getGandiStatus()” qui récupère le statut actuel des services Gandi à partir de l'API Satut, appelée par une fonction “currentStatus()” qui retourne les résultats en une phrase lisible par un humain.
Ensuite, un peu HTML produira une page web minimaliste pour, avec un peu PHP imbriqué, afficher la phrase résultant de la fonction “currentStatus()”.
Pour inclure la librairie Guzzle, vous utiliserez l'instruction 'require' standard de Composer, qui sert à inclure toutes les dépendances gérées par l'outil.
~/gstatus $ cd htdocs/
~/gstatus/htdocs $ vim index.php
<?php require '../vendor/autoload.php'; function getGandiStatus() { $client = new GuzzleHttp\Client(); $res = $client->get('https://status.gandi.net/api/status'); $gandi_status = json_decode($res->getBody(), true); return $gandi_status["status"]; }; function currentStatus() { switch(getGandiStatus()) { case "SUNNY": return "All Gandi services are operational"; default: return "Gandi is experiencing a bit of trouble"; }; }; ?> <html> <head> <title>Gandi Status Check</title> </head> <body> <h1><?php echo currentStatus(); ?></h1> <p><a href="http://status.gandi.net">More info</a></p> </body> </html>
Votre application est désormais presque complète et vous pouvez sauvegardez vos changements sur Git.
Créez un fichier ”.gitignore” à la racine de votre projet pour obliger Git à ignorer l'exécutable de Composer (composer.phar), ainsi que le dossier “vendor” où Composer installe les dépendances.
~/gstatus/htdocs $ cd .. ~/gstatus $ vim .gitignore
composer.phar vendor
Vous pouvez désormais ajouter les autres fichiers (“stage”) à l'arbre Git et enregistrer vos changements avec “commit”.
~/gstatus $ git add . ~/gstatus $ git commit -m 'First commit'
Vous pouvez facilement créer une instance Simple Hosting à partir du site web de Gandi et l'administrer à partir de sa page de gestion.
Nous n'utilisons pas de base de données dans ce projet d'exemple, mais vous pouvez sélectionner une instance de type PHP avec le serveur de base de données de votre choix.
Pour créer votre instance avec Gandi CLI, exécutez la commande suivante dans votre terminal :
~/gstatus $ gandi paas create gstatus --type phpmysql --size S --datacenter LU-BI1 Password:
Cela va initier le processus de création qui devrait prendre une minute pour se finaliser si vous avez suffisamment de crédit sur le compte Prépayé. Dans le cas contraire, vous pourrez noter que cela prend trop de temps ou échoue. Connectez-vous alors à l'interface web pour effectuer le paiement et les opérations se finaliseront ensuite.
Les instances Simple Hosting PHP disposent d'une dépot Git par VHOST. Elles sont d'ailleurs pré-configurés avec un VHOST correspondant à une URL de test fournie par Gandi. Dans cet exemple, vous déploierez le code dans ce VHOST et l'application sera accessible à cette URL de test.
En utilisant Gandi.cli, vous pouvez récupérer le VHOST et l'utiliser pour ajouter un “remote” à votre dépôt local.
~/gstatus $ gandi paas info gstatus | grep vhost vhost : 1234567890.testurl.ws
~/gstatus $ gandi paas attach gstatus --vhost 1234567890.testurl.ws
Sans Gandi.cli, vous pouvez accéder à la page de gestion de l'instance pour récupérer l'URL du dépot Git et du VHOST. Vous pourrez ensuite exécuter la commande suivante, en remplaçant par les bonnes valeurs les champs entre parenthèses:
~/gstatus $ git remote add gandi ssh+git://{login}@git.{datacenter_id}.gpaas.net/{vhost}.git
Après avoir ajouté le dépôt distant “gandi”, vous pouvez simplement pousser votre code sur la branche 'master' :
~/gstatus $ git push gandi master
Il est maintenant nécessaire de checkout les fichiers du dépôt de votre VHOST dans le dossier du VHOST de l'instance. Le script “deploy” se charge de cette opération et va aussi exécuter Composer et installer les dépendances de votre application dans le processus.
Pour lancer le script de déploiement avec Gandi.cli, exécutez simplement la commande suivante :
~/gstatus $ gandi deploy
La méthode alternative consiste à exécuter la commande deploy directement via SSH. Utilisez l'exemple suivant et remplacez les champs entre parenthèses par les mêmes valeurs utilisées pour créer le “remote” dans votre dépôt git.
~/gstatus $ ssh {login}@git.{datacenter_id}.gpaas.net 'deploy 1234567890.testurl.ws.git'
Le script de déploiement est assez verbeux et vous permettra de suivre l'avancement du déploiement. Une fois le déploiement finalisé, votre code sera sur l'instance et accessible via le Web.
Vous pouvez maintenant visiter l'URL de votre VHOST pour vérifier que l'application s'exécute sur votre instance Simple Hosting : http://1234567890.testurl.ws
Vous devriez pouvoir consulter le statut des services Gandi. Félicitations :)