Créer et configurer un fichier .env
Créer un fichier .env propre pour stocker les variables sensibles et configurer une application.
Objectif
Un fichier .env permet de stocker la configuration d'une application sans modifier directement le code.
On y place généralement :
- Le mode d'exécution.
- Le port de l'application.
- Les identifiants de base de données.
- Les clés API.
- Les URLs internes ou publiques.
Créer le fichier .env
Placez-vous dans le dossier de l'application :
cd /var/www/mon-appCréez le fichier :
nano .envExemple pour une application Node.js :
NODE_ENV=production
PORT=3000
APP_URL=https://app.exemple.fr
DATABASE_HOST=localhost
DATABASE_PORT=3306
DATABASE_NAME=mon_app
DATABASE_USER=mon_user
DATABASE_PASSWORD=mot_de_passe_solideRespecter le bon format
Chaque variable doit respecter ce format :
NOM_VARIABLE=valeurÉvitez les espaces autour du signe =.
Correct :
PORT=3000Incorrect :
PORT = 3000Si une valeur contient des espaces, utilisez des guillemets :
APP_NAME="Mon application"Protéger le fichier .env
Un fichier .env contient souvent des informations sensibles.
Limitez les permissions :
chmod 600 .envVérifiez le propriétaire :
ls -la .envSi votre application est exécutée par un utilisateur dédié :
chown mon-utilisateur:mon-utilisateur .envNe pas publier le fichier .env
Si votre projet utilise Git, ajoutez .env dans .gitignore :
nano .gitignoreAjoutez :
.env
.env.local
.env.productionVérifiez que Git ne suit pas le fichier :
git statusSi le fichier a déjà été ajouté à Git :
git rm --cached .envUtiliser .env avec Node.js
Installez dotenv si votre framework ne charge pas automatiquement le fichier :
npm install dotenvDans votre point d'entrée :
require("dotenv").config()
const port = process.env.PORT || 3000Redémarrez ensuite l'application :
pm2 restart mon-appUtiliser .env avec Docker Compose
Dans le même dossier que docker-compose.yml, créez .env :
MYSQL_ROOT_PASSWORD=mot_de_passe_solide
MYSQL_DATABASE=mon_app
MYSQL_USER=mon_user
MYSQL_PASSWORD=autre_mot_de_passeExemple dans docker-compose.yml :
services:
db:
image: mariadb:11
environment:
MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
MYSQL_DATABASE: ${MYSQL_DATABASE}
MYSQL_USER: ${MYSQL_USER}
MYSQL_PASSWORD: ${MYSQL_PASSWORD}Relancez les services :
docker compose up -dErreurs fréquentes
La variable est undefined
Vérifiez le nom exact de la variable et redémarrez l'application après modification.
Le fichier .env est ignoré
Le framework ne charge peut-être pas automatiquement .env. Installez ou configurez dotenv.
Mot de passe avec caractères spéciaux
Si la valeur contient des caractères particuliers, placez-la entre guillemets.
Conclusion
Un fichier .env bien configuré permet de séparer le code et la configuration. Il doit rester privé, lisible uniquement par l'application et exclu du dépôt Git.
Ce guide vous a aidé ?
Votre retour permet de repérer les guides à améliorer en priorité.