经过大量的研究和反复试验后,我在这里写这是因为我在使用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
亚历克斯