Académique Documents
Professionnel Documents
Culture Documents
13 Déployez Votre Site Web - Construisez Un Site Web À L'aide Du Framework Symfony 5 - OpenClassrooms
13 Déployez Votre Site Web - Construisez Un Site Web À L'aide Du Framework Symfony 5 - OpenClassrooms
Accueil > Cours > Construisez un site web à l’aide du framework Symfony 5 > Déployez votre site web
20 heures Moyenne
Mis à jour le 08/07/2022
Mais comment faire pour le déployer sur un serveur distant ? Ce chapitre abordera l'ensemble des points points à vérifier avant le déploiement.
Vous n'apprendrez pas à mettre en ligne un site en production de façon globale mais je mettrai en avant des points particuliers auxquels il faut faire
attention lorsque l'on travaille sur un projet Symfony.
# .env
...
https://openclassrooms.com/fr/courses/5489656-construisez-un-site-web-a-l-aide-du-framework-symfony-5/5517046-deployez-votre-site-web 1/12
18/07/2022 07:17 Déployez votre site web - Construisez un site web à l’aide du framework Symfony 5 - OpenClassrooms
Quand le mode de débogage est désactivé, les erreurs n'apparaissent pas à l'écran. Cependant, elles sont répertoriées dans le fichier
var/log/prod . Si l'un de vos utilisateurs vous remonte une erreur, il faudra regarder dans ce fichier pour connaître le détail de l'erreur et les
informations nécessaires à sa résolution.
Pas très engageant, n'est-ce pas ? Vous devrez donc personnaliser les pages d'erreur de l'environnement de production.
Pour gérer cela, un outil a été créé par SensioLabs : Security Checker (security.symfony.com). Il existe deux méthodes pour vérifier les dépendances.
La première est d'envoyer manuellement le fichier composer.lock de votre projet sur l'interface en ligne de l'outil. Ce fichier contient les versions des
dépendances que vous utilisez. L'outil pourra ainsi vérifier si elles contiennent des failles de sécurité grâce à sa base de données interne.
La seconde méthode consiste à utiliser le même outil mais en utilisant l'invite de commande.
➜ bin/console security:check
https://openclassrooms.com/fr/courses/5489656-construisez-un-site-web-a-l-aide-du-framework-symfony-5/5517046-deployez-votre-site-web 2/12
18/07/2022 07:17 Déployez votre site web - Construisez un site web à l’aide du framework Symfony 5 - OpenClassrooms
! [NOTE] This checker can only detect vulnerabilities that are referenced in
! the SensioLabs security advisories database. Execute this command
! regularly to check the newly discovered vulnerabilities.
Si la commande n'est pas disponible dans votre projet, vous pouvez l'installer grâce à Composer :
composer require sensiolabs/security-checker
Si votre projet contient une dépendance avec une faille déjà répertoriée, renseignez-vous sur internet. La plupart du temps, la bibliothèque aura corrigé
faille dans une version plus récente : vous n'aurez qu'à mettre la dépendance à jour.
C'est le cas le plus simple car vous avez déjà accès au serveur.
Pour vérifier s'il est compatible avec Symfony, nous allons commencer par installer une extension du projet Symfony dont c'est le rôle : "Requirements
Checker".
Cette extension va ajouter un fichier appelé "check.php" dans le dossier "public" de votre application.
Mais attention, avant de l'envoyer sur le serveur, il va falloir le modifier légèrement. En effet, il contient une restriction sur l'IP qu'il va falloir retirer :
<?php
// web/config.php
// …
if (!in_array(@$_SERVER['REMOTE_ADDR'], array(
'127.0.0.1',
'::1',
))) {
header('HTTP/1.0 403 Forbidden');
exit('This script is only accessible from localhost.');
}
Comme ce fichier n'est pas destiné à rester sur votre serveur, il faut supprimer ce bloc de code et envoyer le fichier sur votre serveur. En accédant à la pa
correspondante, par exemple www.votre-serveur.com/check.php , vous devriez obtenir la figure suivante :
https://openclassrooms.com/fr/courses/5489656-construisez-un-site-web-a-l-aide-du-framework-symfony-5/5517046-deployez-votre-site-web 3/12
18/07/2022 07:17 Déployez votre site web - Construisez un site web à l’aide du framework Symfony 5 - OpenClassrooms
Essayez de suivre les recommandations proposées. Même si elles ne sont pas obligatoires pour faire fonctionner votre application, elles auront toujours u
impact positif.
Dans cette situation, il n'est pas possible d'exécuter le script de test présent dans Symfony. Vous allez devoir effectuer des modifications à la main ! Voici
points que votre serveur va devoir respecter pour que Symfony puisse fonctionner :
Ensuite, pensez à vérifier la compatibilité de votre serveur avec Requirements Checker comme nous l'avons vu précédemment.
soit vous avez accès à votre serveur en SSH (VPS, serveurs dédiés, etc.) ;
soit vous souhaitez déployer votre application dans le Cloud, ce que nous apprendrons à faire dans la suite de ce chapitre.
Bien que cela soit possible, il n'est pas conseillé d'utiliser un hébergement mutualisé sans accès SSH pour héberger un projet Symfony.
Il existe de nombreux outils open source pour vous aider à déployer vos projets Symfony, comme Deployer ou encore Capistrano.
Ces outils ne seront pas détaillés dans ce chapitre, car chacun d'entre eux nécessiterait un cours complet.
Utilisez le Cloud
Mais pourquoi passer par une PaaS comme Platform.sh, Heroku ou Amazon Web Services plutôt que d'acheter un serveur chez OVH par exemple ? Eh b
la différence est ce que vous achetez. Chez OVH, vous allez acheter un serveur, c'est-à-dire une machine qui se trouve dans un data center qui appartien
OVH. Vous pourrez dans certains cas avoir le droit d'accéder physiquement à la machine.
Avec une PaaS, vous achetez de la puissance de calcul et des services (accès à une base de données, à un système de cache). Dans ce cas, votre site web
peut changer de serveur physique mais vous n'avez pas à vous en préoccuper car la plateforme le fait pour vous.
Ces entreprises sont des spécialistes de l'infrastructure. À moins que vous soyez une très grosse entreprise, vous n'aurez probablement pas la
compétence en interne pour gérer des serveurs et tout l'applicatif qui y est lié.
Si une grosse charge arrive sur votre serveur (suite à une publicité télévisée par exemple), vous n'aurez aucun problème ! Ces plateformes sont
capables de faire évoluer vos services automatiquement pour supporter l'afflux de nouveaux visiteurs.
En tant que développeur, vous n'aurez plus à vous préoccuper des problèmes de déploiement, des versions de PHP, d'Apache, de GNU/Linux.
Vous pourrez vous concentrer sur votre cœur de métier et sur ce qui pourra apporter de la valeur business à vos clients.
https://openclassrooms.com/fr/courses/5489656-construisez-un-site-web-a-l-aide-du-framework-symfony-5/5517046-deployez-votre-site-web 4/12
18/07/2022 07:17 Déployez votre site web - Construisez un site web à l’aide du framework Symfony 5 - OpenClassrooms
Le "Cloud", est donc le fait de déployer son site sur un serveur qui ne nous appartient pas et dont on ne sait rien. Ce serveur peut changer, voire évoluer.
plateforme en tant que service va vous permettre de déployer votre projet à travers une plateforme qui s'occupera de ce serveur. Une plateforme offre
également un accès à d'autres services, comme une base de données, un nom de domaine, un certificat pour le HTTPS, un système de cache, un serveu
mail... c'est-à-dire tout ce qui pourrait être nécessaire pour votre application.
Pour bien comprendre comment tout cela fonctionne, nous allons déployer notre application sur Platform.sh.
Cette partie est facultative. Pour la suivre, vous aurez besoin d'installer Git sur votre ordinateur. Si vous ne connaissez pas Git, un cours est
disponible sur OpenClassrooms !
Pour commencer, créez-vous un compte sur Plateform.sh. Vous aurez accès à une période d'essai gratuite d'un mois pour vous familiariser avec les diffé
services que Platform.sh propose. Cliquez sur "Free Trial" ("Essai gratuit") pour y accéder.
3 environnements de développement ;
5 Gb d'espace disque sur chaque environnement ;
1 licence d'utilisation (vous serez le seul à pouvoir accéder à vos environnements) ;
l'accès à tous les services (MySQL, Redis, Solr, etc.) ;
l'accès au support client ;
la possibilité de faire évoluer l'essai gratuit, les services, les environnements.
Avant toute chose, vous devrez choisir la zone géographique dans laquelle vous souhaitez héberger vos applications. Ce choix est important pour la
réactivité des serveurs. Ensuite, la plateforme vous redirigera vers l'interface de création des projets.
Tout d'abord, vous devrez choisir le nom de votre projet. Pour ma part, j'ai choisi "Apprendre Symfony sur OpenClassrooms" :
https://openclassrooms.com/fr/courses/5489656-construisez-un-site-web-a-l-aide-du-framework-symfony-5/5517046-deployez-votre-site-web 5/12
18/07/2022 07:17 Déployez votre site web - Construisez un site web à l’aide du framework Symfony 5 - OpenClassrooms
Dans notre cas, nous choisirons la première option puisque nous n'avons pas de projet disponible.
Vous devrez ensuite choisir la plateforme que vous souhaitez utiliser parmi Drupal, Symfony, Easy Platform, Typo3 ou WordPress ! Choisissez "Symfony"
"Symfony 5". Cliquez ensuite sur "Finish"
La prochaine étape est d'accéder au code du projet via GIT. Pour cela, nous allons devoir configurer sa clé SSH pour être authentifié correctement
par Platform.sh quand nous utilisons Git.
https://openclassrooms.com/fr/courses/5489656-construisez-un-site-web-a-l-aide-du-framework-symfony-5/5517046-deployez-votre-site-web 6/12
18/07/2022 07:17 Déployez votre site web - Construisez un site web à l’aide du framework Symfony 5 - OpenClassrooms
Vous voulez apprendre à créer une clé SSH ? Rendez-vous sur ce cours
Une fois la clé configurée, nous allons récupérer le projet en local. Pour cela, cliquez sur le bouton "Git" (en haut de la page) et copiez-collez l'instruction
dans votre invite de commande.
La configuration de la clé SSH peut prendre 2 ou 3 minutes. Pour vérifier sa valeur, rendez-vous dans Compte Utilisateur > SSH Keys.
Une fois le dépôt cloné, ouvrez votre projet avec n'importe quel éditeur de code.
Dans la suite de ce chapitre, nous allons entrer dans les détail du dossier .platform et du fichier .platform.app.yaml .
Configuration de Platform.sh
La configuration de Platform.sh se fait en deux partie :
Dans le fichier .platform.app.yaml, vous trouverez toutes les informations requises pour que platform.sh puisse créer un environnement valide pour votre
application.
Voici à quoi ressemble la configuration pour un projet Symfony fourni par Platform.sh :
# Le nom de l'application
name: app
variables:
env:
# Configuration des variables d'environnement pour Symfony
APP_ENV: 'prod'
APP_DEBUG: 0
https://openclassrooms.com/fr/courses/5489656-construisez-un-site-web-a-l-aide-du-framework-symfony-5/5517046-deployez-votre-site-web 7/12
18/07/2022 07:17 Déployez votre site web - Construisez un site web à l’aide du framework Symfony 5 - OpenClassrooms
# La configuration web
web:
locations:
"/":
# Dossier public
root: "public"
# Le contrôleur frontal (qui doit recevoir toutes les requêtes)
passthru: "/index.php"
Vous trouverez les éléments suivants dans la plupart des services cloud :
La déclaration de l'environnement à créer : dans notre cas, nous avons demandé à avoir un environnement avec PHP 7.2 et Composer installés.
Les variables d'environnement : Nous n'avons pas accès au serveur. Pour configurer notre application au déploiement, la seule solution est d'utili
des variables d'environnement. Dans notre cas, l'application doit démarrer dans un environnement de production.
Les étapes du cycle de vie de la plateforme : "build" et "deploy" dans lesquelles certaines actions et variables d'environnement sont disponibles.
Les services : dans notre cas, il s'agit d'une base de données. Nous n'avons pas eu à la configurer.
La configuration "HTTP" : cette section permet de définir le dossier public de l'application et du contrôleur frontal. Habituellement, on doit config
Apache ou Nginx sur un serveur. La plateforme doit connaître ces éléments pour pouvoir le faire.
Le fichier routes.yaml définit comment la plateforme doit réagir lorsque un utilisateur atterrit sur l’URL d'un site :
# .platform/routes.yaml
# Si un utilisateur arrive sur le site en HTTPS, appelez l'application "app"
"https://{default}/":
type: upstream
upstream: "app:http"
Très important : "app" est le nom choisi pour l'application dans le fichier .platform.app.yaml.
Le fichier services.yaml, lui, permet de déclarer et de configurer les services dont nous allons avoir besoin pour notre application.
# .platform/services.yaml
mysqldb:
https://openclassrooms.com/fr/courses/5489656-construisez-un-site-web-a-l-aide-du-framework-symfony-5/5517046-deployez-votre-site-web 8/12
18/07/2022 07:17 Déployez votre site web - Construisez un site web à l’aide du framework Symfony 5 - OpenClassrooms
type: mysql:10.2 # MariaDB 10.2
disk: 2048
Mais comment notre application Symfony est-elle capable de se connecter à la base de données fournie par Platform.sh ? En effet, notre base de donné
va changer d'IP et de serveur. Alors comment cela fonctionne-t-il ?
{
"name": "symfony/skeleton",
"type": "project",
"license": "MIT",
"description": "A minimal Symfony project recommended to create bare bones applications",
"require": {
"php": "^7.2.5",
"ext-ctype": "*",
"ext-iconv": "*",
"platformsh/symfonyflex-bridge": "^2.7",
"symfony/console": "*",
"symfony/flex": "^1.1",
"symfony/framework-bundle": "*",
"symfony/yaml": "*"
},
"require-dev": {
"symfony/dotenv": "*"
}
}
C'est le bridge de Platform.sh qui va configurer automatiquement la base de données dans Symfony.
Il faudra absolument l'installer si vous voulez déployer une application déjà existante.
<?php
// src/Controller/HelloController.php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Component\HttpFoundation\Response;
Dans l'application Symfony de démonstration de Platform.sh, les annotations ne sont pas activées. Il faut donc installer les dépendances adéquates grâc
Composer :
Cette commande va activer l'utilisation de l'annotation @Route. Il faut ensuite "commiter" et déployer nos modifications sur le projet mis a disposition p
Platform.sh :
Mise en ligne
Mais comment faire pour déployer nos modifications sur Platform.sh ? Eh bien il suffit de publier nos changements Git sur le serveur :
https://openclassrooms.com/fr/courses/5489656-construisez-un-site-web-a-l-aide-du-framework-symfony-5/5517046-deployez-votre-site-web 9/12
18/07/2022 07:17 Déployez votre site web - Construisez un site web à l’aide du framework Symfony 5 - OpenClassrooms
Validating submodules
[OK] Cache for the "prod" environment (debug=false) was successfully cleared.
https://openclassrooms.com/fr/courses/5489656-construisez-un-site-web-a-l-aide-du-framework-symfony-5/5517046-deployez-votre-site-web 10/12
18/07/2022 07:17 Déployez votre site web - Construisez un site web à l’aide du framework Symfony 5 - OpenClassrooms
Compressing application.
Beaming package to its final destination.
Provisioning certificates
Environment certificates
- certificate 0798f9d: expiring on 2019-02-02 13:32:58+00:00, covering {,www}.master-7rqtwti-wbe6iqdgihnqu.eu-2.platformsh.site
Environment routes
http://master-7rqtwti-wbe6iqdgihnqu.eu-2.platformsh.site/ redirects to https://master-7rqtwti-wbe6iqdgihnqu.eu-2.platformsh.site/
http://www.master-7rqtwti-wbe6iqdgihnqu.eu-2.platformsh.site/ redirects to https://www.master-7rqtwti-wbe6iqdgihnqu.eu-2.platformsh.site
https://master-7rqtwti-wbe6iqdgihnqu.eu-2.platformsh.site/ is served by application `app`
https://www.master-7rqtwti-wbe6iqdgihnqu.eu-2.platformsh.site/ redirects to https://master-7rqtwti-wbe6iqdgihnqu.eu-2.platformsh.site/
To git.eu-2.platform.sh:wbe6iqdgihnqu.git
6c23fcc..3651681 master -> master
Le message "Hello World" devrait s'afficher dans votre navigateur en accédant à la route fournie par Platform.sh (dans mon cas : https://master-7rqtwti-
wbe6iqdgihnqu.eu-2.platformsh.site/).
En retournant dans l'interface de Platform.sh, dans vos projet, vous pouvez voir qu'un nouveau "build" a été exécuté, avec succès.
En résumé
Le déploiement d'une application Symfony passe par plusieurs étapes :
Le Cloud et en particulier les plateformes (PaaS), comme Platform.sh ou Heroku permettent de ne plus se préoccuper du serveur. Tout ce qui relève des
opérations serveur sera géré par la plateforme, à partir du moment où la configuration du projet a été faite et les différents services activés (base de
données, système de cache, etc.)
Dans ce cours, nous nous sommes concentrés sur Platform.sh car cette plateforme est performante et adaptée aux projets Symfony. Cependant,
l'ensemble des PaaS fonctionnement de la même façon.
Pour vous entraîner, je vous conseille d'essayer de déployer votre application à l'aide d'Heroku ou de Microsoft Azure
Ce cours touche à sa fin et vous avez maintenant toutes les clés en main pour :
N'oubliez pas de vous exercer pour valider ces compétences en complétant l'activité à la fin de cette partie !
À propos de communauté, si ce n'est pas déjà le cas, n'hésitez pas à vous inscrire sur Symfony Connect, d'une part ; et à participer sur le Slack
communautaire, d'autre part !
https://openclassrooms.com/fr/courses/5489656-construisez-un-site-web-a-l-aide-du-framework-symfony-5/5517046-deployez-votre-site-web 11/12
18/07/2022 07:17 Déployez votre site web - Construisez un site web à l’aide du framework Symfony 5 - OpenClassrooms
Le professeur
Mickaël Andrieu
Consultant et Formateur Web / Data
https://openclassrooms.com/fr/courses/5489656-construisez-un-site-web-a-l-aide-du-framework-symfony-5/5517046-deployez-votre-site-web 12/12