Piloter son application avec Forge

Publié le 27 février 2023 par William Suppo
Couverture de l'article Piloter son application avec Forge

De l’installation du serveur au déploiement automatique, découvrons ensemble l’outil Forge.

Installation du serveur

Depuis l’url https://forge.laravel.com/servers cliquer sur le bouton Create Server.

Untitled

On sélectionne le fournisseur Custom VPS et on renseigne l’adresse IP publique du serveur IP Address, enfin, on valide le formulaire en cliquant sur Create Server.

Une nouvelle modale s’ouvre et nous indique la commande à exécuter en tant qu’utilisateur root sur le serveur.

Attention à bien sauvegarder les mots de passe sudo et database qui ne seront plus accessible après avoir fermé la modale.

Untitled

Cette commande va installer les différents services nécessaires au bon fonctionnement du serveur dont on peut constater la progression en fermant la modale précédente :

Untitled

Nous voilà dorénavant avec un serveur web fonctionnel !

Configuration de l’application

Nous allons maintenant configurer les éléments nécessaires au bon fonctionnement de notre application.

Création du site

Cette première étape va consister à configurer le nom de domaine et le dépôt associé à notre site.

Depuis la liste des sites de notre serveur remplir le formulaire suivant :

Untitled

Après que Forge ait fini d’installer notre site, nous allons le lier à un dépôt Github.

Personnellement, j’utilise toujours la méthode suivante plutôt que de connecter le service à mon compte Github ou Gitlab, cela me permet de mieux maîtriser qui à accès à quoi.

Pour cela cliquer sur Git Repository , une nouvelle section s’affiche qui vous demande, dans le cas où vous n’êtes connecté à aucun gestionnaire de dépôt, de renseigner la clé SSH publique qui autorisera Forge à récupérer votre code source, pour cela copions la clé et rendons nous sur Github, dans le menu Settings > Deploy keys > Add deploy key de notre dépôt, le formulaire suivant s’affiche, il nous reste plus qu’à coller la clé :

Untitled

Revenons ensuite sur le formulaire de configuration du dépôt sur Forge et renseigner le champ Repository ainsi que le champ Branch puis cliquer sur le bouton Install Repository :

Untitled

La dernière étape de configuration du site va consister à sécuriser les communications de celui-ci via un certificat SSL, pour cela, on se rend dans le menu SSL :

Untitled

On sélectionne Let’s Encrypt puis on valide le formulaire.

Création de la base de données

Revenons sur la page du serveur et allons dans le menu Database, dans la section Add Database : Untitled

Il suffit de renseigner le nom puis valider.

A noter que c’est une meilleure pratique de créer un utilisateur dédié par application, cela limite le périmètre d’attaque en cas d’intrusion.

Enfin, il suffit de renseigner les derniers éléments dans le fichier .env de notre application, pour cela, on retourne dans la configuration de notre site, dans le menu Environment :

Untitled

On renseigne la clé DB_DATABASE ainsi que la clé DB_USERNAME et DB_PASSWORD si nécessaire puis on valide.

Déploiement via Github Action

Dernière étape de ce tutoriel, nous allons configurer le déploiement.

Avant cela, il est important de connaître les actions qui sont exécutées lors du déploiement via Forge. On retrouve cette information dans le menu App de notre site, dans la section Deploy Script :

Untitled

À noter qu’il est tout à fait possible de l’éditer en ajoutant la compilation des assets par exemple :

1npm ci
2npm run prod

On attaque le déploiement. Toujours depuis le menu App, on récupère l’URL qui permet le déclenchement du déploiement dans la section Deployment Trigger URL :

Untitled

Avec notre précieuse URL en main, on se dirige vers Github dans le menu Settings > Secrets and variables > Actions > New repository secret de notre dépôt et on ajoute la clé TRIGGER_URL puis on copie comme valeur notre URL :

Untitled

L'ultime étape est la définition de notre Github Action, pour cela, on crée le fichier .github/workflows/deploy.yml à la racine de notre projet dont le contenu sera le suivant :

1name: Deploy app with Forge
2 
3on:
4 push:
5 branches:
6 - master
7 
8jobs:
9 test:
10 runs-on: ubuntu-latest
11 steps:
12 - uses: actions/checkout@v2
13 
14 - name: Set PHP version
15 uses: shivammathur/setup-php@v2
16 with:
17 php-version: '8.2'
18 
19 - name: Install composer dependencies
20 run: composer install --quiet --no-ansi --no-interaction --no-scripts --no-suggest --no-progress --prefer-dist
21 
22 - name: Execute tests
23 run: php vendor/bin/phpunit
24 
25 deploy:
26 runs-on: ubuntu-latest
27 steps:
28 - uses: actions/checkout@v2
29 
30 - name: Trigger Forge
31 uses: jbrooksuk/laravel-forge-action@v1.0.4
32 with:
33 trigger_url: ${{ secrets.TRIGGER_URL }}
34 needs: test

Bien entendu, le contenu est adaptable en fonction des besoins, ceci est un workflow basique qui va consister, lors d’un push sur la branche master, à l’exécution des tests et en cas de succès, à l’appel à l’URL de déploiement de Forge.

Pour aller plus loin

Nous avons ensemble exploré la base afin que notre application soit fonctionnelle. Ceci étant dit, Forge nous permet aussi de configurer les Queues, les CRON, d’envoyer des notifications lors du déploiement, etc.

Enfin, nous vous mettons à disposition le dépôt qui a permis d’élaborer ce tutoriel en bas de page.

Source : https://github.com/laravel-fr/support-deploy-forge
William Suppo avatar
William Suppo
Je mange du PHP au p'tit dej', et vous ?

A lire

Autres articles de la même catégorie