我正在使用一个 .env
文件,其中包含我的 Django 应用程序的配置。我有一个运行 Daphne 的 systemd
服务(类似于下面的内容)
[Unit]
Description=WebSocket Daphne Service
After=network.target
[Service]
Type=simple
User=root
WorkingDirectory=/home/django/myproject/src
ExecStart=/home/django/myproject/venv/bin/python /home/django/myproject/venv/bin/daphne -e ssl:8001:privateKey=/etc/letsencrypt/live/myproject.com/privkey.pem:certKey=/etc/letsencrypt/live/myproject.com/fullchain.pem myproject.asgi:application
Restart=on-failure
[Install]
WantedBy=multi-user.target
此外,我通过类似的机制使用 gunicorn
,该机制非常有效。但是,Daphne
没有。
当我通过 systemctl start daphne.service
运行它时,它告诉我 Django 设置配置不正确所以,我尝试像这样设置 dotenv
文件中的 asgi.py
:
dotenv.load_dotenv( os.path.join(os.path.dirname(__file__), '.env' ))
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'myproject.settings.dev')
if os.getenv('DJANGO_SETTINGS_MODULE`):
os.environ['DJANGO_SETTINGS_MODULE'] = os.getenv('DJANGO_SETTINGS_MODULE')
但这只是给了我同样的错误。任何想法如何解决这一问题?我检查了这个 response,但在 daphne.service
中设置环境变量似乎很荒谬/多余。
答案 0 :(得分:1)
问题似乎是您为 ExecStart
行指定的路径
你有:
ExecStart=/home/django/myproject/venv/bin/python ...
应该是
ExecStart=/home/django/myproject/venv/bin/daphne ...