django环境变量DJANGO_SETTINGS_MODULE设置gunicorn linunx环境变量


一,windows pycharm 设置DJANGO_SETTINGS_MODULE

如果你的项目已在pycharm中运行正常,那么设置虚拟环境是非常方便的

本文章以加载redis为例:

1,举例说明:

settings.py

# 使用redis作为缓存
import os
if os.environ.get("DJANGO_REDIS_URL"):
    CACHES = {
        'default': {
            'BACKEND': 'django.core.cache.backends.redis.RedisCache',
            'LOCATION': f'redis://{os.environ.get("DJANGO_REDIS_URL")}',
            # 配置Redis密码
            "PASSWORD": "admin",
            # 配置Redis创建连接的超时时间、单位秒
            "SOCKET_CONNECT_TIMEOUT": 5,
            # Redis每次读写数据的超时时间、单位秒
            "SOCKET_TIMEOUT": 5,
        }
    }

关于 os.environ 不明白的可以自行搜索


bug提示,经测式以上方式设置,当redis设置密码时会报错

raise error

redis.exceptions.AuthenticationError: Authentication required.

还是需要验证,更新为:

'LOCATION': f'redis://:{os.environ.get("DJANGO_REDIS_PASSWORD")}@{os.environ.get("DJANGO_REDIS_URL")}',


完整代码如下:

import os
# 使用redis作为缓存
if os.environ.get("DJANGO_REDIS_URL"):
    CACHES = {
        'default': {
            'BACKEND': 'django.core.cache.backends.redis.RedisCache',
            # 配置Redis密码
            'LOCATION': f'redis://:{os.environ.get("DJANGO_REDIS_PASSWORD")}@{os.environ.get("DJANGO_REDIS_URL")}',
            # 配置Redis创建连接的超时时间、单位秒
            "SOCKET_CONNECT_TIMEOUT": 5,
            # Redis每次读写数据的超时时间、单位秒
            "SOCKET_TIMEOUT": 5,
        }
    }


2,假设我这在 settings.py 同目录下新建 dev.py

dev.py

from .settings import *
os.environ["DJANGO_REDIS_URL"] = "192.168.2.200:6379/1"

我这里是测试redis开了远程,一般不可远程访问需单独设置,

默认应该为: 127.0.0.1:6379

redis 默认 0-16 个数据库表

/1 表示 存在1号库中,不写默认为 0 号库

3,在pycharm 右上角项目名称 点击 选择 “编辑配置”

点击后面的小图标,修改 DJANGO_SETTINGS_MODULE 的值:

我这里是将原本的djangoblog.settings  修改为 djangoblog.dev 以自己的项目为准

注:djangoblog,为自己的项目名称,根据自己的项目修改。dev新建时目录不同这里修改也不同

重新启动项目,就可以直接走你的dev.py 的定义内容了


网络上查询咨料,

将 wsgi.py 中 os.environ.setdefault("DJANGO_SETTINGS_MODULE", "djangoblog.settings")

将manage.py 中 os.environ.setdefault("DJANGO_SETTINGS_MODULE", "djangoblog.settings")

这两行中的settings 也要改成 dev 但是我没有改测式发现,正常,具体按个人实际情况定吧!


二,linux centos7 中设置 DJANGO_SETTINGS_MODULE

1,前题条件已经部署好了自已的项目并且可正常运行, 远程可以正常访问;

先停止自已的项目

dev.py 设置等所有内容,和 中说的情况一样。

  • 在 linux 中运行

export DJANGO_SETTINGS_MODULE="djangoblog.dev"
  • 进入django虚拟环境

/xxx/xxxxxx/xxx_env/django-admin runserver 127.0.0.1:8000

/xxx/xxxxxx/xxx_env/python manage.py runserver 127.0.0.1:8000

127.0.0.1:8000 等设置根据自己实际情况


通过以上操作,可以测试,你的环境已经变为 你所设置的dev.py 的内容


三,DJango Gunicorn 设置环境变量

1,前题是项目配置以Gunicorn方式启动;

django gunicorn 启动命令:

gunicorn 项目名称.wsgi:application -c gunicorn_config.py

gunicorn_config.py 是配置文件

在宝塔中自动生成的为gunicorn_conf.py 名称不同

本文本这里以 宝塔python项目创建

运行方式:gunicorn  网络协议wsgi;

项目根目录中会自动生成gunicorn_conf.py

手动创建请自行搜索

2,无需创建dev.py 直接在 gunicorn_conf.py中写入

开在头位置写入:

import os
os.environ["DJANGO_REDIS_URL"] = "192.168.2.100:6379/2"

重新启动 项目即可

注:若是宝塔中创建的此项目,那么在你删除项目时 gunicorn_conf.py

此文件会随之被删除,请妥善保存!

关于gunicorn 设置环境变量更详细内容,可以参考此文

Django Gunicorn 环境变量设置|极客教程 (geek-docs.com)