Blog ENI : Toute la veille numérique !
Jusqu'à ce soir ! : -25€ dès 75€ sur les livres en ligne, vidéos... code FUSEE25. J'en profite !
Accès illimité 24h/24 à tous nos livres & vidéos ! 
Découvrez la Bibliothèque Numérique ENI. Cliquez ici
  1. Livres et vidéos
  2. Laravel
  3. Déployer un site en production
Extrait - Laravel Un framework efficace pour développer vos applications PHP (2e édition)
Extraits du livre
Laravel Un framework efficace pour développer vos applications PHP (2e édition) Revenir à la page d'achat du livre

Déployer un site en production

Considérations

Un projet de site devient véritablement un site web quand il quitte l’univers confortable et rassurant du bureau où il a été conçu. Le déploiement, c’est-à-dire la mise en production, est donc la condition nécessaire à l’existence réelle d’une application. Cette étape, tout comme la préparation de l’environnement de travail décrite au début de ce livre, sort du cadre agréable de la programmation.

Certaines équipes de développement bénéficient de l’assistance de spécialistes opérationnels, capables de créer des environnements de production pour tel ou tel framework, prenant en compte l’ensemble des paramètres liés à la sécurité et à la performance de l’application et de l’infrastructure qui l’accompagne.

Ce n’est cependant ni le cas des petites structures (start-up, PME, groupes d’étudiants ou auto-entrepreneurs) par manque de ressources, ni celui de certaines grosses structures ou institutions, avec une direction des systèmes d’information parfois prudente face au changement, ou manquant de compétences sur certains sujets.

Il arrive donc fréquemment que les personnes en charge du développement soient également par la force des choses en charge de prendre les décisions quant à la mise en production. Il s’agit alors de ne pas précipiter les choix et de bien mesurer les compétences à disposition, mais également le temps et l’argent.

Plusieurs options sont ouvertes.

1. Choisir son environnement de production

Il est possible de construire son propre environnement de production, à partir d’une machine (physique ou virtuelle) chez un hébergeur. Cela nécessite non seulement une grande confiance dans les compétences opérationnelles de l’équipe, mais aussi, et surtout de la lucidité : l’équipe présente sera-t-elle capable de faire face à un crash de la machine ? Pourra-t-elle facilement remonter une infrastructure en cas d’attaque ?...

Laravel Forge

Laravel Forge (https://forge.laravel.com/) est un outil pour installer, gérer et maintenir des applications PHP. Dans les faits, il est principalement orienté pour faire fonctionner des applications Laravel. Il est développé par Taylor Otwell et Mohammed Saïd, autrement dit par le créateur de Laravel et un de ses principaux développeurs. C’est un des services qui ont été évoqués en début de chapitre. Cet outil est présenté ici car c’est en quelque sorte la solution officielle pour déployer des applications Laravel en production. Attention cependant : il faut compter environ entre douze et trente-neuf dollars par mois selon le besoin, en fonction du nombre d’administrateurs et du nombre de serveurs administrables, uniquement pour ce service. C’est-à-dire que le coût des serveurs n’est pas compris.

Il s’agit uniquement d’un service d’installation et de maintenance. Il faudra à cela ajouter la location des machines virtuelles chez un hébergeur compatible, soit vingt-quatre dollars par mois chez Digital Ocean pour une machine de puissance moyenne (https://www.digitalocean.com/) : 4 Go de mémoire, 2 vCPU et 80 Go de disque.

Malgré son coût, choisir Forge sera un choix raisonnable en cas de doute. En effet, ce service a de nombreux utilisateurs...

Préparer un serveur manuellement

Si vous pensez avoir en interne les compétences pour installer et configurer un serveur, ou que d’autres paramètres motivent vos choix, il est aussi possible de le faire. Il existe une infinité de configurations possibles pour un serveur en charge de gérer une ou plusieurs instances de Laravel. Une méthode est présentée ci-dessous qui donnera quelques pistes pour démarrer. Comme vu plus haut, il est cependant déconseillé dans la plupart des cas de prendre en charge l’installation et la gestion quotidienne d’un serveur dédié, à moins d’avoir la certitude d’avoir les compétences nécessaires.

Cette méthode est un exemple parmi d’autres pour préparer un serveur de production pour Laravel. Elle ne doit pas être prise comme une référence, mais plutôt comme un exemple. Ce pas-à-pas met en place une sécurité minimale qui devra être sérieusement reconsidérée en cas de déploiement réel.

1. Prérequis

a. Ce qu’il faut avoir

  • Un nom de domaine.

  • Un VPS (dans notre exemple, avec Ubuntu 22.04 fraîchement installé).

  • Un dépôt Git qui contient l’application à installer, hébergé sur un serveur.

b. Ce qui sera installé

Une application Laravel :

  • sera installée avec une base de données MySQL ;

  • s’exécutera grâce à PHP8.1 et sera servie par Nginx et PHP-FPM ;

  • utilisera Redis pour le cache, les sessions et les files d’attente.

Dans le cadre de cet exemple, nous simulerons le déploiement d’une l’application nommée « Mon dentiste ».

2. Préparer le serveur

a. Initialisation

Connectez-vous au serveur et installez les applications nécessaires.

Initialisation

sudo apt update 
 
sudo apt upgrade 
 
sudo apt install nginx php8.1-fpm  

Si le firewall n’est pas encore configuré (ou autorise bien le port 80), nous pouvons vérifier que le serveur renvoie bien la page par défaut de nginx en nous rendant à l’adresse IP de notre VPS.

Page chargée à l’adresse IP du VPS

Welcome to nginx! 
If you see this page, the nginx web server is successfully  
installed...

Intégration continue et déploiement

Quel que soit le type d’installation choisi pour la mise en production, très tôt il peut sembler intéressant d’avoir la possibilité de livrer au quotidien. Une application web compétitive doit pouvoir être déployée régulièrement, de manière fiable, reproductible et avec un maximum de tests.

Il est également possible d’exclure très rapidement les déploiements manuels, sans planification, depuis les postes des différentes personnes de l’équipe de développement. Ou pire, bloqués par une direction des systèmes d’information surchargée.

La première étape pour aller vers un cycle de déploiements de qualité est de développer un maximum de tests automatisés (voir le chapitre Mise en place d’une stratégie de test), qu’ils soient unitaires, fonctionnels ou même pilotés avec un navigateur. Une fois codés, ces tests pourront être lancés automatiquement à chaque mise à jour du dépôt Git. Pour cela, il existe de nombreux outils. L’un des plus connus est Jenkins, mais on peut recourir également à des solutions cloud simples à mettre en place en quelques clics, qui monteront tout l’environnement virtuel de tests, comme...