Django和Gunicorn通过systemd无法正常工作

时间:2015-02-23 03:55:15

标签: django postgresql gunicorn systemd

在跟随this awesome tutorial安装Django与Gunicorn,PostgreSQL和Nginx时,我发现我无法按照建议使用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无法访问这些变量。

1 个答案:

答案 0 :(得分:1)

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

[Service]
EnvironmentFile=-/whatever/django_environment_settings