如何避免使用 Django、nginx 和 uWSGI 将环境变量放入多个位置?

2023-12-31

我正在尝试配置 nginx+uWSGI 来为我的 Django 应用程序提供服务。

当我将环境变量放入myapp_uwsgi.ini:

uid = username
gid = username
env = DJANGO_SITE_KEY="..."

它按预期工作。

但是,我的应用程序有一些管理命令 https://docs.djangoproject.com/en/dev/howto/custom-management-commands/它还应该可以访问我定义的环境变量。

如果我将环境变量设置为/home/username/.bashrc:

export DJANGO_SITE_KEY="..."

uWSGI 不加载它们。

我尝试将环境变量放入单独的文件中:

#!/bin/sh
export DJANGO_SITE_KEY="..."

然后从两者中调用它.bashrc:

. /home/username/environment

and myapp_uwsgi.ini:

exec-pre-app = . /home/username/environment

在 uWSGI 日志中我看到这一行:

running ". /home/username/environment" (pre app)...

但我的 Django 应用程序无法使用以下命令访问环境变量os.environ.

我也尝试过把export命令到preactivatevirtualenvwrapper 的钩子并使用virtualenv =uWSGI的设置,但它也不起作用(我假设钩子仅在使用virtualenvwrapper命令时执行,例如workon.


Here is 答案 https://github.com/unbit/uwsgi/issues/629#issuecomment-43303330来自 uWSGI 开发人员:

只需将它们中的每一个(每行一个)放入表单中的文本文件中

变量=值

然后在uWSGI配置中

[uwsgi]
for-readline = yourfile
  env = %(_)
endfor =

这也适用于 yml 配置文件:

  for-readline: filename
    env: %(_)
  endfor:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何避免使用 Django、nginx 和 uWSGI 将环境变量放入多个位置? 的相关文章

随机推荐