Composer

Ce tutoriel décrit comment utiliser Composer, le très populaire gestionnaire de dépendances PHP, sur une instance Simple Hosting PHP.

Ce tutoriel ne couvre pas la création de l’instance Simple Hosting ni la création du site correspondant à votre domaine.

Vous travaillerez à partir de l’interface en ligne de commande de votre ordinateur, d’où vous exécuterez l’ensemble des opérations. Gandi CLI n’étant pas encore disponible pour Gandi v5, cet outil ne sera pas utilisé ici.

Qu’est-ce qu’un Gestionnaire de dépendances?

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 les 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 adoption par les utilisateurs. En résulte, pour les développeurs modernes, une grande quantité de librairies de bonne qualité, prêtes à l’usage.

Prérequis

Pour ce tutoriel, vous aurez besoin de:
  • Un compte Gandi
  • Une instance Simple Hosting PHP
  • Git et PHP installés sur votre poste

Débutons

Commencez par créer le dossier du projet sur votre ordinateur.

~ $ mkdir gstatus
~ $ cd gstatus
~/gstatus $ git init .
~/gstatus $ mkdir htdocs

Installation de Composer

Un script d’installation automatisé que vous pouvez exécuter directement à partir de la ligne de commande est fourni par Composer.

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

Écriture de l’application

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 texte détaillant le statut, ainsi qu’un lien pour obtenir plus d’informations.

Déclarer et installer les dépendances

Au lieu d’écrire la requête HTTP à la main, vous utiliserez Guzzle, une librairie facilitant l’écriture et la manipulation de requêtes.

Note

Pour les versions de PHP antérieures à 7, vous devrez utiliser la version 5 de Guzzle au lieu de la version 6.

Guzzle est disponible à travers Composer, donc vous pouvez déclarer cette dépendance dans un fichier “composer.json”, que vous allez créer à la racine du site/vhost.

::
~/gstatus $ vim composer.json
{
    "require": {
        "guzzlehttp/guzzle": "~6.0"
    }
}

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 a 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.

Création du fichier index.php

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 de HTML produira une page web minimaliste pour, avec un peu de 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>

Commit au dépôt Git

Votre application est désormais presque complète et vous pouvez sauvegarder vos changements sur Git.

Création d’un fichier .gitignore

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

Git « commit » et « add » des fichiers à l’arbre

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'

Configurer le dépôt Git distant

Les instances Simple Hosting PHP disposent d’un 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. L’URL du service git vous est indiquée dans l’onglet “Sites” de votre instance Simple Hosting, sur la page de chaque site. 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

Push du code

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

Déploiement du code

Il est maintenant temps de procéder au déploiement de votre code. Un git checkout sera automatiquement effectué dans le répertoire cible de votre instance. Toutes les dépendances seront également installées en utilisant Composer. Nous utiliserons dans cet exemple le vhost 1234567890.testurl.ws .

~/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.

Ouvrir votre site dans un navigateur

Vous pouvez maintenant visiter l’URL de votre VHOST pour vérifier que l’application s’exécute sur votre instance Simple Hosting : 123456789.testurl.ws