Laravel · Deploy+

Hébergement pour Laravel, avec déploiement à chaque push.

PHP 8.3 à 8.5, Composer, Node pour Vite, MySQL 8 et Redis, déjà prêts. Vous connectez le dépôt et chaque push publie une nouvelle version avec vos migrations, sans coupure ; si quelque chose tourne mal, vous revenez à la précédente en quelques secondes.
tuapp.com production

Deploy+v42 publiée

main · a91f3c2 · il y a 3 min

  • PHP 8.4 OPcache · Composer 2 ✓
  • MySQL 8 tuapp_prod · 214 MB ✓
  • Redis cache en mémoire ✓
  • Scheduler schedule:run · il y a 12 s
  • Files d'attente default · 0 en attente ✓

PHP 8.1 à 8.5

la version que demande votre Laravel, par projet

Deploy+ inclus

depuis GitHub, GitLab, Bitbucket ou Gitea

Redis inclus

cache dans toutes les offres ; persistant à partir d'Avanza

Rollback en quelques secondes

les dernières versions restent sur le serveur

Prérequis

Ce dont une app Laravel a besoin, sans monter de serveur.

Les prérequis de la documentation de Laravel, un par un, face à ce qu'inclut toute offre d'hébergement Hostsuar.
  • PHP 8.3 ou supérieure · Laravel 12 : 8.2 De la 5.4 à la 8.5, avec la version de votre choix pour chaque projet.
  • Extensions ctype, curl, dom, fileinfo, filter, hash, mbstring, openssl, pcre, pdo, session, tokenizer, xml Disponibles dans le sélecteur PHP, avec intl, gd, redis ou imagick.
  • Dépendances Composer 2 Dans le terminal de votre compte et dans le script de Deploy+.
  • Assets Node et npm pour Vite Node via NVM : Deploy+ l'installe d'abord si votre script l'utilise.
  • Base de données MySQL 8, PostgreSQL ou SQLite MySQL 8, et Deploy+ crée la base et écrit le .env lorsque vous connectez le dépôt.
  • Cache, files d'attente et sessions database par défaut depuis Laravel 11 Files d'attente et sessions dans votre MySQL ou, à partir d'Avanza, dans Redis persistant ; pour le cache, Redis inclus dans toutes les offres.
  • Scheduler cron chaque minute avec schedule:run Deploy+ l'ajoute à votre cron lors de la publication, avec le PHP de votre version.
  • Déploiement Git et SSH Deploy+ avec webhook signé ; SSH et Git sur votre compte, une fois activés.

Exigences selon la documentation de Laravel.

Deploy+

Le dernier kilomètre, réglé.

Votre code est déjà dans Git. Deploy+ se charge de le mettre en production comme vous le feriez sur votre propre serveur, avec le profil Laravel déjà prêt.

Déploiement

Un push, une nouvelle version, zéro seconde de coupure

Deploy+ clone le commit dans son propre dossier, exécute Composer, le build Vite, les migrations et php artisan optimize, et ne change le lien qui la publie que si tout s'est bien passé. Si une étape échoue, la version précédente reste en ligne.
webhook signé profil Laravel sans coupure

Deploy #42 · main

profil Laravel

› git clone a91f3c2 1,8 s

› composer install --no-dev --optimize-autoloader 12,4 s

› npm ci && npm run build vite 21,0 s

› php artisan migrate --force 0,9 s

› php artisan optimize config · routes · vues 1,2 s

releases/42 → current 0 s d'interruption

Le profil

Il sait où vont public, storage et le .env

Il publie depuis public, garde storage et le .env hors du code pour qu'ils survivent à chaque version et, si vous cochez la case, crée la base de données et écrit la connexion.

.env + storage

partagés entre les versions ; vous modifiez le .env depuis le panneau

Partagé entre les versions

~/deploy/tuapp/

shared/ → releases/20260905-1012/

.envmodifiable

storage/du profil

public/uploads/la vôtre

Liées dans chaque nouvelle version ; un rollback n'y touche pas non plus.

Scheduler et files d'attente

Le scheduler par cron, les files d'attente immédiatement

schedule:run chaque minute avec le PHP de votre app. À partir d'Avanza, votre worker de files d'attente ou Horizon restent en marche comme processus persistants et redémarrent tout seuls s'ils tombent. Dans toutes les offres, le scheduler peut lancer un worker qui traite la file et s'arrête une fois qu'elle est vide.
schedule:run queue:work Horizon processus persistants

Une ligne de cron

toutes les minutes

* * * * * php ~/tuapp/current/artisan schedule:run

routes/console.php

  • queue:work --stop-when-empty toutes les minutes
  • emails:resumen-diario 08:00
  • model:prune 02:00
  • prochaine exécution

Rollback

Revenir en arrière prend quelques secondes

L'historique conserve chaque déploiement avec son commit, qui l'a lancé et le journal complet. Les dernières versions restent sur le serveur : revenir à l'une d'elles ne clone rien.

5 versions

conservées par défaut ; vous décidez combien

Historique des déploiements

5 versions enregistrées
DateDéclencheurTemps
aujourd'hui 10:12 · a91f3c2 Push 38 s
hier 18:30 · e07b9d4 Manuel 41 s
hier 11:05 · 4c1d8e7 Rollback 2 s
lun. 09:48 · 4c1d8e7 Push 35 s

hier 18:30 · e07b9d4

la version reste sur le serveur

Revenir à cette version

Le script

Le script que nous recommandons pour Laravel.

Il part de celui que propose le profil Laravel et y ajoute les migrations. Il s'exécute sur la nouvelle version avant de la publier : si une commande échoue, rien n'est publié. Ensuite, Deploy+ redémarre vos workers persistants avec le nouveau code.

npm ci && npm run build
uniquement si votre app compile des assets avec Vite ; Deploy+ installe Node au préalable
migrate --force
les migrations s'exécutent avant la publication, sur la base de production
optimize
met en cache la configuration, les routes, les vues et les événements de la nouvelle version ; Deploy+ redémarre les workers persistants lors de la publication
Script de déploiement · profil Laravel
  1. 1composer install --no-dev --optimize-autoloader --no-interaction
  2. 2npm ci && npm run build
  3. 3php artisan migrate --force
  4. 4php artisan optimize
Variables, commandes bloquées et Node, dans le guide de Deploy+

Forge, VPS ou hébergement

Avez-vous besoin d'un serveur pour votre Laravel ?

Pour la plupart des apps, non. Ce qui change, c'est qui administre le serveur et quels processus vous pouvez garder actifs.
  • Le serveur

    Un VPS avec Forge
    Vous l'administrez ; Forge le configure
    Un VPS à la main
    Vous le montez et l'administrez
    Hostsuar
    Nous l'administrons
  • Correctifs et sécurité

    Un VPS avec Forge
    À votre charge
    Un VPS à la main
    À votre charge
    Hostsuar
    À notre charge, avec antivirus et isolation
  • Déploiement

    Un VPS avec Forge
    Forge, avec votre script
    Un VPS à la main
    Votre propre script
    Hostsuar
    Deploy+ inclus, avec rollback
  • Sauvegardes

    Un VPS avec Forge
    Celles que vous configurez
    Un VPS à la main
    Celles que vous configurez
    Hostsuar
    80 points de restauration inclus
  • Files d'attente et Horizon

    Un VPS avec Forge
    Oui
    Un VPS à la main
    Oui
    Hostsuar
    Oui, en marche à partir d'Avanza
  • WebSockets (Reverb)

    Un VPS avec Forge
    Oui
    Un VPS à la main
    Oui
    Hostsuar
    Avec un service compatible Pusher ; nous vous aidons à le connecter
  • Octane

    Un VPS avec Forge
    Oui
    Un VPS à la main
    Oui
    Hostsuar
    Non : PHP est servi par LiteSpeed
  • Assistance

    Un VPS avec Forge
    Celui de l'outil
    Un VPS à la main
    Le vôtre
    Hostsuar
    Des techniciens qui travaillent avec Laravel

Ce qui ne convient pas, c'est ce qui a besoin de son propre serveur en façade : Octane, car ici PHP est servi par LiteSpeed, et Reverb, un serveur qui écoute sur son propre port, ce que nous ne prenons pas en charge. Pour le temps réel, Laravel fonctionne nativement avec Pusher et les services compatibles. Les workers de files d'attente et Horizon restent en marche comme processus persistants à partir d'Avanza : administrer un serveur pour cela est un travail inutile.

Questions

Laravel sur un hébergement, sans petits caractères.

Puis-je utiliser les files d'attente de Laravel sur un hébergement ?

Oui, de deux façons. À partir de l'offre Avanza, un queue:work ou Horizon reste en marche comme processus persistant : il traite chaque tâche immédiatement et, s'il tombe, redémarre tout seul. Avanza admet 3 processus, Max 5 et Elastic 8. Dans toutes les offres, le scheduler peut lancer chaque minute un queue:work --stop-when-empty qui traite ce qui est en attente puis s'arrête. Tout est compté dans les ressources de votre offre.

Horizon, Reverb et Octane fonctionnent-ils ?

Horizon, oui, à partir de l'offre Avanza : vous le laissez en marche comme processus persistant sur un Redis persistant, les deux depuis l'espace client. Reverb, pas sur l'hébergement lui-même : c'est un serveur qui écoute sur son propre port, et nous ne prenons pas en charge ce type de programme. Pour les WebSockets, vous connectez votre app à un service compatible Pusher, comme Pusher Channels ou Ably, que Laravel prend en charge nativement, et nous vous aidons à le connecter. Octane, non : ici PHP est servi par LiteSpeed, et Octane a besoin de son propre serveur d'application (Swoole, RoadRunner ou FrankenPHP). Livewire, Inertia, Filament, Sanctum, Socialite ou Scout fonctionnent sans rien de particulier.

De quelle version de PHP ai-je besoin ?

Laravel 13 demande PHP 8.3 ou supérieur et Laravel 12, PHP 8.2. Vous disposez de la 5.4 à la 8.5 et vous la choisissez par domaine ou par dossier, de sorte qu'une app ancienne et une récente cohabitent sur le même compte. Sur un site publié avec Deploy+, la version est définie dans le .htaccess de votre dépôt, pour qu'elle voyage avec le code à chaque déploiement.

Puis-je avoir un environnement de test ?

Oui. Connectez le même dépôt deux fois : la branche main au domaine et, par exemple, develop à staging.tuapp.com, chacune avec son .env et sa base de données. Chaque push sur une branche ne déploie que sur son site.

Ai-je SSH et Composer ?

Oui. Vous activez l'accès SSH depuis les options du service dans l'espace client, et vous disposez en plus du terminal intégré de cPanel, avec Git et Composer. Et depuis Deploy+, vous pouvez lancer une commande artisan sur la version publiée sans ouvrir de terminal.

Et si je viens de Forge ou d'un autre hébergeur ?

Vous connectez le même dépôt et Deploy+ le déploie de la même façon ; ce qu'il faut apporter, c'est la base de données et ce que vous stockez dans storage. Si vous venez d'un autre fournisseur, nous vous aidons pour le transfert.

Guides associés dans notre documentation

Votre prochain push, en production.

Toutes les offres incluent Deploy+, Redis et le PHP que demande votre version de Laravel. Le tout a été conçu par des gens qui travaillent avec Laravel tous les jours ; si vous venez d'un autre fournisseur, nous vous aidons à le transférer. Offres à partir de 4,10 €/mois.