1 - Présentation et configuration du projet OpenBlog (Symfony 7)

Temps de lecture : 13 minutes environ.

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

Database

Maquettes

Les maquettes sont disponibles sur Figma

Page d'accueil - Mobile

Page d'accueil Mobile

Page d'Accueil - Desktop

Page d'accueil Desktop

Page d'un article - Mobile

Page d'un article Mobile

Page d'un article - Desktop

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 :

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.

1 - Présentation et configuration du projet OpenBlog (Symfony 7)
Article publié le

Catégories : Symfony Docker Symfony 7

Mots-clés : Symfony Docker Symfony 7

Partager : Partager sur Facebook Partager sur Twitter Partager sur LinkedIn