You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

生产环境下如何通过PM2安全持久化存储环境变量密钥

安全在PM2中存储环境变量并保留至重启/崩溃后

完全理解你不想在命令行里明文传递敏感密钥的顾虑——这种方式不仅容易泄露,重启后还得重新输入,太麻烦了。下面给你几个靠谱的方案,都是PM2环境下常用的安全存储密钥的方法,而且重启服务后变量都会保留:

1. 使用PM2生态系统配置文件(推荐,支持加密)

PM2官方提供的ecosystem.config.js是管理应用配置的最佳方式,还能加密敏感变量,避免明文泄露。

步骤:

  • 首先生成默认的生态系统文件:
    pm2 ecosystem
    
  • 打开生成的ecosystem.config.js,在apps数组里添加你的环境变量配置。对于敏感密钥,你可以先写在env字段里(之后再加密):
    module.exports = {
      apps : [{
        name: "my_api_server",
        script: "./my_api_server.js",
        env: {
          NODE_ENV: "production",
          MY_SECRET: "your_actual_secret_password"
        }
      }]
    }
    
  • 加密敏感变量:PM2自带加密工具,执行以下命令加密env里的敏感字段:
    pm2 encrypt ecosystem.config.js
    
    执行后会生成一个加密后的文件(默认是ecosystem.config.js.enc),同时会给你一个解密密钥,一定要妥善保管这个密钥!
  • 启动/重启服务时,用加密后的配置文件并提供解密密钥:
    pm2 start ecosystem.config.js.enc --secret <你的解密密钥>
    
    这样PM2会自动解密并加载环境变量,重启或崩溃恢复后也能正常读取。

2. 使用本地.env文件配合dotenv

如果你习惯用.env文件管理环境变量,也可以结合PM2使用,只要确保PM2启动时能加载这个文件:

步骤:

  • 安装dotenv包:
    npm install dotenv --save
    
  • 在你的Express项目根目录创建.env文件,写入密钥:
    MY_SECRET=your_actual_secret_password
    
  • 在你的my_api_server.js开头加载dotenv:
    require('dotenv').config()
    
  • 关键安全设置:把.env文件添加到.gitignore里,避免提交到版本控制;同时设置文件权限为仅自己可读:
    chmod 600 .env
    
  • 用PM2启动服务即可,PM2会正常执行你的脚本,而dotenv会自动加载.env里的变量,重启后依然有效。

3. 使用系统级环境变量

如果你的服务器只有你自己用,也可以把密钥设置为系统级环境变量,让PM2能读取到:

步骤:

  • 打开你的shell配置文件(比如~/.bashrc或/etc/profile,后者是全局生效),添加:
    export MY_SECRET="your_actual_secret_password"
    
  • 让配置生效:
    source ~/.bashrc
    
  • 如果PM2是作为守护进程运行(比如开机自启),需要确保PM2启动时能加载这个环境变量。可以执行pm2 startup生成开机启动脚本,这样系统启动时会加载shell配置里的变量,PM2就能读到了。
  • 直接用PM2启动你的服务,代码里依然可以通过process.env.MY_SECRET访问密钥。

安全小贴士

  • 不管用哪种方法,都要确保存储密钥的文件(ecosystem.config.js/.env)权限设置为600,防止其他用户读取。
  • 不要把包含明文密钥的文件提交到任何版本控制系统。
  • 用PM2加密配置文件时,解密密钥一定要存在安全的地方,比如密码管理器,不要泄露给其他人。

内容的提问来源于stack exchange,提问作者S. Schenk

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 08:02:03