· 5 min read
Déployer vos applications Symfony avec Ansible sur un Cloudways
Découvrez comment déployer vos applications Symfony simplement avec Ansible sur Cloudways.
Publication en partenariat commercial avec Cloudways.
Introduction
Mettre une application Symfony en production est un processus qui peut impressionner si vous n’êtes pas familier avec la gestion de l’infrastructure.
Vous avez besoin de déployer vos applications en production, mais vous vous sentez bloqué•e sur la gestion de votre infrastructure, dans cet article, je vais vous expliquer comment déployer vos applications Symfony simplement avec Ansible sur Cloudways en quelques minutes.
La promesse de Cloudways est de vous offrir une solution simple et rapide pour déployer vos applications Symfony sans avoir à gérer la configuration de votre serveur. En gros, Cloudways vous offre une solution packagée tout en vous offrant la possibilité de personnaliser la configuration de votre serveur.
Pré-requis
- Pour cette démo, nous allons utiliser l’outil Ansible pour automatiser le déploiement de notre application Symfony sur Cloudways, il faut donc installer Ansible sur votre machine. Pour installer Ansible, vous pouvez suivre les instructions de la documentation officielle.
- Un compte Cloudways.
Commander un serveur chez Cloudways
Dans votre console Cloudways, rendez-vous dans le menu “My Servers” et cliquez sur “Launch Now”.
Pour la démo nous choisirons la configuration suivante :
- PHP : Custom App
- Application Name: Demo
- Server Name: Demo
- Project Name: Demo
- Server provider: DigitalOcean
- Server Size: 4 GB RAM, 80 GB NVMe Disk, 4 TB Transfer, 2 Core Processor
- Location: London
En quelques minutes votre serveur va être créé et vous devriez pouvoir vous connecter à l’interface de gestion de votre serveur Cloudways.
Réglage de votre serveur Cloudways
Ajouter votre clé SSH
Pour pouvoir se connecter à votre serveur Cloudways, vous devez ajouter votre clé SSH public à l’interface de gestion de votre serveur Cloudways (je vous invite à ne pas utiliser l’option par login/mot de passe).
- Copier-coller votre clé SSH public dans votre terminal. (Souvent elle ce sera disponible dans le fichier
~/.ssh/id_rsa.pub
)
Et tester la connexion SSH :
ssh master_username@123.123.123.123
Si vous avez bien configuré votre clé SSH, vous devriez être connecté à votre serveur Cloudways ✨ !
Changer la version de PHP
Tant qu’a déployer une application Symfony, autant profiter de la dernière version de PHP disponible sur Cloudways.
Changer le webroot
et désactiver Varnish
Le webroot
est le répertoire qui sera serci par le serveur web, il est donc important de configurer le webroot
avec le repertoire public
de votre projet Symfony.
Au passage, on désactive Varnish (qui est un cache HTTP), la configuration de base etant un peu capricieuse.
Une Application Symfony de démo
Nous allons créer une application Symfony ultra minimaliste pour tester notre serveur Cloudways.
- Créons un nouveau projet Symfony :
symfony new Demo
cd Demo
symfony serve -d
- Installons les packages nécessaires :
composer require symfony/maker-bundle --dev
- Créons un contrôleur :
symfony console make:controller Demo
- Modifiez le contrôleur pour qu’il “réponde” à la route ”/” et affiche un message json :
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\Routing\Attribute\Route;
class DemoController extends AbstractController
{
#[Route('/', name: 'app_demo')]
public function index(): JsonResponse
{
return $this->json([
'message' => 'Ceci est une API Symfony 🚀',
]);
}
}
Configurer Ansible et déployer notre application Symfony
Voila le moment que vous attendez ! Vous avez tout prêt pour déployer votre application Symfony sur Cloudways, et vous allez voir c’est HYPER simple !
Création des fichiers Ansible
- Créons un fichier
playbook.yml
à la racine de notre projet Symfony. Ce fichier va contenir toutes les tâches que nous allons exécuter :- Vider le contenu du répertoire de destination
- Copier le projet actuel sans les dossier et fichiers
vendor
,.git
,var
et.env
- Exécuter
composer install
Dans
dest_dir
, vous devez remplacer{webroot}
par le nom du repertoire de votre application chez Cloudways.
---
- name: Déployer le projet sur le serveur distant
hosts: cloudways
vars:
dest_dir: /home/master/applications/{webroot}/public_html
tasks:
- name: Vider le contenu du répertoire de destination
ansible.builtin.command:
cmd: rm -rf {{ dest_dir }}/*
- name: Copier le projet actuel
synchronize:
src: "./"
dest: "{{ dest_dir }}"
rsync_opts:
- "--exclude=vendor"
- "--exclude=.git"
- "--exclude=var"
- "--no-times"
- "--no-p"
- name: Exécuter composer install
ansible.builtin.command:
cmd: composer install
chdir: "{{ dest_dir }}"
- Créons un fichier
hosts.yaml
à la racine de notre projet Symfony. Ce fichier va contenir les informations de connexion à notre serveur Cloudways :
Remplacer
master_username
par le nom de votre utilisateur Cloudways,123.123.123.123
par l’adresse IP de votre serveur Cloudways.
all:
hosts:
cloudways:
ansible_host: 123.123.123.123
ansible_user: master_username
ansible_ssh_private_key_file: ~/.ssh/id_rsa
- Et pour nous simplifier la vie nous nous créons un fichier
Makefile
pour lancer les commandes encore plus simplement :
deploy:
ansible-playbook -i hosts.yaml playbook.yml
Déployer notre application Symfony sur Cloudways
Le grand moment est arrivé, nous pouvons déployer notre application Symfony sur Cloudways !
Et quand je vous avez dit que c’était HYPER simple, c’est vrai, la preuve, vous n’avez plus qu’à lancer la commande suivante :
make deploy
Et voilà, votre application Symfony est déployée sur Cloudways 💫 !
Conclusion
J’espère que cette démo vous a permis d’apercevoir comment déployer une application Symfony simplement avec Ansible sur Cloudways.
Evidement, pour le cadre de la démo nous n’avons pas abordé un certain nombre de sujets pour rendre l’explications simples et compréhensibles.
Nous avons vu comment déployer une application Symfony sur Cloudways, et nous avons vu comment configurer Ansible pour automatiser le déploiement de notre application Symfony. C’est une solution élégante je trouve et c’est une bonne solution pour débuter dans l’automatisation de la mise en production de vos applications Symfony.
Publication en partenariat commercial avec Cloudways.