Déploiement d’une application Symfony sur Apache2 : Guide étape par étape pour la production
É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à ! :)