Déploiement d’une application Symfony sur Apache2 : Guide étape par étape pour la production

Lubna Altungi
5 min readJan 6, 2024

--

Étape 1 — Exigences Techniques

Assurez-vous que votre serveur répond aux exigences techniques nécessaires pour déployer une application Symfony sur Apache2 :

· Vérifiez que vous avez la version appropriée de PHP et une base de données compatible.

· Assurez-vous que toutes les extensions PHP requises sont installées. Vous pouvez trouver le fichier php.ini en suivant ce chemin :

/etc/php/8.1/apache2/php.ini

PS : Ajustez le chemin en fonction de votre version de PHP.

· Dans le fichier php.ini, assurez-vous que toutes les extensions essentielles sont décommentées pour les activer.

· Définissez le bon fuseau horaire dans la section [Date] du fichier php.ini :

[Date]
; Définit le fuseau horaire par défaut utilisé par les fonctions de date
; http://php.net/date.timezone
date.timezone = Europe/Amsterdam

· Après avoir apporté ces modifications, redémarrez le serveur Apache avec la commande suivante :

sudo service apache2 restart

Étape 2 — Installation de Symfony CLI

Installez Symfony CLI comme vous le souhaitez en suivant ce LIEN

Alternativement, vous pouvez utiliser les commandes suivantes :

curl -1sLf 'https://dl.cloudsmith.io/public/symfony/stable/setup.deb.sh' | sudo -E bash
sudo apt install symfony-cli

Assurez-vous que Symfony CLI est correctement installé en vérifiant les exigences :

symfony check:requirements

Vérifiez également quelle version de PHP est utilisée :

php -i
symfony local:php:list

Étape 3 — Cloner votre projet

Pour cloner votre projet dans le répertoire racine (/var/www/…), vous avez deux options :

Utilisation de FileZilla :

Si vous préférez utiliser FileZilla, suivez ces étapes :

1. Assurez-vous que votre nom d’utilisateur a une autorisation complète pour accéder au répertoire racine.

2. Ouvrez FileZilla et connectez-vous à votre serveur en utilisant les informations d’identification appropriées.

3. Accédez au répertoire racine (/var/www/…) et créez un nouveau dossier pour votre projet.

4. Téléchargez tous les fichiers et dossiers du projet dans le dossier nouvellement créé.

Utilisation de Git (Gitlab/Github) : (recommandé)

Si vous préférez utiliser Git pour cloner votre projet, suivez cette commande :

git clone -b <nom-de-la-branche> <URL-du-dépôt-remote>

Remplacez <nom-de-la-branche> par le nom de la branche que vous souhaitez cloner et <URL-du-dépôt-remote> par l’URL de votre dépôt.

Après avoir exécuté la commande git clone, le terminal vous demandera d’entrer votre nom d’utilisateur et votre mot de passe pour l’authentification.

Étape 4 — Environnement Symfony PROD

Si vous n’avez pas encore préparé votre environnement, vous pouvez suivre ces étapes :

· Tout d’abord, assurez-vous d’avoir la propriété appropriée sur votre répertoire de projet :

sudo chown user:user /var/www/votre-projet

· Passez votre application en mode production en exportant la variable SYMFONY_ENV :

export SYMFONY_ENV=prod

· Installez les dépendances Composer nécessaires pour la production avec la commande suivante :

cd /var/www/votre_projet
symfony composer install --no-dev --optimize-autoloader

Avant de procéder à ces étapes, assurez-vous d’avoir déjà accompli les actions suivantes :

· Modifiez votre fichier .env pour correspondre à votre environnement de production :

###> symfony/framework-bundle ###
APP_ENV=prod

· Modifiez également l’URL de connexion à votre base de données :

DATABASE_URL="postgresql://nom_utilisateur:mot_de_passe@127.0.0.1:5432/nom_base_de_donnees?serverVersion=13&charset=utf8"

(Remplacez nom_utilisateur, mot_de_passe et nom_base_de_donnees par vos identifiants de base de données réels.)

PS : Le nom_utilisateur devrait être le propriétaire de votre base de données sur le serveur.

· Assurez-vous que certains bundles sont uniquement disponibles dans l’environnement de développement, tels que DebugBundle, WebProfilerBundle et MakerBundle. Vous pouvez le configurer dans votre fichier config/bundles.php, comme suit :

Symfony\Bundle\DebugBundle\DebugBundle::class => ['dev' => true, 'test' => true],

Étape 5 — Configuration de la base de données

Avant de continuer, créez un nouvel utilisateur et une base de données vide :

· Passez à l’utilisateur PostgreSQL et créez une nouvelle base de données avec le propriétaire spécifié :

sudo su – postgres
createdb –encoding=UNICODE –owner =nom_utilisateur nom_base_de_donnees

(Remplacez nom_utilisateur par le propriétaire de base de données souhaité et nom_base_de_donnees par le nom de la base de données vide.)

Alternativement, vous pouvez accorder l’accès à un utilisateur existant ultérieurement avec la commande suivante :

grant all privileges on database nom_base_de_donnees to nom_utilisateur;

(Remplacez nom_utilisateur par l’utilisateur auquel vous souhaitez accorder l’accès.)

· Maintenant, validez le fichier de mappage dans votre application Symfony :

Accédez au répertoire de votre application Symfony :

cd /var/www/votre_application
php app/console doctrine:schema:validate

Si la sortie montre ce qui suit, cela signifie que le mappage est correct, mais le schéma de la base de données n’est pas synchronisé :

[Mapping] OK - The mapping files are correct.
[Database] FAIL - The database schema is not in sync with the current mapping file.

Maintenant, vous avez deux options pour synchroniser le schéma de votre base de données :

Option 1 : Créer un nouveau schéma à l’aide de Doctrine (il sera vide) :

cd /var/www/votre_application
php app/console doctrine:schema:create

Option 2 : Restaurer votre base de données sauvegardée :

a. Exportez la base de données depuis votre ordinateur local en utilisant la commande suivante :

pg_dump -U postgres -d old_dbname -c -v -f dumpdb.sql

Cette commande créera une sauvegarde de votre base de données locale.

b. Téléchargez le fichier de vidage (dumpdb.sql) dans le dossier /tmp sur votre serveur.

c. Passez à l’utilisateur PostgreSQL :

sudo su – postgres
psql
psql -d nom_base_de_donnees < /tmp/dumpdb.sql

(Remplacez nom_base_de_donnees par le nom de la base de données cible.)

d. Vérifiez votre base de données :

Après avoir restauré la base de données, vérifiez la liste de vos bases de données et vérifiez si la vôtre est disponible, puis vérifiez le schéma et les tables :

\l
\c votre_nom_de_base_de_donnees
\dt

Pour une vérification plus approfondie, vous pouvez vérifier une table spécifique à l’aide de :

SELECT * from nom_table;

Si tout est en ordre, retournez dans votre répertoire d’application pour vérifier à nouveau le schéma :

cd /var/www/votre_application
php app/console doctrine:schema:validate

Enfin, videz le cache pour garantir que toutes les modifications prennent effet :

php bin/console cache:clear

Étape 6 — Configuration du serveur web

Installons le pack Apache de Symfony en utilisant la commande suivante :

composer require symfony/apache-pack

Remplacez le fichier de configuration du site web par défaut par un fichier personnalisé adapté à la fourniture d’une application Symfony. Tout d’abord, créez une sauvegarde du fichier de configuration par défaut actuel du site :

cd /etc/apache2/sites-available
sudo mv 000-default.conf default-bkp.conf

Créez un nouveau fichier pour remplacer l’ancien :

sudo nano /etc/apache2/sites-available/000-default.conf

La configuration minimale pour faire fonctionner votre application sous Apache2 est la suivante :

<VirtualHost *:80>
ServerName domain.tld
ServerAlias www.domain.tld

DocumentRoot /var/www/yourapp/public
DirectoryIndex /index.php

<Directory /var/www/yourapp/public>
AllowOverride None
Order Allow,Deny
Allow from All
FallbackResource /index.php
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

Pour plus d’informations, vous pouvez consulter ce LIEN

Après avoir configuré le site Apache personnalisé, redémarrez le serveur pour appliquer les modifications :

sudo service apache2 restart

Et voilà ! :)

--

--