Dans ce tutoriel nous allons voir comment déployer notre application Symfony sur un hébergeur qui utilise l'interface CPanel. Dans le cas de cette vidéo nous utiliseront l'hébergement O2Switch.
Préparation de l'environnement
La première étape est de préparer le serveur pour accueillir notre site :
- On ajoute notre IP à la liste des IPs autorisées à se connecter en SSH au serveur via Autorisation SSH.
- On commence par Ajouter un domaine que l'on fait pointer vers un dossier spécifique (on pensera à ponter vers le dossier public). Par exemple :
~/sites/mondomaine.tld/public
- On génère un certificat SSL, depuis "Lets Encrypt™ SSL".
- On crée une base de données avec son utilisateur associé (vous pouvez utiliser l'option "assistant" pour faire cette opération en une fois).
- Sur "Sélectionner une version de PHP" on activera la version 8.2 nécessaire au fonctionnement de Symfony.
Préparation du site
Pour que l'application Symfony il faut faire pointer les liens vers le fichier index.php
du dossier public. Les hébergeurs utilisent souvent Apache et il faudra ajouter un fichier de configuration .htaccess
. Cela peut se faire facilement à l'aide de symfony/apache-pack
.
composer require symfony/apache-pack
Maintenant que notre serveur est configuré, on va devoir copier le code source de notre site sur le serveur. Dans note cas nous allons cloner notre projet depuis le dépôt distant git.
cd ~/sites
git clone git@github.com:Grafikart/mondomaine.tld
Ensuite, on va modifier la configuration du site en créant un fichier .env.local
. A adapter en fonction de votre environnement.
APP_ENV=prod
DATABASE_URL="mysql://user:password@127.0.0.1:3306/monsite?serverVersion=11.2.2-MariaDB&charset=utf8mb4"
MAILER_DSN=native://default
Enfin, on installe les dépendances, et on lance les migrations pour mettre à jour notre base de données.
composer install --no-dev --optimize-autoloader
composer dump-env prod
php bin/console importmap:install
php bin/console asset-map:compile
php bin/console doctrine:migrations:migrate
APP_ENV=prod APP_DEBUG=0 php bin/console cache:clear
Et voila ! Le site devrait maintenant être visible et fonctionnel.
Automatiser avec Make
Pour automatiser le processus de déploiement d'une nouvelle version il est possible d'utiliser un fichier Makefile
.
server := "user@mondomain.ltd"
domain := "mondomain.ltd"
.PHONY: install deploy
deploy:
ssh -A $(server)$ 'cd sites/$(domain) && git pull origin main && make install'
install: vendor/autoload.php
php bin/console doctrine:migrations:migrate -n
php bin/console importmap:install
php bin/console asset-map:compile
composer dump-env prod
php bin/console cache:clear
vendor/autoload.php: composer.lock composer.json
composer install --no-dev --optimize-autoloader
touch vendor/autoload.php
Si vous souhaitez déployer une mise à jour il vous suffira de taper la commande make deploy
.
Messenger
Malheureusement, il n'est pas possible d'utiliser un superviseur pour faire fonctionner Messenger. Une solution alternative est d'utiliser une tâche récurrente qui traitera les tâches toutes les 5 minutes.
/usr/local/bin/php /home/USER/sites/mondomain.ltd/bin/console messenger:consume --time-limit=295 --memory-limit=128M async > /home/USER/sites/mondomain.ltd/var/log/cron.log 2>&1
Les informations sont disponibles sur la FAQ