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.
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
etdatabase
qui ne seront plus accessible après avoir fermé la modale.
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 :
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 :
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é :
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 :
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 :
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 :
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 :
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 :
À noter qu’il est tout à fait possible de l’éditer en ajoutant la compilation des assets par exemple :
1npm ci2npm 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 :
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 :
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-latest11 steps:12 - uses: actions/checkout@v213 14 - name: Set PHP version15 uses: shivammathur/setup-php@v216 with:17 php-version: '8.2'18 19 - name: Install composer dependencies20 run: composer install --quiet --no-ansi --no-interaction --no-scripts --no-suggest --no-progress --prefer-dist21 22 - name: Execute tests23 run: php vendor/bin/phpunit24 25 deploy:26 runs-on: ubuntu-latest27 steps:28 - uses: actions/checkout@v229 30 - name: Trigger Forge31 uses: jbrooksuk/laravel-forge-action@v1.0.432 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
A lire
Autres articles de la même catégorie
Effectuer rapidement des benchmarks dans Laravel
Voyons comment le nouveau service Benchmark de Laravel fonctionne !
Mathieu De Gracia
Les bases 3/6 : Création des vues
Découverte du moteur de vue Blade
William Suppo
Les Seeders
Créez rapidement des jeux de données grâce aux seeders !
Antoine Benevaut