温馨提示×

Node.js 配置文件在 Linux 上怎么管理

小樊
46
2026-06-30 16:38:32
栏目: 编程语言

在 Linux 上管理 Node.js 的配置文件,核心目标是安全、清晰、易维护、易部署。下面按“常见做法 → 推荐结构 → 示例 → 进阶技巧”来说明。


一、常见配置文件管理方式

✅ 1. 使用 .env + dotenv(最常用)

适合:应用配置、环境变量

安装

npm install dotenv

项目结构

project/
├── .env
├── .env.production
├── config/
│   └── index.js
├── src/
│   └── app.js

.env

PORT=3000
DB_HOST=localhost
DB_USER=root
DB_PASS=secret

config/index.js

require('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

✅ 2. 配置文件按环境拆分(推荐)

适合:多环境部署

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

✅ 3. JSON / YAML 配置文件(静态配置)

适合:复杂配置、无敏感信息

config.json

{
  "port": 3000,
  "db": {
    "host": "localhost"
  }
}
const config = require('./config.json');

⚠️ 不要放密码、token 进 JSON


✅ 4. Linux 系统级管理方式(生产推荐)

✅ 使用环境变量(最安全)

# /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

✅ 5. 敏感信息:用 Linux 安全机制

不要写进配置文件

  • ✅ 环境变量
  • ✅ systemd EnvironmentFile
  • ✅ Vault / 云 KMS
  • ✅ Docker Secrets
# envfile
DB_PASS=supersecret
# systemd
EnvironmentFile=/etc/app/env

二、推荐的 Linux 部署结构

/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.*

四、Docker + Linux 场景

environment:
  - NODE_ENV=production
  - PORT=3000
docker run -e PORT=3000 node-app

五、最佳实践总结 ✅

推荐组合

  • 普通配置:.env + dotenv
  • 多环境:config 模块
  • 生产 Linux:不用 .env,用环境变量
  • 敏感信息:systemd / Docker / Vault
  • 不要提交 .env 到 Git

记住一句话

配置和代码分离,敏感信息永远不进仓库


如果你愿意,我可以:

  • 给你一套 Node.js + Linux 生产级配置模板
  • 帮你设计 systemd + config 的完整示例
  • 针对 Docker / PM2 / K8s 场景优化

你现在的环境是 裸机 Linux / Docker / PM2 / 什么发行版?

0