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

在Dreamhost与Passenger WSGI环境下配置Django环境变量

嘿,针对你在Dreamhost用Passenger WSGI部署Django,想把邮箱密码这类敏感信息做成不存源码的环境变量的需求,我给你整理几个实操性强的方案,都是我自己部署时用过的:

方案1:项目级配置文件(最灵活,适合单项目)

这个方法是在项目目录里单独放一个环境变量配置文件,不会被提交到源码仓库:

  • 进入你的superlists项目根目录,创建一个名为passenger_env_vars.conf的文件
  • 在文件里按变量名=值的格式添加敏感信息,比如:
    EMAIL_PASSWORD=your_real_email_password
    DJANGO_SECRET_KEY=your_secure_secret_key
    
  • 找到项目里的passenger_wsgi.py(如果没有就自己创建,Dreamhost的Passenger会默认读取这个文件),添加代码加载这个配置文件:
    如果你不想装额外依赖,就用手动读取的方式:
    import os
    
    # 定位到配置文件的路径
    env_file_path = os.path.join(os.path.dirname(__file__), 'passenger_env_vars.conf')
    if os.path.exists(env_file_path):
        with open(env_file_path, 'r') as f:
            for line in f:
                line = line.strip()
                # 跳过注释和空行
                if line and not line.startswith('#'):
                    key, value = line.split('=', 1)
                    os.environ[key] = value
    
    要是觉得手动写麻烦,也可以用python-dotenv包:先执行pip install python-dotenv,把这个包加到requirements.txt里,然后在passenger_wsgi.py里写:
    import os
    from dotenv import load_dotenv
    
    load_dotenv(os.path.join(os.path.dirname(__file__), 'passenger_env_vars.conf'))
    
  • 最后一定要把passenger_env_vars.conf添加到.gitignore里,绝对不能提交到源码仓库!

方案2:Dreamhost面板全局设置(适合多项目共享)

如果你的多个Django项目需要共享一些环境变量,或者不想在项目里加额外文件,可以直接用控制面板设置:

  • 登录Dreamhost面板,进入「Domains」->「Manage Domains」,找到你部署superlists的域名,点击「Edit」
  • 往下滑到「Passenger Settings」区域,找到「Environment Variables」输入框,按变量名=值的格式一行一个添加,比如:
    EMAIL_PASSWORD=your_password
    DJANGO_SECRET_KEY=your_key
    
  • 保存设置后,重启Passenger生效——要么点面板里的「Restart Passenger」按钮,要么通过SSH进入superlists目录执行touch tmp/restart.txt(没有tmp文件夹的话先建一个:mkdir -p tmp)

方案3:.htaccess配置(传统Apache/Passenger方式)

如果你习惯用Apache的配置方式,也可以通过.htaccess设置:

  • 在superlists根目录创建或编辑.htaccess文件,添加SetEnv指令:
    SetEnv EMAIL_PASSWORD your_actual_email_password
    SetEnv DJANGO_SECRET_KEY your_secret_key_here
    
  • 同样把.htaccess加到.gitignore里,然后重启Passenger生效

最后几个关键注意点

  • 在Django的settings.py里,直接用os.environ.get()获取环境变量就行,比如:
    import os
    
    SECRET_KEY = os.environ.get('DJANGO_SECRET_KEY')
    EMAIL_HOST_PASSWORD = os.environ.get('EMAIL_PASSWORD')
    
  • 每次修改环境变量后,必须重启Passenger,否则新的变量不会生效
  • 一定要确保所有包含敏感信息的文件都被排除在版本控制外,.gitignore里要加上这些条目:
    passenger_env_vars.conf
    .htaccess
    

内容的提问来源于stack exchange,提问作者Dwaine

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 07:17:14