在跟随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无法访问这些变量。
答案 0 :(得分:1)
让systemd单元从EnvironmentFile=
的文件中读取环境。
[Service]
EnvironmentFile=-/whatever/django_environment_settings