Как я могу запустить Django каналов на производстве? - PullRequest
0 голосов
/ 15 апреля 2020

Я развернул простое приложение Django на VPS, вот мое окружение:

virtualenv
gunicorn
nginx
systemd

Все работает отлично, я вижу загрузку моего шаблона. Я также добавил небольшую Django функцию каналов, но эта часть не работает; поэтому, хотя я могу использовать его на WSGI без каких-либо проблем, если я попытаюсь связаться с потребителем, я получу ошибку. Итак, мой вопрос: как я могу запустить каналы тоже в производстве?

Вот что я сейчас сделал:

/ etc / nginx / sites-available / myproject

server {
        listen 80;
        server_name 54.39.20.155;

        location = /favicon.ico { access_log off; log_not_found off; }
        location /static/ {
            root /WaitingRoomVenv/WaitingRoom/WaitingRoom/static;
        }

        location / {
            include proxy_params;
            proxy_pass http://unix:/WaitingRoomVenv/WaitingRoomEnv.sock;
        }
    }

/ etc / systemd / system / gunicorn.service

[Unit]
Description=gunicorn daemon
After=network.target

[Service]
User=root
Group=www-data
WorkingDirectory=/WaitingRoomVenv/WaitingRoom
ExecStart=/WaitingRoomVenv/WaitingRoomEnv/bin/gunicorn --access-logfile - --workers 3 --bind unix:/WaitingRoomVenv/WaitingRoomEnv.sock WR.wsgi:application

[Install]
WantedBy=multi-user.target

Для запуска gunicorn: sudo systemctl start gunicorn Для запуска nginx: sudo systemctl restart nginx

1 Ответ

1 голос
/ 15 апреля 2020

Чтобы получить доступ к channesl, вам нужно запустить через ASGI-сервер, такой как daphne (который поставляется с каналами), вместо используемого WSGI geunicorn, см .:

https://channels.readthedocs.io/en/latest/deploying.html

для запуска сервера daphne -p 8001 myproject.asgi:application, затем в вашем nginx вам необходимо прокси перейти на порт 8001

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...