Преобразование сценария выскочки в systemd для канала django на Ubuntu 16.04

Я подписан на http://masnun.rocks/2016/11/02/deploying-django-channels-using-daphne это руководство по развертыванию канала Django на Nginx. В этом руководстве они использовали скрипт upstart для запуска daphne serve. Мне нужно преобразовать скрипт upstart в systemd, потому что я работаю на убунте 16.04.

Ниже приведен скрипт выскочки

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, он дает мне следующую ошибку

Не удалось получить свойства: нет такого интерфейса ''


person Arti Berde    schedule 23.05.2017    source источник
comment
Каково содержимое вашего settings.py? Может быть, у вас есть старый IP-адрес с другой машины?   -  person Matt Clark    schedule 23.05.2017
comment
@Matt Clark Верен ли мой файл systemd?   -  person Arti Berde    schedule 23.05.2017
comment
@ArtiBerde сделал эту строку: Environment=DJANGO_SETTINGS_MODULE=projectname.settings, работает на вас?   -  person jhc    schedule 09.10.2017
comment
@jhc Нет, я изменил настройку на [Unit] Description=daphne [Service] WorkingDirectory=/home/ubuntu/Projectname ExecStart=/usr/local/bin/daphne -b 0.0.0.0 -p 8001 Projectname.asgi:channel_layer Restart =всегда [Установить] WantedBy=multi-user.target   -  person Arti Berde    schedule 10.10.2017
comment
[Unit] Description=runworker [Service] WorkingDirectory=/home/ubuntu/Projectname ExecStart=/usr/bin/python3 manage.py runworker Restart=always [Install] WantedBy=multi-user.target и мой канал django запущен и работает правильно на nginx   -  person Arti Berde    schedule 10.10.2017
comment
@ArtiBerde Значит, строка django_settings_module на самом деле не требуется? У вас заработали веб-сокеты?   -  person jhc    schedule 10.10.2017
comment
@jhcYes.с двумя сценариями, упомянутыми в комментарии, и я дал URL-адрес daphne в своем файле nginx.   -  person Arti Berde    schedule 10.10.2017
comment
@ArtiBerde, не поможешь мне? В моем экземпляре AWS daphne и worker работают нормально (я могу выполнять HTTP-запросы и даже внутренние соединения из одного и того же домена через веб-сокеты), но как только я пытаюсь использовать веб-сокеты из внешнего клиента javascript домена, это не работает. См. - stackoverflow.com/questions /46655488/   -  person jhc    schedule 10.10.2017


Ответы (1)


От man systemd.service в разделе ExecStart=:

Для каждой из указанных команд первым аргументом должен быть абсолютный путь к исполняемому файлу.

У вас есть другие проблемы, но сначала вам нужно указать полный путь к daphne. Вы можете проверить свой файл с помощью:

systemd-analyze verify /path/to/your/file.service
person Mark Stosberg    schedule 23.05.2017