zoukankan      html  css  js  c++  java
  • 配置asgi来达到能处理websocket

    在项目中使用了webscoket进行实时通讯,但是生产环境又使用了django+nginx+uwsgi的部署方式,我们都知道uwsgi并不能处理websocket请求,所以需要asgi服务器来处理websocket请求,官方推荐的asgi服务器是daphne

    1.部署daphne

    项目配置文件目录(wsgi.py同级)下创创建文件asgi.py,加入应用:

    """
    ASGI entrypoint. Configures Django and then runs the application
    defined in the ASGI_APPLICATION setting.
    """
    
    import os
    import django
    from channels.routing import get_default_application
    
    os.environ.setdefault("DJANGO_SETTINGS_MODULE", "myproject.settings")
    django.setup()
    application = get_default_application()
    启动daphne 测试是否正常运行(成功以后退出)
    daphne -p 8001 devops.asgi:application
    

    2.安装supervisor

      supervisor是由python实现的一个进程管理工具,可以确保所管理的进程一直运行,当进 
    程一点中断supervisord会自动进行重启。
    安装步骤

    yum安装:

    yum install python-setuptools
    easy_install supervisor
    或者
    yum install -y epel-release
    yum install -y supervisor  
    

    手动安装:

    wget https://pypi.python.org/packages/source/s/supervisor/supervisor-3.1.3.tar.gz
    tar zxf supervisor-3.1.3.tar.gz
    cd supervisor
    python setup.py install
    

    pip安装:

    pip install supervisor
    生成配置文件
    echo_supervisord_conf > /etc/supervisord.conf
    

    3.使用supervisor管理daphne进程

    编辑/etc/supervisord.conf加入配置

    [program:daphne]
    directory=/opt/app/devops  #项目目录
    command=daphne -b 127.0.0.1 -p 8001 --proxy-headers devops.asgi:application #启动命令
    autostart=true
    autorestart=true
    stdout_logfile=/tmp/websocket.log  #日志
    redirect_stderr=true
    启动supervisor
    supervisord -c /etc/supervisord.conf
    启动或者停止daphne
    supervisorctl start daphne
    supervisorctl stop daphne
    

    三、代理webscoket
    修改nginx配置文件

    /#####转发配置
    
    upstream wsbackend {
             server 127.0.0.1:8001;
    }
    
    /######location配置
     location /ws/deploy {
            proxy_pass http://wsbackend;
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "upgrade";
            proxy_redirect off;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Host $server_name;
      }
    
  • 相关阅读:
    Linux_服务器_09_新虚拟机下linux网络配置
    计算机_软件技巧_01_优雅地再word中插入代码
    Tomcat_总结_01_tomcat环境搭建
    gradle_学习_01_gradle安装与基本使用
    Git_学习_01_ git 安装与配置
    redis_学习_02_redis 可视化工具 Redis Desktop Manager
    redis_学习_01_redis的安装
    Idea_学习_08_常用快捷键
    Git_学习_07_ 推送修改到远端
    20180403_调bug_大地保险_jar包冲突
  • 原文地址:https://www.cnblogs.com/cizao/p/11481914.html
Copyright © 2011-2022 走看看