在Ubuntu 16.04上部署频道-WebSocket错误

时间:2018-08-03 17:49:03

标签: django digital-ocean django-channels dev-to-production daphne

经过大量的研究和反复试验后,我在这里写这是因为我在使用Ubuntu 16.04将带有Channels的dango应用程序部署到Digital Ocean时遇到问题。

很抱歉,如果下面有错误,这里是一个初学者:D

我在开发中一切正常,包括带有Channel的websocket。在拥有频道功能之前,我使用了以下指南来设置服务器:https://www.digitalocean.com/community/tutorials/how-to-set-up-django-with-postgres-nginx-and-gunicorn-on-ubuntu-16-04,并且一切正常。

现在,我正在尝试使我的新版本与频道一起工作,但我似乎做不到!

我的计划是在systemctl中创建Daphne,并使其在后台运行(根据Digital Ocean指南,在我现有的Nginx wsgi配置之上)。在进行此操作之前,为了测试Daphne,我尝试通过以下三个命令(分别尝试一次)在shell中运行它:

daphne myproject.asgi:application
daphne -p 8001 myproject.asgi:application
daphne -b 0.0.0.0 -p 8001 myproject.asgi:application

它们全部运行,但是当我进入连接到websocket的网页时,在JavaScript控制台中出现以下错误:

  

失败:WebSocket握手期间出错:意外的响应代码:200

我认为这是防火墙问题,因此我打开了端口,但没有运气。

在开发中一切正常,所以我确定我在部署中做错了什么,但是我不确定是什么!任何帮助将不胜感激。

编辑:

有关Nginx配置的一些其他信息:

server {
server_name ___;


location = /favicon.ico { access_log off; log_not_found off; }
location /staticfiles/ {
    root /home/alex/projects/my-project;
}

location / {
    include proxy_params;
    proxy_pass http://unix:/home/alex/projects/my-project/project.sock;
}

## CertBot SSL code 

server {
## CertBot SSL code 

listen 80;
server_name ___;
return 404; # managed by Certbot

}

还有金枪鱼档案

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

[Service]
User=alex
Group=www-data
WorkingDirectory=/home/alex/projects/my-project
ExecStart=/home/alexandre/projects/my_env/bin/gunicorn --access-logfile - --workers 3 --bind unix:/home/alexandre/projects/my-project/project.sock project.wsgi:application

[Install]
WantedBy=multi-user.target

亚历克斯

0 个答案:

没有答案