Objectif
Ce guide aide à distinguer le code déployé de la configuration propre à chaque environnement. Vous apprendrez à préparer développement, préproduction et production, à stocker les secrets hors du dépôt et à vérifier qu’une modification de variable est effectivement prise en compte.
Pour un projet applicatif, reliez cette procédure à un serveur VPS et au guide pour déployer une application depuis Git.
Dans Laravel, les fichiers de configuration se trouvent dans config, tandis que les valeurs d’environnement peuvent être fournies par .env ou par des variables externes [1]. Dans Node.js, process.env expose les variables de l’environnement du processus et les fichiers .env suivent une syntaxe de paires clé-valeur définie par Node.js [2].
Prérequis
Préparez un inventaire des variables, leur type attendu, leur caractère secret et l’environnement concerné. Vous devez connaître le point d’entrée de l’application, la version de PHP ou Node.js visée, le mode de redémarrage et l’emplacement où NovaHoster permet éventuellement de définir les variables. Ces possibilités dépendent du forfait et des droits : ne supposez pas qu’un fichier .env éditable, un coffre de secrets ou un redémarrage à distance est disponible.
Procédure
- Établir une matrice de configuration. Séparez les variables publiques, les identifiants et les clés critiques. Par exemple,
APP_URLpeut être propre à chaque environnement ; une clé de chiffrement, un mot de passe de base ou un webhook doivent rester confidentiels.
| Catégorie | Exemple | Règle |
|---|---|---|
| Application | APP_ENV, APP_DEBUG, NODE_ENV | Valeur adaptée à l’environnement |
| Accès | DB_HOST, DB_DATABASE, DB_USERNAME | Ne jamais publier le secret associé |
| Services | MAIL_HOST, LOG_LEVEL, API_BASE_URL | Tester la connectivité et le format |
| Secret | APP_KEY, DB_PASSWORD, TOKEN | Stocker hors Git et limiter les droits |
- Créer un modèle documenté. Conservez un
.env.examplesans mot de passe ni jeton. Décrivez les valeurs obligatoires dans la documentation du projet. Pour Node.js, retenez que les valeurs chargées depuis un fichier.envsont interprétées comme des chaînes ;true,0et un objet JSON ne deviennent pas automatiquement un booléen, un nombre ou un objet [2]. Convertissez explicitement les valeurs dans le code.
- Configurer Laravel. Placez les valeurs dans le mécanisme autorisé par l’hébergement. Utilisez
env()dans les fichiers de configuration, puis lisez la configuration avecconfig(). Aprèsphp artisan config:cache, Laravel ne charge plus le.envpendant les requêtes et les appels directs àenv()hors des fichiers de configuration peuvent retournernull[1].
- Configurer Node.js. Lisez les variables avec
process.env.PORT,process.env.NODE_ENVou les noms propres à l’application. Pour les fichiers.env, utilisez le mécanisme disponible dans la version Node.js du serveur, par exemple l’option--env-filesi elle est supportée, ou la méthode validée par votre projet [2]. Ne placez jamais un secret dans le bundle frontend : toute valeur livrée au navigateur est considérée comme publique.
- Définir le mode de production. Pour Laravel, mettez
APP_DEBUG=falseen production : la documentation indique qu’un mode debug actif peut exposer des informations sensibles [3]. Pour Node.js, la documentation recommande d’exécuter l’application avecNODE_ENV=production, car des bibliothèques npm utilisent cette variable pour leurs réglages par défaut [4]. Cela ne remplace pas les tests de votre application.
- Vérifier les formats. Contrôlez les URL, ports, booléens, listes séparées par des virgules, certificats et chaînes multilignes. Dans un fichier
.envNode.js, les noms doivent respecter le format prévu et les valeurs contenant des espaces ou#doivent être correctement entourées de guillemets [2].
- Redémarrer ou recharger selon le runtime. Une variable est lue par un processus au démarrage ou selon le mécanisme de configuration. Après modification, utilisez l’action de redémarrage prévue par NovaHoster, si votre offre la propose. Confirmez avec le support si un worker, un cache PHP, un processus Node.js ou un service persistant doit aussi être relancé.
- Valider sans divulguer. Utilisez une commande ou une page d’administration qui indique uniquement la présence et la forme générale d’une variable, jamais sa valeur complète. Testez ensuite une requête réelle, la base, l’envoi de courriel et les appels externes dans un environnement non public avant la production.
- Documenter la rotation. Notez quelle variable a changé, pourquoi, qui l’a modifiée et quels processus ont été redémarrés. En cas de fuite, révoquez immédiatement le secret auprès du service concerné et remplacez-le dans l’Espace client, sans le recopier dans un ticket non sécurisé.
Cas d’erreur et diagnostic
| Symptôme | Causes probables | Diagnostic et correction |
|---|---|---|
config('database...') est vide après mise en production | Cache de configuration ancien ou variable absente | Vérifiez la variable dans l’interface, puis exécutez la procédure de reconstruction du cache et redémarrez selon les droits disponibles. |
Node.js lit "false" comme vrai | Toute valeur d’environnement est une chaîne | Convertissez explicitement : process.env.FEATURE === 'true'. Testez les valeurs manquantes et invalides. |
| Une clé fonctionne localement mais pas en ligne | .env local non transféré ou nom différent | Comparez l’inventaire et l’environnement réel sans afficher les secrets. Vérifiez casse, espaces et environnement ciblé. |
| Les modifications ne sont pas prises en compte | Processus non redémarré ou cache actif | Redémarrez l’application et les workers concernés, si l’offre l’autorise ; demandez confirmation à NovaHoster sinon. |
| Des informations sensibles apparaissent dans une erreur | Debug actif ou log trop verbeux | Désactivez le debug en production, réduisez le niveau de log et recherchez les secrets déjà exposés dans les journaux. |
Questions fréquentes
Puis-je committer .env.example ?
.env réel doit rester hors du dépôt, sauf mécanisme de chiffrement correctement géré [1].Faut-il utiliser NODE_ENV pour toutes les décisions métier ?
NODE_ENV au comportement d’exécution attendu par l’écosystème.Pourquoi env() retourne-t-il null dans Laravel ?
config:cache exécuté, l’application doit lire les valeurs via config() et non directement via env() dans le code applicatif [1].Une variable d’environnement est-elle toujours secrète ?
NovaHoster fournit-il un coffre de secrets ?
Quand contacter l’Espace client
Contactez NovaHoster pour confirmer l’emplacement de configuration des variables, la taille et les caractères autorisés, la nécessité d’un redémarrage, la disponibilité de workers ou de tâches planifiées, et les limites applicables à votre offre. Contactez également le support si une variable semble ignorée après reconstruction du cache ou si vous suspectez une fuite de secret. Ne joignez pas la valeur confidentielle ; transmettez seulement le nom de la variable et un exemple anonymisé.
Maillage interne suggéré
- [Déployer une application depuis Git sur NovaHoster](#guide-1--déployer-une-application-depuis-git-sur-novahoster)
- [Lire les logs et diagnostiquer une application en production](#guide-3--lire-les-logs-et-diagnostiquer-une-application-en-production)
- [Sécuriser un fichier
.env] - [Configurer une base de données]
- [Préparer une application pour la production]
Sources techniques
[1] Laravel — Configuration [2] Node.js — Environment Variables [3] Laravel — Deployment [4] Node.js — The difference between development and production
Les permissions et options visibles peuvent dépendre de votre formule ou de vos droits. Faites vérifier le contexte depuis l’Espace client.
Demander une vérification