Python 如何在生产中运行Django频道?

Python 如何在生产中运行Django频道?,python,django,nginx,gunicorn,django-channels,Python,Django,Nginx,Gunicorn,Django Channels,我在VPS上部署了一个简单的Django应用程序,以下是我的环境: virtualenv gunicorn nginx systemd 一切都很完美,我可以看到我的模板加载。我还添加了一个小的Django通道特性,但这部分不起作用;因此,虽然我可以在WSGI上毫无问题地使用它,但如果我试图联系消费者,我会得到一个错误。所以我的问题是:我如何在制作中也运行频道 以下是我目前所做的: /etc/nginx/sites available/myproject server { lis

我在VPS上部署了一个简单的Django应用程序,以下是我的环境:

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启动gunicorn

要启动nginx:
sudo systemctl restart nginx

要访问Channel,您需要运行像daphne这样的ASGI服务器(附带频道),而不是您正在使用的WSGI geunicorn,请参阅:


要启动服务器
daphne-p8001 myproject.asgi:application
那么在你的nginx中你需要代理传递到端口8001

是的,但我不明白的是:我只需要编辑我当前的nginx配置(我粘贴在这里的第一块代码)还是需要创建一个新的?还有,您提到的daphne命令,是不是应该被后台监控或其他什么?这样您就可以让daphne服务器运行您的整个应用程序,即普通的HTTP视图和WS使用者。
daphne命令,是不是应该被后台监控或其他什么?
,如果您直接运行它,是的,就像您的
gunicorn
一样。但是我建议(如果您能够)将这些东西部署为docker容器。如果您不想通过daphne运行完整的服务器,那么将ws-routs的基于路由的路径添加到您的nginx中,以便将这些请求路由到daphne。好的,所以我不需要创建新的nginx文件,只需编辑新的?在这种情况下,我不明白的是我应该如何编辑当前的一个。是的,我计划将来使用docker,这只是一个学习一些部署实践的测试