· 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.

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.

Back to Blog