
Mise en production
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 %}PROD, on charge le cache une seule fois.
Si on fait une modification, on doit penser Ă vider le cache : symfony console cache:clear.
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 déploiement
Etapes listées sur Symfony :
- on transfĂšre le code source sur le serveur web
- on le passe en
PROD, on gĂšre les variables dâenvironnement
- on installe les dépendances avec composer
- 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 :
- FTP (non) / SFTP (mouais) / SCP (pour copier dâun ordi Ă un autre via le protocole SSH) (rare)
- git (le + utilisé) : git clone URL et on récupÚre le projet
- 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 :
- dev : onglet Database Ă droite
- prod : pareil mais on met le serveur OVH (10.22.200.32) en host (lâhĂ©bergeur nous donne les identifiants)
dans le .env, on met la
DATABSE_URLavec le 127.0.0.1 (car quand on le mettra sur le serveur, ce sera aussi le local) et les bons identifiants
Cloner le repository git :
- câest lâhĂ©bergeur qui dĂ©marre le service :
/etc/init.d/apache2 restart
- pour que lâapplication soit en
PROD, on la met dans /var/www/html (souvent on a accĂšs quâĂ ce rĂ©pertoire) parce que câest le dossier root
- on clone le projet :
git clonehttps://github.com/LSarribouette/hello-symfony(je vérifie avec
lsque jâai bien la liste des documents)
Passer le projet en PROD :
- on utilise vi pour changer la valeur de
APP_ENV
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
- Utilisation dâun VPS (serveur privĂ© virtuel) : accessible dans la salle, en public avec lâadresse iPv4. Câest comme un ordinateur dans le nuage dâinternet (on peut faire ce quâon veut : installer des trucs, mettre des fichiers, crĂ©er un site web⊠On peut acheter un nom de domaine qui mĂšne Ă cette iPv4âŠ).
- Choix dâhĂ©bergement : selon le nombre de sites (un domaine peut avoir plein de sous-domaines)
BP : o2switch (avec nom de domaine offert)
- git workflow : ce qui se passe dans la vraie vie
Les dĂ©veloppeurs commitent ; le lead dĂ©veloppeur se connecte en SSH sur le serveur web, il pull la branche main (taguĂ©e) â> en vĂ©ritĂ©, on automatise ce processus avec de lâintĂ©gration continue.
on touche quasi jamais Ă la branche main (sauf lead dev)
on a une branche dev
chaque développeur a sa branche à lui et merge dans dev
on a autant de merge sur la branche main que de tags (version V.0.2âŠ.)
Exemple dâintĂ©gration continue avec GitHub Action : un symfony.yaml qui lance des jobs qui crĂ©e des dockers, fait un github checkout, installe des machins,âŠ. â> principe = on dit quâest ce quâon lance et quand.
Le changement de base de donnĂ©es aussi est gĂ©rĂ© par lâintĂ©gration continue.
Le reste Ă voir en Symfony
Symfony : mais encore ? ⹠Webpack Encore ⹠Symfony UX ⹠Fixtures ⹠Commandes de console ⹠Traduction ⹠EventDispatcher ⹠BrowserKit ⹠Tests ⹠API REST, APIPlatform ⹠Cache ⹠Logs ⹠Workflow ⹠Voters ⹠Les bundles de la communauté ⹠Et encore plein d'autres merveilles