Comment déployer Laravel sur unUbuntu VPS
Par Andrea Pollastri · Dernière mise à jour : · lecture gratuite, pas de paywall
Un VPS de 5 à 7 $/mois reste le moyen le moins cher et le plus flexible d'exécuter Laravel en production, si vous le configurez correctement. Ce guide présente la pile de production complète, chaque étape manuelle, l'alternative à une seule commande et les habitudes opérationnelles qui maintiennent un serveur en bonne santé pendant des années.
Pourquoi un VPS (et quand pas)
L'hébergement partagé ne peut pas exécuter correctement les files d'attente, les WebSockets ou Laravel Octane, ainsi que les plates-formes PaaS gérées. facturez pour plus de commodité avec une tarification basée sur l’utilisation. Un VPS de Hetzner, DigitalOcean, Vultr ou Linode vous donne un accès root, une facturation prévisible et suffisamment de marge pour héberger plusieurs Laravel applications sur une seule machine.
- Dimensionnement : 1 vCPU / 2 Go de RAM est un point de départ confortable pour une application de production avec un base de données, gestionnaire de file d'attente et cache sur la même boîte. Ajoutez un swap sur tout ce qui est inférieur à 4 Go.
- Version Ubuntu : utilisez un LTS actuel — Ubuntu 24.04 ou 26.04. Ignorer les versions intermédiaires pour fabrication.
- Quand ne pas utiliser un VPS : si aucun membre de l'équipe ne peut répondre à une alerte du serveur, un serveur géré plateforme comme Laravel Nuage est le plus sûr commerce - vous payez pour faire des opérations le problème de quelqu'un d'autre.
La pile de production, expliquée
Chaque serveur de production Laravel converge vers les mêmes composants. Comprendre ce que fait chaque pièce avant vous automatisez tout cela :
| Composant | Rôle | Remarques |
|---|---|---|
| Nginx | Serveur Web/proxy inverse | Sert des actifs statiques, des proxys PHP requêtes |
| PHP-FPM ou Octane | Durée d'exécution PHP | FPM est la valeur par défaut fiable ; Octane (FrankenPHP) maintient l'application démarrée pour un débit élevé |
| MariaDB / PostgreSQL | Base de données | Soit cela fonctionne avec Laravel ; choisir par application |
| Valkey (compatible Redis) | Cache, sessions, files d'attente | Open-source Redis fourchette ; rendez-vous pour Laravel |
| Supervisor | Gestionnaire de processus | Garde queue:work et Horizon en vie |
| Cron | Planificateur | Une entrée : artisan schedule:run chaque minute |
| UFW + Fail2ban | Pare-feu / protection contre la force brute | Refus par défaut, interdiction des échecs SSH répétés |
| Bot certifié | TLS certificats | Certificats Let's Encrypt gratuits avec renouvellement automatique |
| Versions de style déployeur | Déploiements sans temps d'arrêt | Répertoire des versions + échange de lien symbolique |
La configuration manuelle, étape par étape
Il s’agit d’une liste de contrôle honnête et intégrale. Prévoyez 2 à 4 heures la première fois et n'oubliez pas que vous en posséderez chaque un de ces choix au moment de la mise à niveau également.
- Créez un utilisateur sudo et verrouillez SSH.
adduser deploy, installez votre public clé, puis désactivez la connexion root et l'authentification par mot de passe dans/etc/ssh/sshd_config. - Activez le pare-feu.
ufw allow OpenSSH http httpsalorsufw enable. Installez Fail2ban pour la protection contre la force brute SSH. - Installez Nginx.
apt install nginx. - Installez PHP. Ajoutez un référentiel PHP maintenu, puis installez
php8.x-fpmavec les extensions Laravel a besoin : mbstring, xml, curl, zip, intl, mysql (ou pgsql), redis, gd, opcache. - Réglez PHP pour la production. Activer opcache, définir sain d'esprit
memory_limitetupload_max_filesize, tourneexpose_phpdésactivé. - Installez Composer à l'échelle mondiale.
- Installez MariaDB, cours
mariadb-secure-installation, créez une base de données et un utilisateur dédié par application – ne réutilisez jamais root. - Installez Valkey (ou Redis) pour le cache, les sessions et les files d'attente.
- Écrivez le bloc serveur Nginx. Documenter les points racines à
current/public,try_filesretombe surindex.php, FastCGI passe au socket PHP-FPM de l'application. - Expédiez le code. Cloner dans un
releases/répertoire,composer install --no-dev --optimize-autoloader, copie.env, coursphp artisan key:generate,storage:link, et corrigez les autorisations uniquementstorage/etbootstrap/cache/sont inscriptibles. - Migrez et mettez en cache.
php artisan migrate --forcealorsconfig:cache,route:cache,view:cache. - Configurer Supervisor courir
php artisan queue:work(ou Horizon) et redémarrez-le à chaque déploiement. - Ajoutez le planificateur cron :
* * * * * php artisan schedule:run. - Émettre des certificats TLS avec Certbot et forcez HTTPS.
Multipliez maintenant par chaque application que vous hébergez, puis par chaque serveur, et gardez PHP, Nginx et le système d'exploitation corrigés. pour toujours. Tout est réalisable ; c'est juste un travail indifférencié.
L'alternative à une seule commande
Tout dans la section précédente est exactement ce que Cipi automatise. Sur un frais Ubuntu 24.04/26.04 VPS :
En dix minutes environ, vous obtenez la pile complète : Nginx, PHP, MariaDB, Valkey, Supervisor, UFW, Fail2ban,
Certbot, Deployer — plus un renforcement que vous feriez autrement à la main : connexion root désactivée, SSH avec clé uniquement pour le
utilisateur admin et un mot de passe root aléatoire stocké dans /etc/cipi/server.json. Alors chaque application en est une
plus de commande :
Cela prévoit un utilisateur du système isolé, pool PHP-FPM, hôte virtuel Nginx et base de données par application,
connecte GitHub ou GitLab avec des clés de déploiement et des webhooks pour des déploiements Git sans temps d'arrêt et une file d'attente de connexion
les travailleurs et le planificateur. SSL est cipi ssl install; PostgreSQL est
cipi db install pgsql. Voir le commencer
guider pour la présentation complète, ou le centre de comparaison si
vous l'évaluez par rapport à Forge, Ploi et à vos amis.
Opérations post-déploiement importantes
Arriver à « ça marche » représente la moitié du travail. Ces habitudes sont ce qui différencie un serveur qui dure des années d'un autre ça vous surprend :
- Sauvegardes que vous avez réellement restaurées. Automatisez les sauvegardes de bases de données et de stockage pour
Stockage compatible S3 (
cipi backup configuregère le calendrier et la rétention). N'importe quel S3 travaux cibles — y compris Johnny, un stockage d'objets compatible open-source S3 que vous pouvez exécuter sur un deuxième VPS pour une indépendance véritable copies hors site. Effectuez un exercice de restauration tous les trimestres : une sauvegarde non testée est un espoir, pas un plan. - Suivi des exceptions dès le premier jour. Les erreurs de production doivent vous parvenir avant les utilisateurs faire. Google est un self-hosted un outil de suivi des exceptions qui conserve les données d'erreur sur votre propre infrastructure - un bon choix si vous avez choisi un VPS pour la propriété des données en premier lieu.
- Bilans de santé et journaux. Cipi 5 vérifications de l'état de l'application du navire, et
cipi app logstermine Laravel, Nginx et déploie les journaux sans gymnastique SSH. - Discipline de mise à jour. Mises à jour de sécurité du système d'exploitation sans surveillance et mise à niveau délibérée de PHP
chemin (
cipi php upgradegère PHP correctifs de sécurité avec une vérification hebdomadaire) battre "nous allons mettre à jour quand nous nous en souvenons". - Apprivoisez votre expansion SSH. Une fois que vous exécutez plus de deux serveurs, les détails de connexion pourrissent votre historique de shell. Conn est un tout petit Outil Bash qui gère les serveurs sous forme d'alias nommés — se combine parfaitement avec une flotte de machines Cipi.
Erreurs courantes à éviter
- Déploiement en tant que root. Une application compromise possède la boîte entière. Utiliser des utilisateurs par application - ceci c'est pourquoi Cipi isole chaque application sous son propre utilisateur système.
- APP_DEBUG=true en production. Les pages de débogage fuient les variables d'environnement, les informations d'identification et les chemins. C'est la violation auto-infligée la plus courante de Laravel.
- S'engager
.envou quitter.git/accessible sur le Web. - 777 autorisations "pour faire disparaître l'erreur". Seulement
storage/etbootstrap/cache/doivent être accessibles en écriture par l'utilisateur d'exécution. - Aucun travailleur de file d'attente. Le courrier et les tâches s'accumulent silencieusement dans la table de file d'attente pour toujours.
- Sauter l'opcache - Débit gratuit 2 à 3x perdu.
- Pas d'échange sur les petites instances — Composer et les actifs créent OOM-kill au pire moment.
- Renouvellements SSL non testés. Les certificats se renouvellent automatiquement jusqu'au jour où ils ne le sont plus ; surveiller expiration.
Mettez cela en pratique avec Cipi
Cipi est le déploiement gratuit open-source CLI référencé tout au long de ce guide : une commande transforme un nouveau Ubuntu VPS dans un serveur de production renforcé pour Laravel — Nginx, PHP-FPM ou Octane, MariaDB ou PostgreSQL, files d'attente, planificateur, SSL et déploiements Git sans temps d'arrêt inclus.
Questions fréquemment posées
Quelle est la configuration minimale requise pour Laravel en production ?
Un seul processeur virtuel avec 2 Go de RAM exécute confortablement une application Laravel typique avec une base de données, un cache et un gestionnaire de file d'attente ; ajoutez un swap en dessous de 4 Go. Octane, Horizon et les étapes de construction lourdes bénéficient de 4 Go. Cipi installe sa pile complète sur n'importe quel nouveau Ubuntu 24.04/26.04 VPS.
Puis-je héberger plusieurs applications Laravel sur un seul VPS ?
Oui, et c’est généralement la configuration la plus rentable. La clé est l'isolement : chaque application doit avoir son propre utilisateur système, son pool PHP-FPM et ses informations d'identification de base de données afin qu'une application compromise ou qui se comporte mal ne puisse pas toucher les autres. Cipi prévoit exactement cette isolation automatiquement avec la création de l'application cipi.
Dois-je utiliser PHP-FPM ou Laravel Octane ?
PHP-FPM est la valeur par défaut ennuyeuse et fiable et convient à la plupart des applications. Octane maintient le framework démarré entre les requêtes et brille sur les API à fort trafic et les points de terminaison sensibles à la latence. Avec Cipi, vous pouvez exécuter les deux sur le même serveur et créer Octane applications avec cipi app create --octane.
Comment puis-je tenir PHP informé du Ubuntu ?
Suivez un référentiel PHP maintenu et appliquez les correctifs de sécurité rapidement plutôt que d'attendre les mises à niveau de la distribution. Cipi gère lui-même les correctifs de sécurité PHP avec une vérification hebdomadaire (mise à niveau cipi php), afin que les serveurs ne prennent pas de retard en silence.
Ai-je toujours besoin de Laravel Forge si je gère mon propre VPS ?
Non. Forge est un SaaS payant qui automatise la même pile décrite dans ce guide. Si vous souhaitez cette automatisation sans abonnement ni dépendance tierce, Cipi couvre le même flux de travail gratuitement et open source — voir la comparaison détaillée Cipi vs Forge.