.env 不与主管一起使用 Django
.env not working with Django with supervisor
我有一个 Django 2.2 项目,所有秘密都在 .env 文件中。
我正在使用库 dotenv
将 .env
加载到 manage.py
文件中的 Django 应用程序
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)
....
环境文件正常工作,运行在本地加载时加载良好。
在服务器上,我使用 supervisor 来 运行 具有以下配置的应用程序。
[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
的顶部。
我觉得放在settings.py上比较方便。无需将其添加到 manage.py 和 wsgi.py
我有一个 Django 2.2 项目,所有秘密都在 .env 文件中。
我正在使用库 dotenv
将 .env
加载到 manage.py
文件中的 Django 应用程序
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)
....
环境文件正常工作,运行在本地加载时加载良好。
在服务器上,我使用 supervisor 来 运行 具有以下配置的应用程序。
[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
的顶部。
我觉得放在settings.py上比较方便。无需将其添加到 manage.py 和 wsgi.py