在 Linux 上管理 Node.js 的配置文件,核心目标是安全、清晰、易维护、易部署。下面按“常见做法 → 推荐结构 → 示例 → 进阶技巧”来说明。
.env + dotenv(最常用)适合:应用配置、环境变量
npm install dotenv
project/
├── .env
├── .env.production
├── config/
│ └── index.js
├── src/
│ └── app.js
.envPORT=3000
DB_HOST=localhost
DB_USER=root
DB_PASS=secret
config/index.jsrequire('dotenv').config();
module.exports = {
port: process.env.PORT,
db: {
host: process.env.DB_HOST,
user: process.env.DB_USER,
password: process.env.DB_PASS,
}
};
✅ 生产环境 Linux 建议
# Linux 不使用 .env 文件,而用真实环境变量
export PORT=3000
export DB_HOST=prod-db.example.com
适合:多环境部署
config/
├── default.yaml
├── development.yaml
├── production.yaml
使用 config 模块:
npm install config
const config = require('config');
console.log(config.get('db.host'));
Linux 启动时:
NODE_ENV=production node app.js
适合:复杂配置、无敏感信息
config.json{
"port": 3000,
"db": {
"host": "localhost"
}
}
const config = require('./config.json');
⚠️ 不要放密码、token 进 JSON
# /etc/profile.d/app.sh
export APP_PORT=3000
export APP_DB_HOST=db.example.com
或 systemd:
# /etc/systemd/system/node-app.service
[Service]
Environment=PORT=3000
Environment=NODE_ENV=production
不要写进配置文件
EnvironmentFile# envfile
DB_PASS=supersecret
# systemd
EnvironmentFile=/etc/app/env
/opt/app/
├── src/
├── logs/
├── config/
│ └── index.js
├── .env.example
├── package.json
✅ .env.example 示例(提交到 Git):
PORT=3000
DB_HOST=
DB_USER=
DB_PASS=
chmod 600 .env
chown app:app .env
⚠️ 避免:
git add .env
在 .gitignore:
.env
config/*.local.*
environment:
- NODE_ENV=production
- PORT=3000
docker run -e PORT=3000 node-app
✅ 推荐组合
.env + dotenvconfig 模块.env,用环境变量.env 到 Git✅ 记住一句话
配置和代码分离,敏感信息永远不进仓库
如果你愿意,我可以:
你现在的环境是 裸机 Linux / Docker / PM2 / 什么发行版?