zoukankan      html  css  js  c++  java
  • django+uwsgi+daphne+supervisor生产环境部署

     

     

    一、前言

      在上一篇文章中项目中使用了webscoket进行实时通讯,但是生产环境又使用了django+nginx+uwsgi的部署方式,我们都知道uwsgi并不能处理websocket请求,所以需要asgi服务器来处理websocket请求,官方推荐的asgi服务器是daphne,下面将介绍详细的部署步骤。

    二、软件安装

      之前已经写过一一篇关于django+nginx+uwsgi的部署方式地址:https://www.cnblogs.com/wdliu/p/8932816.html,这里就不多说了,以下介绍daphne、supervisor、以及nginx代理websocket的安装配置。

    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;
      }
     
     
     
  • 相关阅读:
    二叉树的镜像
    Prototype 模式
    假如编程语言在一起聚餐
    从零开始——Ubuntu系统安装LAMP
    从零开始——Ubuntu系统配置与软件安装
    从零开始——制作Ubuntu系统U盘启动
    apt-get upgrade failure with libc
    再生龙Clonezilla备份Ubuntu系统
    Ubuntu上apache多端口配置虚拟主机的方法
    bash & Makefile & 正则表达式学习
  • 原文地址:https://www.cnblogs.com/feifeifeisir/p/13743852.html
Copyright © 2011-2022 走看看