Skip to main content
NeoCraft
AboutToolsExperienceTeamServicesContactBlog
ENFR
NeoCraft

Savoir-faire artisanal au service de votre transformation digitale. Création web, mobile et formations d'excellence.

FacebookLinkedInXInstagramMastodon

Services

  • Sites vitrine & institutionnels
  • Sites e-commerce
  • Développement sur mesure
  • Google Ads & Facebook Ads
  • SEO

Mentions légales

  • Politique de confidentialité

© 2026 NeoCraft. Tous droits réservés.

Propulsé par
NeoCraftTeam
Déployer une application Laravel avec Deployer et GitHub Actions
Back to Home
  1. Blog
  2. Déployer une application Laravel avec Deployer et GitHub Actions

Déployer une application Laravel avec Deployer et GitHub Actions

Hero image

Automatiser ses déploiements peut se révéler intéressant et pratique, faisant gagner du temps et limitant les erreurs humaines.

En 2018, GitHub a lancé le service Action permettant d’automatiser des processus sur sa plateforme. Grâce à un fichier de configuration placé dans son dépôt GitHub, il est possible d’exécuter une suite de tests, de déployer une app, etc.

Deployer est un outil PHP se focalisant sur le déploiement d’applications sans interruption de service, un fichier de configuration fixe les différents paramètres et une commande permet d’exécuter les opérations.

J’ai décidé de combiner ces outils pour gérer les déploiements de mon application.

Cet article se découpe en deux étapes :

  1. Configuration de Deployer en local

  2. Configuration de Deployer avec GitHub Actions

Configuration de Deployer en local

Tout d’abord, le paquet Deployer doit être installé via Composer.

composer require deployer/dist –dev

Copier

Deployer utilise un système de tâches qu’il exécute l’une après l’autre pour effectuer le déploiement. Un certain nombre de tâches sont présentes de base, d’autres peuvent être créées manuellement. Ces tâches peuvent être exécutées sur la machine locale ou sur le serveur vers lequel on souhaite déployer.

En l’occurrence, mon serveur ne propose pas d’environnement NodeJS ni la commande npm, je suis donc contraint de compiler mes assets sur ma machine locale. Pour cela, j’ai créé les deux tâches suivantes :

<?php
// recipe/recipe.php

namespace Deployer ;

// Installe les différents paquets NPM sur la machine locale
task('local:npminstall', function () {
    runLocally('npm install');
});

// Permet de compiler les assets
task('local:npmbuild', function () {
    runLocally('npm run production');
});

Copier

Maintenant le fichier deploy.php :

<?php
 
namespace Deployer;

require_once 'vendor/autoload.php';
require __DIR__ . '/recipe/recipe.php';
require 'recipe/common.php';
require 'recipe/laravel.php';
require 'contrib/rsync.php';
require 'contrib/php-fpm.php';
require 'contrib/npm.php';

set('application', 'Mon Application');
set('repository', 'git@github.com:monorganisation/mondepot.git'); // A remplacer par le lien de votre dépôt
set('composer_options', 'install --verbose --prefer-dist --no-progress --no-interaction --optimize-autoloader');
set('default_stage', 'dev');
set('ssh_multiplexing', true); // Si le script est exécuter sur Windows, il est peut-être nécessaire de passer cette valeur à false
set('keep_releases', 5);

host('ftp.mondomaine.com') // Adresse FTP fournie par mon hébergeur
    ->set('remote_user', 'moncomptessh') // Nom d’utilisateur SSH
    ->set('deploy_path', '/var/www/html/') // Chemin absolu du dossier dans lequel déployer l’application
    ->set('labels', ['stage' => 'prod']) // Catégorie du déploiement
    ->set('rsync_src', __DIR__ . DIRECTORY_SEPARATOR . 'public') // Indique d’où les fichiers compilés doivent être copiés
    ->set('rsync_dest','{{release_path}}/public'); // Indique la destination de cette copie
 
task('deploy', [
    'deploy:info',
    'deploy:setup',
    'deploy:lock',
    'deploy:release',
    'deploy:update_code', // Exécute un git clone du dépôt
    'deploy:shared',
    'deploy:vendors', // Exécute composer install
    'local:npminstall',
    'local:npmbuild',
    'local:htaccess',
    'rsync',
    'deploy:writable',
    'deploy:clear_paths',
    'deploy:symlink',
    'artisan:migrate', // Migrer la base de donnée
    'artisan:storage:link',
    'deploy:unlock',
    'deploy:cleanup',
    'deploy:success',
]);
 
after('deploy:failed', 'deploy:unlock');

Copier

Le script s’exécute en lançant la commande suivante :

./vendor/bin/dep deploy -- stage=prod

Copier

Peut-être constaterez-vous une erreur ou qu’un mot de passe vous est demandé. En effet, toutes les commandes exécutées passent par un tunnel SSH entre votre machine locale et le serveur distant. Ce tunnel requiert une authentification. Le plus pratique est d’ajouter sa clé publique SSH au serveur distant. Chaque hébergeur peut proposer une marche à suivre différente pour le faire, jetez un œil aux FAQ.

Il est maintenant temps de se connecter au serveur via un logiciel FTP comme FileZilla. En effet, il est nécessaire de configurer votre fichier .env et le .htaccess.

Voici les dossiers et fichiers que vous devriez avoir à la racine de votre hébergement. Le dossier « current » est un lien vers le dernier déploiement. Les 5 derniers déploiements se trouvent dans le dossier « releases ». Finalement, le dossier shared contient les éléments qui sont communs à toutes les releases, comme le fichier .env.

fichiers-deployer

Tout d’abord, ouvrez le fichier .htaccess et ajouter-y les lignes suivantes :

RewriteEngine on
RewriteRule ^((?!public/).*)$ current/public/$1 [L,NC]

Copier

Cela permet de faire pointer les requêtes vers la release la plus récente (« current »).

Maintenant, ouvrez le fichier « shared/.env ». Celui-ci doit être vide, remplissez-le avec les informations relatives à votre application.

Finalement, exécutez la commande suivante dans votre hébergement pour charger la configuration de votre fichier .env:

php artisan config:cache

Copier

A présent, vous devriez avoir un script de déploiement qui vous permet de mettre à jour facilement votre application depuis votre machine locale.

La deuxième partie de cet article, où l’on découvrira comment configurer Deployer avec GitHub Actions sera publiée ultérieurement.

Powered by Synscribe

Table of Contents
  • Configuration de Deployer en local
Published on 07 sept. 2025
#Technologie#Tutoriels#Laravel
Share this article
Share on XShare on LinkedInShare on Facebook
Loading...
Related Articles
Configuration de pré-développement de Laravel 12

Configuration de pré-développement de Laravel 12

Avant de commencer à coder, il est crucial de configurer correctement votre environnement de développement Laravel 12. Ce guide couvre chaque étape essentielle, avec des explications et des commandes claires, pour préparer votre projet Laravel au développement.

Read article
Guide ultime du CI/CD : fondamentaux de la mise en œuvre avancée

Guide ultime du CI/CD : fondamentaux de la mise en œuvre avancée

L'intégration continue/livraison continue ( CI/CD ) a révolutionné la façon dont les équipes logicielles créent de la valeur pour leurs utilisateurs. Finies les déploiements manuels et les casse-têtes d'intégration ; le développement moderne exige automatisation, fiabilité et rapidité. Fondamentalement, le CI/CD consiste à créer un pipeline fluide qui achemine le code de l'environnement de développement jusqu'à la production et intègre les retours en temps réel. Le CI aide les équipes à identifier les problèmes en amont, avant qu'ils ne deviennent coûteux, en garantissant que les modifications de code sont fréquemment fusionnées dans un référentiel partagé, testées et validées automatiquement. Le CD étend ce processus en automatisant les déploiements, rendant ainsi les versions prévisibles et sans stress.

Read article
MaxBurger Inventory : De mes registres papier à un système de gestion complet

MaxBurger Inventory : De mes registres papier à un système de gestion complet

Tout a commencé lorsque j'ai ouvert mon propre fast-food. Comme tout entrepreneur débutant, j'ai commencé par gérer les entrées et sorties de stock à l'ancienne : des registres papier, des calculs manuels et beaucoup de temps perdu.

Read article
Apprendre Laravel 12

Apprendre Laravel 12

Cette série a été conçue pour accompagner aussi bien les débutants que les développeurs plus expérimentés à travers toutes les fonctionnalités et nouveautés de Laravel 12. Mon objectif est de proposer un contenu pédagogique accessible, pratique et surtout gratuit. Je le veux le plus complet possible afin de permettre à n'importe qui de maîtriser ce framework incontournable de l'écosystème PHP.

Read article