django - .env 无法与主管一起使用 Django
问题描述
我有一个Django 2.2项目,所有秘密都在.env文件中。
我正在使用一个库dotenv
来加载到文件.env
中的 Django 应用程序manage.py
import dotenv
def main():
# Read from .env file
env_file = os.path.join(os.path.dirname(os.path.realpath(__file__)), '.env')
dotenv.read_dotenv(env_file)
....
环境文件正在运行,并且在本地运行时加载良好。
在服务器上,我使用主管来运行具有以下配置的应用程序。
[supervisord]
[program:myapp]
command=/var/www/html/app/start_gunicorn.sh
directory=/var/www/html/app/
autostart=true
autorestart=true
stopasgroup=true
stopsignal=QUIT
logfile=/home/ubuntu/log/supervisor/supervisor.log
logfile_maxbytes=5MB
logfile_backups=10
loglevel = info
stderr_logfile=/home/ubuntu/log/supervisor/qcg-backend.err.log
stdout_logfile_maxbytes=5MB
stdout_logfile_backups=10
stdout_logfile=/home/ubuntu/log/supervisor/qcg-backend.out.log
stderr_logfile_maxbytes=5MB
stderr_logfile_backups=10
但是环境变量没有加载并且在 Django 中不起作用。
从 SSH 控制台运行以下命令正在运行。
python manage.py shell
import os
os.environ.get('DEBUG')
> True
但是在运行应用程序时,环境变量是不可访问的,也没有在应用程序中应用。
解决方案
manage.py
在生产中运行 Django 时不会调用。从dotenv docs中,它说您也应该将加载器代码添加到顶部wsgi.py
。
推荐阅读
- c++ - 关于两阶段查找和this指针
- java - 带有 ListView 的片段始终为空 Android
- java - 如何在 java 中实现 Postgresql 特定功能,hibernate 不支持(VALUES 表达式)
- vb.net - 在 VB.NET 中获取本地 IP 地址 (IPV4) - 错误“此类型已过时解析”较新版本
- php - 如何使用php从标签内的表单中突出显示字符串内容
- c - 缺陷查找器 - 2 个错误溢出缓冲区 (char,strlen)
- python - 如何获取 pandas 中附加/合并 DataFrame 中的行数?
- laravel - 在 Laravel 中使用 foreach 上传文件
- r - 如何从 github 直接检索 tsv 文件到我的 R 会话?
- c# - 在 ASP.NET MVC 应用程序中通过 USB 摄像头读取二维码