【发布时间】:2018-03-25 22:01:09
【问题描述】:
我正在使用 gunicorn 和 nginx 在 ubuntu 机器上部署一个 Django 项目,遵循 this tutorial 来做。
我有一个看起来像这样的 gunicorn 服务,类似于教程中的服务:
[Unit]
Description=gunicorn daemon
After=network.target
[Service]
User=ubuntu
Group=www-data
WorkingDirectory=/home/ubuntu/project/mysite
EnvironmentFile=/home/ubuntu/.virtualenvs/projectenv/bin/postactivate
ExecStart=/home/ubuntu/.virtualenvs/projectenv/bin/gunicorn --access-logfile - --workers 10 --bind unix:/home/ubuntu/project/mysite.sock mysite.wsgi:application
[Install]
WantedBy=multi-user.target
据我了解,gunicorn 服务是在一个全新的环境而不是我的项目的虚拟环境中运行的,因此我需要找到另一种方法来传递环境变量。我找到了this page,上面说我可以将 EnvironmentFile 添加到我的服务文件中。
我将环境文件定向到我的 virtualenv 的 postactivate 脚本,它看起来像这样:
#!/bin/bash
# This hook is sourced after this virtualenv is activated.
export DJANGO_DEBUG=False
...
不出所料,这不起作用。
此 EnvironmentFile 的正确格式是什么?
【问题讨论】:
-
环境文件用于环境变量
-
请注意,这完全是关于 systemd 的问题;它与 Django、Python 或 gunicorn 无关。
标签: python django ubuntu environment-variables gunicorn