【问题标题】:Django settings secret key environment variable 502 nginxDjango设置密钥环境变量502 nginx
【发布时间】:2016-07-04 07:13:59
【问题描述】:

我有一个使用 nginx 和 gunicorn 在 Ubuntu 服务器上运行的 Django webapp。我正在尝试正确设置我的settings.py,以使用环境变量隐藏秘密信息,例如SECRET_KEY 以及API 密钥。

我尝试将export SECRET_KEY='secret_key' 放入.bashrc.profile 中,并在我的settings.py 文件中使用SECRET_KEY=os.environ['SECRET_KEY'],但这会在底部的nginx 及其版本中引发502 bad gateway错误,在重新启动 gunicorn 时。我不确定还可以尝试什么,因为我对设置服务器还很陌生。

相信这是我的 gunicorn 服务的初始化文件:

[Unit]
Description=gunicorn daemon
After=network.target

[Service]
User=myuser
Group=www-data
WorkingDirectory=/home/myuser/myproject/mysite
ExecStart=/home/myuser/myproject/mysite/myprojectenv/bin/gunicorn --workers 3 --bind unix:/home/myuser/myproject/mysite/mysite.sock mysite.wsgi:application


[Install]
WantedBy=multi-user.target

我在尝试请求站点时在 nginx 错误日志中发现了这个错误,它给出了 502 bad gateway:

*20 connect() to unix:/home/myuser/myproject/mysite/mysite.sock failed (2: No such file or directory)

【问题讨论】:

  • 你在使用谁的 .bashrc?您以什么用户身份运行 gunicorn?你是如何开始 gunicorn 的?
  • @DanielRoseman 我正在使用位于我的用户文件夹中的 .bashrc,我还使用这个用户来运行 gunicorn(它位于我项目的 virtualenv 文件夹中)。我不确定我用来启动 gunicorn 的确切方法,我只是使用“service gunicorn restart”来将更改应用到服务器。
  • 由于您使用service 启动gunicorn,这意味着您在upstart 下运行它。您应该发布您正在使用的初始化脚本。
  • 此文件通常位于何处?
  • 它在 /etc/init/ 中,但是 一定是把它放在那里了,它本身并不存在。

标签: django nginx gunicorn


【解决方案1】:

我通过将我的环境变量放在位于/etc/systemd/system/gunicorn.service 文件中解决了这个问题,因为export 仅在当前shell 中有效。

环境变量按以下格式输入到文件中:

[Service]
Environment="SECRET_KEY=secret-key-string"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-08-12
    • 1970-01-01
    • 1970-01-01
    • 2016-10-19
    • 2018-02-11
    • 1970-01-01
    • 2019-07-10
    • 1970-01-01
    相关资源
    最近更新 更多