【问题标题】:Django and Gunicorn not working properly through systemdDjango 和 Gunicorn 无法通过 systemd 正常工作
【发布时间】:2015-02-23 03:55:15
【问题描述】:

在关注this awesome tutorial 使用 Gunicorn、PostgreSQL 和 Nginx 安装 Django 时,我发现我无法按照建议使用 Supervisor,因为它不适用于 Python 3。

由于 systemd 是我的 Centos 7 服务器上的默认服务管理器,我创建了一个 unit file 来按照教程运行 gunicorn。但是,它失败并出现“no SECRET_KEY set”和“no PostgreSQL password supplied”等错误。 由于在 systemd 之前一切都已经正常工作,因此这些错误很奇怪。

像许多其他人一样,我将我的秘密 Django 设置保存为环境变量,以免公开存储在我的 git 存储库中。但是,this page 解释说我的 ~/.bashrc 中的环境变量将无法识别,因此我必须让 systemd 可以访问这些变量。

我在下面为任何在通过 systemd 运行 Django 时遇到同样困难的人总结了我的解决方案。

更新: 最好的解决方案允许 systemd 在不损害 Django 的情况下工作。虽然可以直接在 systemd 单元文件中声明环境变量,但是当 作为系统守护进程运行或通过 Python shell 调试时,这使得 Django 无法访问这些变量。

【问题讨论】:

    标签: django postgresql gunicorn systemd


    【解决方案1】:

    只需让 systemd 单元从带有EnvironmentFile= 的文件中读取环境。

    [Service]
    EnvironmentFile=-/whatever/django_environment_settings
    

    【讨论】:

    • 我澄清了我的答案。如果您使用 EnvironmentFile 设置,则您将 Django 限制为 only 与 systemd 一起工作。
    • 不,你没有在单元文件中指定环境变量,你指向包含它们的外部文件。这将继续适用于您的方法。
    猜你喜欢
    • 2010-10-15
    • 2016-09-12
    • 1970-01-01
    • 2020-05-05
    • 2016-07-24
    • 2013-10-21
    • 2014-03-07
    • 2013-02-25
    • 2015-01-06
    相关资源
    最近更新 更多