Dans cette seconde partie nous allons déployer le code PHP sur le serveur en utilisant ansistrano. Comme son nom l'indique Ansistrano s'inspire de la méthode de déploiement mise en place par Capistrano avec un système de releases qui permet une mise à jour rapide et qui offre aussi la possibilité de revenir en arrière en cas d'erreur.

Structure des dossiers

Ce type de déploiement repose sur 3 dossiers :

  • releases va contenir les différentes versions de votre projets nommées en fonction de la date de déploiement.
  • current sera un lien symbolique qui pointera vers la release en cours. Pour changer de release il suffira de changer la cible de ce lien (cette méthode permet d'assurer le moins de "downtime" possible).
  • shared contient les fichiers et dossiers qui devront être partagées entre les différentes releases (les dossiers d'uploads, les logs...)
├── current -> ../releases/20150100093500/
├── releases
│   ├── 20150080072500
│   ├── 20150090083000
│   └── 20150100093500
└── shared
    ├── .env
    ├── storage
    └── public/uploads

Dans le cas de PHP

Il sera possible à travers des variables de rajouter des comportement à certaines étapes du déploiement.

Avant de créer les liens symboliques partagés

Avant de créer les liens vers le dossier shared il faudra effectuer certaines tâches :

  • Installer les dépendances via composer
  • Générer, si besoin, la clef d'application APP_KEY
  • Générer les fichiers de configuration (.env et laravel-echo-server.json dans notre cas)
  • Préparer les dossiers partagés (comme le dossier storage en s'assurant que les permissions permettent à PHP d'écrire dedans)

Après avoir créer les liens symboliques partagés

  • On génèrera les clefs passports si nécessaire
  • On construiera les assets via npm

A la fin du déploiement

  • On mettra en cache la configuration et les routes
  • On nettoiera le cache laissé par la release précédente
  • On migre la base de données et on seed si nécessaire.