在 ubuntu 16.04 上将 upstart 脚本转换为 django 频道的 systemd

Convert upstart script to systemd for django channel on ubuntu 16.04

我正在按照 http://masnun.rocks/2016/11/02/deploying-django-channels-using-daphne 本教程在 Nginx.In 本教程上部署 Django 频道,他们使用 upstart 脚本 运行 daphne serve.I 需要将 upstart 脚本转换为systemd 因为我正在 ubuntu 16.04.

下面是 upstart 脚本

start on runlevel [2345]
stop on runlevel [016]

respawn

script
    cd /home/ubuntu/Project/projectname
    export DJANGO_SETTINGS_MODULE="projectname.settings"
    exec daphne -b 0.0.0.0 -p 8001 projectname.asgi:channel_layer
end script

下面是我转换的systemd脚本

[Unit]
Description=daphne server script 

[Service]
Environment=DJANGO_SETTINGS_MODULE="projectname.settings"
WorkingDirectory=/home/ubuntu/Project/projectname
ExecStart=daphne -b 0.0.0.0 -p 8001 projectname.asgi:channel_layer
Restart=always

[Install]
WantedBy=multi-user.target

当我 运行 systemd 服务状态时,它给我以下错误

获取属性失败:没有这样的接口''

来自 man systemd.service ExecStart= 部分:

For each of the specified commands, the first argument must be an absolute path to an executable.

您还有其他问题,但首先您需要提供 daphne 的完整路径。您可以通过以下方式检查您的文件:

systemd-analyze verify /path/to/your/file.service