Не удается развернуть django-каналы в производстве - PullRequest
1 голос
/ 27 мая 2019

Я пытаюсь развернуть django-каналы на производстве, используя Gunicorn, Nginx, Postgres и Supervisor. Хотя я смог правильно обслуживать http-запросы, но не могу настроить конфигурацию websocket

Вот конфигурация nginx

upstream app_server {server unix:/home/datasleek/tracker/run/gunicorn.sock fail_timeout=0;}
upstream websocket {server ip-address:80;} 
server 
     {
         listen 80;
          server_name ip-address;
         location = /favicon.ico { access_log off; log_not_found off; } 
         location /static/ {  alias   /home/datasleek/tracker/staticfiles/; }    
         location /media/ {  alias   /home/datasleek/tracker/media/; }      
         client_max_body_size 4G;
         access_log /home/datasleek/tracker/logs/nginx-access.log;
         error_log /home/datasleek/tracker/logs/nginx-error.log;

        location /ws/ {
            proxy_pass http://websocket;
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "upgrade";
                        }

        location / {
                 proxy_pass http://app_server;
                 proxy_set_header X-Forwarded-For 
                 $proxy_add_x_forwarded_for;
                  proxy_set_header Host $http_host;
                  proxy_redirect off;
                     }
       }

Это конфигурация супервизора

[program:tracker]
command=/home/datasleek/trackervenv/bin/gunicorn_start
user=datasleek
autostart=true
autorestart=true
redirect_stderr=true
stdout_logfile=/home/datasleek/tracker/logs/gunicorn.log

[program:serverinterface]
directory=/home/datasleek/tracker/
command= /home/datasleek/trackervenv/bin/daphne -b 0.0.0.0 -p 80  tracker.asgi:channel_layer
autostart=true
autorestart=true
stopasgroup=true
user=datasleek
stdout_logfile = /home/datasleek/tracker/logs/daphne.log
redirect_stderr=true


#[program:tracker_asgi_daphne]
#directory=/home/datasleek/tracker/
#command=/home/datasleek/trackervenv/bin/daphne -u /home/datasleek/tracker/daphne.sock --root-path= home/datasleek/tracker tracker.asgi:channel_layer
#stdout_logfile = /home/datasleek/tracker/logs/daphne.log

[program:tracker_asgi_workers]
command=/home/datasleek/trackervenv/bin/python /home/datasleek/tracker/manage.py runworker
stdout_logfile = home/datasleek/tracker/logs/worker.log
process_name=asgi_worker%(process_num)s
numprocs=3
environment=LANG=en_US.UTF-8,LC_ALL=en_US.UTF-8 ; Set UTF-8 as default encoding
autostart=true
autorestart=true
redirect_stderr=True
stopasgroup=true

Это некоторые пути веб-сокетов, к которым я пытаюсь подключиться

  ws://ip-address/agent-presence/
 ws://ip-address/stream/

И я получаю следующую ошибку;

websocketbridge.js: 118 Сбой подключения WebSocket к 'ws: // ip-address / agent -sence /': Ошибка при рукопожатии WebSocket: Неожиданный код ответа: 404

PS: я знаю, что вопросы об этой ошибке задавались несколько раз, но я действительно беспомощен, чтобы выйти из этой проблемы.Я пытался с прошлой недели, но не смог решить эту проблему, несмотря на применение различных методов из Google и YouTube.

...