📘

Mise en production

⚙
Il a recréé un serveur OVH pour la démonstration (accessible dans la salle).

Les environnements Symfony

Dans le .env, on a une variable qui dĂ©termine l’environnement dans lequel on se trouve : APP_ENV=DEV. Il existe aussi PROD et TEST.

Le code est le mĂȘme mais les configurations diffĂšrent entre environnements de travail. On voit dans le index.php quel Kernel est instanciĂ©.

Par exemple, les erreurs entre PROD et DEV s’affichent diffĂ©rement (en PROD on enlĂšve les informations utiles aux dĂ©veloppeurs mais sensibles).

Souvent on a une base de donnĂ©es par environnement : on garde la mĂȘme structure mais on recrĂ©e la base de donnĂ©es en PROD (souvent celle que fournit l’hĂ©bergeur).

Le cache aussi diffĂšre, en DEV il recharge Ă  chaque refresh alors qu’en PROD il garde le cache (gain de rapiditĂ©).

Les paquets disponibles peuvent aussi diffĂ©rer, notamment la barre de dĂ©boguage qui n’est pas accessible en PROD.

GrossiĂšrement, pour passer en PROD, on prend le code source, on le met dans le serveur OVH, on remplace la valeur de APP_ENV=PROD.

On personnalise les pages d’erreur

On est donc en PROD sur le projet, on lance le serveur, on check la page d’erreur (on va sur une url qui existe pas) et c’est moche.

Si on crĂ©e le bon twig qu’on met au bon endroit, alors c’est lui qui sera affichĂ© : templates/bundles/TwigBundle/Exception (que l’on crĂ©e Ă  la main).

On peut faire une page générale pour toutes les erreurs : error.html.twig

On peut ajouter des fichiers selon les erreurs : error404.html.twig

{% extends base.html.twig %}

{% block body %}
	<p> Erreur 404 - La page demandée n'a pas été trouvée.
{% endblock %}
⚠
Quand on est en PROD, on charge le cache une seule fois. Si on fait une modification, on doit penser Ă  vider le cache : symfony console cache:clear.
â„č
.env = part sur git (ex: mĂȘme environnement pour tous les dĂ©veloppeurs) ≠ .env.local = part pas sur git (ex: base de donnĂ©es diffĂ©rente entre dĂ©veloppeurs)

On doit parler de SQL

En environnement de DEV, on faisait des symfony console doctrine:schema:update --force, sauf qu’il n’est pas possible de revenir en arriùre.

C’est fini tout ça en PROD. On fait des migrations : symfony console make:migration.

Un script SQL est créé, il permet d’aller en avant ou en arriĂšre.

Une table des migrations est créée dans la base de données, pour garder une trace de qui a migré et quand.

â„č
Le schéma est modifié mais pas les données (il ne touche pas aux données).

Le déploiement

Etapes listées sur Symfony :

  1. on transfĂšre le code source sur le serveur web
  1. on le passe en PROD, on gùre les variables d’environnement
  1. on installe les dépendances avec composer
  1. on vide le cache

Il faut faire du SSH pour se connecter au serveur OVH.

Dans un terminal, on se connecte au serveur avec login@adresse : ssh ovh@10.22.200.32 > le mot de passe : ovh.

OVH c’est linux, on doit copier le projet en choisissant une mĂ©thode :

  1. FTP (non) / SFTP (mouais) / SCP (pour copier d’un ordi à un autre via le protocole SSH) (rare)
  1. git (le + utilisé) : git clone URL et on récupÚre le projet
  1. Docker, { Jenkins, Travis CI } (forge logicielle d’intĂ©gration continue : Ă  chaque commit, il compacte dans un docker qu’il met dans OVH et dĂ©marre et plein d’autres trucs
), GitHub, GitLab

Se connecter à la base de données :

Cloner le repository git :

Passer le projet en PROD :

Installer les dépendances : /usr/local/bin/composer install

Si on va sur l’adresse IP du serveur, on voit la page par dĂ©faut. Si on rajoute ‘/nom-du-projet’, on accĂšde bien au projet.

En vrac