Projet web Symfony 6 sous WAMP Server
Stephan GIULIANI
19/10/2022 24/10/2022
Créer un projet Symfony dans un environnement Windows / WAMP Server
Objet
Cet article explique pas à pas comment installer Symfony (Version 6) dans un environnement Windows / WAMP Serveur. Il ne se substitue pas à l'ensemble des documentations officielles, il dresse simplement par ordre chronologique les différentes phases d'installation pour mettre en œuvre un projet Symfony.
Pré-requis
La lecture de cet article sous entend que vous devez avoir un environnement WAMP Server 1 installé et opérationnel. PHP 8.1 doit-être la version en cours d'exécution pour pouvoir installer Symfony 6.
Idéalement, installez et démarrer automatiquement les services correspondant, via le gestionnaire de services Windows.
A l'heure où j'écris cet article, la version de Symfony courante est la version 6.1.6.
1 - Composer
Composer est un gestionnaire de dépendances. Il permet aux développeurs de déclarer et d'installer les bibliothèques nécessaires à un projet. Ces bibliothèques sont répertoriées dans un site dépôt : Packagist, accessible à cette adresse www.packagist.org, et permet d'effectuer des recherches des bibliothèques, d'obtenir les informations des versions, des minimums requis et liste les inter dépendances entre ces bibliothèques.
Installer Composer
Pour installer composer, vous devez télécharger un installateur Windows sur le site de composer à cette adresse https://getcomposer.org/Composer-Setup.exe ou l'installer manuellement en consultant la page des téléchargements https://getcomposer.org/download/.
Une fois installé, tout se passe en ligne de commande depuis les boites de commandes DOS (Invite de commandes Windows) ou depuis le terminal intégré à votre IDE 2.
2 - Copie des fichiers Symfony dans le dossier
Cette première opération doit être faite avant la configuration de votre virtual host. En effet, le dossier public (web pour les anciennes version et public depuis la version 4) d'un projet Symfony est en fait un sous-dossier du projet, donc ce dossier doit exister pour pouvoir paramétrer votre virtualhost.
A noter, qu'il est tout à fait possible de faire « tourner » un projet en utilisant le serveur web PHP, mais ce n'est pas le sujet de cet article.
2.1 - Récupération des fichiers Symfony
Depuis l'invite de commande Windows, placez-vous dans le dossier www de WAMP Server, puis saisissez la commande composer suivante :
composer create-project symfony/website-skeleton NomDuDossierDuProjet
NomDuDossierDuProjet : Nom du dossier que vous souhaitez, il sera automatiquement créé lors de la copie des fichiers Symfony.
Cette commande lance la copie vers votre dossier de destination de Symfony.
En cours d'installation vous devrez répondre à certaines questions :
Do you want to include Docker configuration from recipes?
[y] Yes
[n] No
[p] Yes permanently, never ask again for this project
[x] No permanently, never ask again for this project
(default to y):
Dans cet article il ne sera pas fait usage de Docker, répondez n pour No, puis appuyez sur la touche Entrée
A la fin de l'installation, la procédure d'installation vous propose d'installer un certains nombre de composants additionnels qui ne seront pas abordés dans cet article.
Donc une fois terminé, vous pouvez constater la création du nouveau dossier et l'ensemble des dossier et fichiers de Symfony. Vous avez terminé pour cette phase.
2.2 - Options d'installation
En suivant les étapes décrites au chapitre 2.1 - Récupération des fichiers Symfony, vous installez la dernière version du Framework, la « current version ». A ce jour, la version 6.1.6 est la version courante. Cependant, vous pouvez pour des raisons de contraintes liées à votre projet installer une version plus ancienne, dans ce cas il faudra le préciser dans la ligne de commande Composer. Supponsons que vous souhaitez installer la dernière version LTS (Long Term Support - C'est à dire la version 5 bénéficiant d'un support de mises à jour qui va perdurer conjointement à la version courante). Aujourd'hui, pour la version 5, il faudra opter pour la 5.4 ; d'ailleurs je vous conseille la documentation officielle concernant les releases Symfony (https://symfony.com/releases) pour comprendre ce principe dans laquelle vous trouvez ce tableau :
Vous constatez effectivement que la version 5.4 va continuer à vivre jusqu'à novembre 2024 pour les maintenances correctives et novembre 2025 pour les correctifs de sécurité. Au delà de ces dates, la version 5 ne sera plus maintenue et corrigée.
Donc, pour installer cette version 5 LTS, la ligne de commande Composer sera :
composer create-project symfony/skeleton:"5.4.*" my_project_directory
Le détail des options d'installation peut être consulté à cette adresse : https://symfony.com/doc/current/setup.html
3 - Configuration du Virtual Host
3.1 - Depuis la page d'administration WAMP Server
Sur la page d'administration WAMP Server, vous trouverez un lien « Ajouter un Virtual Host » situé dans le premier bloc après les informations de configuration serveur.
En cliquant sur le lien « Ajouter un Virtual Host », vous arrivez sur la page d'ajout d'un Virtual Host contenant le formulaire ci-après qu'il convient de renseigner.
A savoir, les champs suivants (répérés en rouge) :
- Nom du Virtual Host,
- Le chemin complet absolu du dossier qui hébergera votre projet.
Par exemple :
www.mon-projet-web.dvlp
(ou tout autre dossier hébergeant vos projets, tout dépend comment est configuré WAMP Server), mais attention n'oubliez pas de vérifier si ce dossier existe, le créer le cas échéant. Dans le cas contraire, une erreur s'affichera pour vous prévenir que le dossier n'existe pas.
C:\wamp64\www\www.mon-projet-web.dvlp
Enfin, une fois ces deux champs renseignés, cliquez sur le bouton Démarrez la création ou la modification du VirtualHost (Peut prendre un certain temps). A la fin du processus, vous serez invité à redémarrer votre DSN.
Pour ce faire, cliquez avec le bouton droit de la souris sur l'icône WAMP Server dans la barre de tâches (le "W" en vert) :
Puis choisissez Outils / Redémarrage DNS
De retour sur la page d'accueil, vous verrez apparaître le dossier de votre nouveau projet, capture d'écran ci-dessous dans le bloc situé en bas à droite
3.2 - Sans l'outil de création des VirtualHosts de WAMP Serveur
Ce chapitre est réservé au utilisateurs avertis.
Il est possible également de créer manuellement votre VirtualHost, mais j'attire votre attention sur le respect des saisies des lignes dans les fichiers de déclaration car toute erreur peut potentiellement empêcher le redémarrage des services de votre WAMP Server.
Etape 1 :
Parce que nous allons modifier un fichier système, le fichier C:\Windows\System32\drivers\etc\hosts, démarrer un éditeur de texte multiple (tel Notepad++ 3 ou SublimeText 4) en mode administrateur avec un clic droit sur leur icone puis sélectionnez Plus > Exécuter en tant qu'administrateur.
Etape 2 :
Ouvrez les fichiers suivants
- C:\Windows\System32\drivers\etc\host : Le fichier hosts est un fichier utilisé par le système d'exploitation d'un ordinateur lors de l'accès à un réseau, comme Internet par exemple. Il permet de créer également une redirection locale depuis un nom vers une adresse IP. C'est déjà le cas pour localhost qui redirige vers l'adresse IP 127.0.0.1.
- C:\wamp64\bin\apache\apache2.4.51\conf\extra\httpd-vhosts.conf : Ce fichier regroupe tous les domaines virtuels que vous configurez.
Etape 3 :
Le fichier host :
A la suite des lignes
127.0.0.1 localhost
::1 localhost
Déclarez votre nouveau nom www.mon-projet-web.dvlp comme ceci :
127.0.0.1 www.mon-projet-web.dvlp
::1 www.mon-projet-web.dvlp
Vous devriez avoir au final un contenu qui ressemble à cela :
::1 localhost
127.0.0.1 www.mon-projet-web.dvlp
::1 www.mon-projet-web.dvlp
Etape 4 :
Le fichier httpd-vhosts.conf :
Vous devriez au moins constater dans ce fichier la déclaration du VirtualHost localhost. Il s'agit du nom par défaut d'accès à la page d'accueil de WAMP Server qui, en toute logique doit ressembler à cela :
# Virtual Hosts
#
<VirtualHost *:80>
ServerName localhost
ServerAlias localhost
DocumentRoot "${INSTALL_DIR}/www"
<Directory "${INSTALL_DIR}/www/">
Options +Indexes +Includes +FollowSymLinks +MultiViews
AllowOverride All
Require local
</Directory>
</VirtualHost>
Et bien à la suite de cette déclaration, nous allons ajouter notre projet pour avoir ceci dans votre fichier :
<VirtualHost *:80>
ServerName www.mon-projet-web.dvlp
DocumentRoot "${INSTALL_DIR}/www/www.mon-projet-web.dvlp/public"
<Directory "${INSTALL_DIR}/www/www.mon-projet-web.dvlp/public/">
Options +Indexes +Includes +FollowSymLinks +MultiViews
AllowOverride All
Require local
</Directory>
ErrorLog "${INSTALL_DIR}/logs/mon_projet_web-error.log"
CustomLog "${INSTALL_DIR}/logs/mon_projet_web-access.log" common
</VirtualHost>
Quelques explications:
- La ligne ServerName déclare le nom de votre serveur et doit être identique à ce qui est déclaré dans le fichier hosts. En effet, lorsque vous saisirez l'adresse www.mon-projet-web.dvlp, le fichier host se chargera de rediriger vers l'adresse IP 127.0.0.1
- La ligne DocumentRoot déclare votre dossier d'accès à la partie publique du projet. Notez que si vous avez créé votre virtualhost depuis l'interface de WAMP Server, il vous faudra ajouter /public
- Le bloc Directory déclare les conditions d'accès à votre projet. Ajoutez également public/ à la fin de la ligne
- Les lignes ErrorLog et CustomLog permettent la création d'un fichier d'erreur et d'un fichier d'accès. C'est très utile, surtout si vous avez plusieurs projets en cours.
Pour conclure, votre fichier httpd-vhosts.conf doit ressembler à cela :
#
<VirtualHost *:80>
ServerName localhost
ServerAlias localhost
DocumentRoot "${INSTALL_DIR}/www"
<Directory "${INSTALL_DIR}/www/">
Options +Indexes +Includes +FollowSymLinks +MultiViews
AllowOverride All
Require local
</Directory>
</VirtualHost>
#
<VirtualHost *:80>
ServerName www.mon-projet-web.dvlp
DocumentRoot "${INSTALL_DIR}/www/www.mon-projet-web.dvlp/public"
<Directory "${INSTALL_DIR}/www/www.mon-projet-web.dvlp/public/">
Options +Indexes +Includes +FollowSymLinks +MultiViews
AllowOverride All
Require local
</Directory>
ErrorLog "${INSTALL_DIR}/logs/mon_projet_web-error.log"
CustomLog "${INSTALL_DIR}/logs/mon_projet_web-access.log" common
</VirtualHost>
Etape 5 :
Rédémarrez votre DSN. Ouvrez une invite de commande Windows et saisissez cette commande ipconfig /flushdns
pour vider votre cache de résolution DNS.
Enfin vous pouvez interroger votre nouvelle adresse avec un ping www.mon-projet-web.dvlp
et si tout s'est bien passé (il n'y a pas de raison ) l'adresse 127.0.0.1 ou ::1 doit vous répondre.
Etape 6 :
Actualisez la page d'accueil WAMP Server pour voir apparaitre votre nouveau projet.
4 - Premier démarrage du projet
4.1 - Affichage de la page d'accueil par défaut
En cliquant sur l'item du bloc « Vos VirtualHost », ou en saisissant le nom www.mon-projet-web.dvlp dans la barre d'adresse, vous devriez afficher la page d'accueil par défaut de Symfony.
4.2 - Installation de la barre de débug Symfony
Symfony, en mode développement, implémente une barre de débug très puissante et est située en bas de page. Cependant, lors du premier affichage de la page d'accueil vous constaterez qu'elle ne s'affiche pas… Pas de panique, car c'est une spécificité du serveur web embarqué dans la solution WAMP Server. En effet, WAMP Server intègre un serveur web Apache. Et il est nécessaire d'installer un dépendance spécifique Apache Pack.
Celle-ci est disponible sur le site Packagist (www.packagist.org), dans la barre de recherche du site, saisissez Symfony apache Pack, et cliquez sur ce lien :
Vous découvrirez comment installer ce pack dont voici la procédure.
Après avoir ouvert le projet dans votre IDE, ouvrez le terminal ou depuis une invite de commande Windows positionnez vous à la racine du projet C:\wamp64\www\www.mon-projet-web.dvlp. L'avantage est que depuis l'IDE vous êtes directement positionné à la racine du projet.
Exécutez la commande Composer : composer require symfony/apache-pack
Ce qui lancera l'installation du pack, répondez « Yes » y à la question Do you want to execute this recipe?
Lorsque l'installation est terminée, vous devez retrouver votre invite de commande.
Pour finir, rafraichissez la page d'accueil du projet et vous verrez apparaite la barre de débug.
Conclusion
Vous êtes fin prêt à commencer à coder dans votre projet.
Bon <code />
et à bientôt
Notes
1 - WAMP Server : WAMP est l'acronyme de Windows Apache MySQL PHP. WAMP Server est un ensemble de couches logicielles qui permet de transformer son poste en serveur web pour le développement. Attention, WAMP Server ne doit pas être utilisé en environnement de production, comme cela est précisé sur le site www.wampserver.com où vous pouvez le télécharger.
2 - IDE : Pour Integrated Development Environment ou in french in text Environnement de Développement Intégré. Un IDE est en quelque sorte un éditeur de texte sur-vitaminé qui embarque avec lui un grand nombre de fonctionnalités aidant au développement applicatif telles que l'autocomplétion, la correction ou la suggestion de fonctions, l'interconnexion avec des systèmes de versionning, etc. Parmi les plus connus, citons PHP Storm, VS Code… Mais il en existe plein d'autres.
3 - Notepad++ est un éditeur de texte issu du domaine public intégrant des fonctionnalités avancées par rapport au bloc-notes Windows comme la coloration syntaxique, la saisie multi-lignes, etc. Il est téléchargeable sur le site officiel à cette adresse : https://notepad-plus-plus.org/
4 - Sublime Text est également un éditeur de texte intégrant des fonctionnalités similaires à Notepad++. Il est téléchargeable sur le site officiel : https://www.sublimetext.com/