Série : Symfony 7
Fichiers : https://github.com/NouvelleTechno/OpenBlog
Ce tutoriel est destiné à présenter et à configurer le projet OpenBlog qui est un blog multi-auteurs qui sera développé en utilisant Symfony 7.
ATTENTION : Avant de suivre cette série, il est nécessaire de maîtriser un minimum Docker. La série Docker est disponible à cet effet.
Les détails de ce projet sont disponibles sur Github : https://github.com/NouvelleTechno/OpenBlog
Le projet
OpenBlog est un blog multi auteurs créé avec Symfony 7 dans une série de tutoriels présents sur la chaîne Nouvelle-Techno.fr à cette adresse : https://www.youtube.com/playlist?list=PLBq3aRiVuwywmwPHz0BzPFvH0P-37mH8K
Technologies
OpenBlog sera développé en utilisant :
- Docker
- Symfony 7
- Mysql 8.0
- PHP 8.2
- PHPMyAdmin
- Sass
L'utilisation de bundles sera limitée au strict nécessaire.
Base de données
Vous trouverez le schéma de base de données ici : https://drawsql.app/teams/ma-team-7/diagrams/blog-symfony-7
Maquettes
Les maquettes sont disponibles sur Figma
Page d'accueil - Mobile
Page d'Accueil - Desktop
Page d'un article - Mobile
Page d'un article - Desktop
Configuration de Docker
Docker Compose
Le fichier docker-compose.yaml nous permet de configurer nos conteneurs. Voici son contenu
version: '3.8'
services:
database: # Conteneur pour la base de données
container_name: database
image: mysql:8.0
environment:
MYSQL_ROOT_PASSWORD: secret # Mot de passe root
MYSQL_DATABASE: openblog # Nom de la base de données
MYSQL_USER: symfony # Utilisateur de la base de données
MYSQL_PASSWORD: symfony # Mot de passe de la base de données
ports:
- '4306:3306' # Ports utilisés (Port externe:Port interne au conteneur)
volumes:
- ./mysql:/var/lib/mysql # Dossiers utilisés (Dossier local:Dossier interne au conteneur)
php: # Conteneur pour le PHP
container_name: php
build:
context: ./php # Dossier contenant la configuration du conteneur (Dockerfile)
ports:
- 8080:80 # Ports utilisés (Port externe:Port interne au conteneur)
volumes:
- ./apache/default.conf:/etc/apache2/sites-enabled/000-default.conf # Dossiers utilisés (Dossier local:Dossier interne au conteneur)
- ./app:/var/www # Dossiers utilisés (Dossier local:Dossier interne au conteneur)
depends_on:
- database # Dépendance (php dépend du conteneur database)
phpma: # Conteneur pour PHPMyAdmin
image: phpmyadmin/phpmyadmin
container_name: phpmyadmin
environment:
PMA_ARBITRARY: 1 # Permet d'avoir le choix du serveur lors de la connexion
PMA_HOST: database # Nom du service MySQL
PMA_USER: root # Utilisateur avec lequel se connecter
PMA_PASSWORD: secret # Mot de passe de l'utilisateur
UPLOAD_LIMIT: 20M # Limite d'envoi de fichiers
ports:
- 8899:80 # Ports utilisés (Port externe:Port interne au conteneur)
Dockerfile
Le fichier Dockerfile, situé dans le dossier PHP, nous permettra de configurer notre environnement PHP afin qu'il contienne tous les pré-requis pour un site Symfony 7
FROM php:8.2-apache
RUN apt-get update \
&& apt-get install -y zlib1g-dev g++ git libicu-dev zip libzip-dev zip \
&& docker-php-ext-install intl opcache pdo pdo_mysql \
&& pecl install apcu \
&& docker-php-ext-enable apcu \
&& docker-php-ext-configure zip \
&& docker-php-ext-install zip
RUN a2enmod rewrite && a2enmod ssl && a2enmod socache_shmcb
WORKDIR /var/www
RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer
RUN curl -sS https://get.symfony.com/cli/installer | bash
RUN mv /root/.symfony5/bin/symfony /usr/local/bin/symfony
RUN git config --global user.email "votre@email.fr"
RUN git config --global user.name "Votre nom"
Apache
Pour configurer Apache, il est nécessaire de créer un Vhost au moyen du fichier default.conf situé dans le dossier Apache.
<VirtualHost *:80>
DocumentRoot /var/www/public
<Directory /var/www/public>
AllowOverride None
Order Allow,Deny
Allow from All
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php [QSA,L]
</IfModule>
</Directory>
</VirtualHost>
Création du projet Symfony
Nous n'avons pas encore initialisé le projet Symfony 7.
Nous allons l'initialiser dans un dossier appelé app en exécutant la commande suivante
symfony new --webapp app
Voici la décomposition de cette commande
- symfony : exécute le binaire symfony ( https://symfony.com/download )
- new : indique qu'on veut initialiser un nouveau site
- --webapp : flag qui indique qu'on veut créer une application web
- app : dossier dans lequel sera initialisé le projet
Démarrage du projet
Chaque fois que nous souhaiterons démarrer notre projet, nous lancerons la commande suivante
docker-compose up --build
Cela générera les conteneurs s'ils ne le sont pas encore et les exécutera.
Nous aurons accès à 2 URLs :
- http://127.0.0.1:8080 pour le site
- http://127.0.0.1:8899 pour PHPMyAdmin
Pour accéder au terminal du conteneur PHP, nous exécuterons la commande
docker-compose exec php /bin/bash
Obtenir de l'aide
Pour obtenir de l'aide, vous pouvez accéder au serveur Discord pour une entraide par chat.