使用Supervisor管理环境变量

4
我已经按照这篇博客文章的说明,设置了supervisor来运行celeryd、celerycam和gunicorn。一开始一切都很顺利。但是在第一次重启之后,什么都没有运行起来。我看到的日志如下:

未知命令:'run_gunicorn'

输入'manage.py help'查看使用方法。

我猜这是因为supervisor没有找到我的环境变量,如DJANGO_SETTINGS_MODULE、DB_HOST等。我将它们全部放在了 /etc/environment 中,但没有用。我又尝试将它们放在 /etc/supervisor/supervisord.conf 的 [supervisor] 标签下的 environment 标签中,但出现了以下错误:

启动supervisor:错误:格式字符串 '\'DEBUG\'="False", \'DJANGO_SETTINGS_MODULE\'="project.settings.production",for 'environment' is badly formatted

我的 supervisord.conf 文件在 [supervisord] 下包含以下内容:
[supervisord]
logfile=/var/log/supervisor/supervisord.log ; (main log file;default $CWD/supervisord.log)
pidfile=/var/run/supervisord.pid ; (supervisord pidfile;default supervisord.pid)
childlogdir=/var/log/supervisor            ; ('AUTO' child log dir, default $TEMP)

; the below section must remain in the config file for RPC
; (supervisorctl/web interface) to work, additional interfaces may be
; added by defining them in separate rpcinterface: sections
environment = 'DEBUG'="False",'DJANGO_SETTINGS_MODULE'="project.settings.production",

[更新 - 添加来自celery、gunicorn、celerycam的日志]

来自celeryd_err.log的日志

导入错误:找不到名为debug_toolbar的模块

导入错误:找不到名为debug_toolbar的模块

导入错误:找不到名为debug_toolbar的模块

来自celerycam_err.log的日志

导入错误:找不到名为debug_toolbar的模块

导入错误:找不到名为debug_toolbar的模块

导入错误:找不到名为debug_toolbar的模块

来自gunicorn_err.log的日志

输入“manage.py help”以获取用法。

未知命令:“run_gunicorn”

输入“manage.py help”以获取用法。

未知命令:“run_gunicorn”

输入“manage.py help”以获取用法。

未知命令:“run_gunicorn”

有什么建议可以解决这个问题吗?非常感谢您的帮助!


你的 settings 模块的目录结构是什么? - karthikr
你确定在启动服务器时仍然处于你的环境中吗? - J. Ghyllebert
@J.Ghyllebert 我实际上没有在这个服务器上使用虚拟环境。这个服务器将专门用于这个项目。 - manu
@karthikr 我正在使用twoscoops-of-django模板来完成这个项目。 - manu
在该项目模板中,链接到设置文件夹 - manu
显示剩余3条评论
1个回答

4

最好编辑您的gunicorn.conf文件。

它应该类似于:

[program:gunicorn]
...
environment=DJANGO_SETTINGS_MODULE='project.settings.production',DEBUG='False'

请注意,没有尾随逗号,'keys'未加引号,而值则加了引号。虽然如果您只使用字母数字值,则不需要引号,但最好还是这样做更安全。
为确保您的配置文件在supervisor中良好,请执行以下操作:
sudo supervisorctl
reread

处理可能输出的任何错误。

我发现重新加载supervisor是必要的,以使配置文件生效:

sudo supervisorctl
reload

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接