Nginx + uwsgi + django + websocket环境部署

1.安装nginx(/export/servers/nginx/)

保证/export/servers/nginx/是nginx的安装目录
/export/servers/nginx/conf/domain/xxx应用配置文件

2.部署django环境,保证python manage.py runserver 0.0.0.0:8000能正常跑起来

1.项目名称:Python_20160906,里面有2个应用
2.一个应用名字叫app,一个叫做api
3.项目路径/export/App/DevOPS/Python_20160906
Alt text
图1
uwsgi相关的东西在下图这个配置文件中(项目settings.py文件目录下)
Alt text
图2

3.uwsgi

1.安装
pip install uwsgi
2.测试是否安装成功(uwsgi开启服务)
--home:指定virtualenv的环境目录,如果没用virtualenv的话不用指定可选
--chdir:指定django项目的根路径:/export/App/DevOPS/Python_20160906
-w 指定django项目的wsgi文件位置,就是如图2的东西(因为项目目录为/export/App/DevOPS/Python_20160906,项目目录下还有个同名目录Python_20160906,存放项目配置文件的地方,里面有个wsgi.py文件,所以写作Python_20160906.wsgi)
# uwsgi --http :8000 --home /home/siva/Env/first --chdir /export/App/DevOPS/Python_20160906 -w Siva_First.wsgi
uwsgi --http :8000 --chdir /export/App/DevOPS/Python_20160906 -w Python_20160906.wsgi
3.直接访问验证
curl http://127.0.0.1:8000/
4.写uwsgi配置文件(肯定不能手工命令起啊)
mkdir -p /export/servers/nginx/conf/uwsgi/
cd /export/servers/nginx/conf/uwsgi/
vim Python_20160906.ini

<1>project:项目名
<2>chdir:指定django项目的根路径
<3>module:对应了上面命令行启动的-w参数,指定django项目的wsgi文件位置
<4>master:是否有主进程
<5>processes:几个工作进程
<6>socket:创建的socket套接字文件位置
<7>chmod-socket:套接字权限
<8>vacuum:当服务器退出的时候自动删除unix socket文件和pid文件

[uwsgi]
project = Python_20160906

chdir = /export/App/DevOPS/%(project)
module = %(project).wsgi

master = true
processes = 5

socket = /export/App/DevOPS/%(project)/%(project).sock
chmod-socket = 664
vacuum = true
5.开启uwsgi服务(启动后会创建sock套接字文件)
uwsgi --ini /export/servers/nginx/conf/uwsgi/Python_20160906.ini &
6.变更nginx配置文件
map $http_upgrade $connection_upgrade {
        default upgrade;
        ''   close;
}
server
                {

                listen                   80;
                server_name              devops.jd.com devops.jd.local;
                access_log               /export/servers/nginx/logs/devops.jd.local/devops.jd.local_access.log main;
                error_log                /export/servers/nginx/logs/devops.jd.local/devops.jd.local_error.log warn;
                error_page 400 401 402 403 404 405 408 410 412 413 414 415 500 501 502 503 506 = http://www.jd.com/error2.aspx;
                    charset     utf-8;
    # #########################核心配置就这2行#########################################
      location / {
                include         /export/servers/nginx/conf/uwsgi_params;
                uwsgi_pass      unix:/export/App/DevOPS/Python_20160906/Python_20160906.sock;
        }
    #################################################################################
      location /static/ {
            alias   /export/App/DevOPS/Python_20160906/static/;
        }
      # websocket的匹配
      location ~ /index/websocket_demo/ {
            include     /export/servers/nginx/conf/uwsgi_params;
            uwsgi_pass      unix:/export/App/DevOPS/Python_20160906/Python_20160906.sock;
            proxy_redirect off;
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "upgrade";
    }
        location = / {
            rewrite ^ /index/ permanent;
        }
        location = /favicon.ico {
            rewrite ^ /static/image/favicon.ico permanent;
    }
        location /devops/ {
            rewrite ^/devops/(.*)$ /$1 last;
    }
        location /software/ {
            alias /export/Data/software/;
            allow all;
            autoindex on;
            autoindex_exact_size off;
            autoindex_localtime on; 
        }
}
8.重启nginx
/etc/init.d/nginx restart
9.uwsgi支持django后端的websocket(dwebsocket模块)

(1)修改django项目的settings.py,添加一条数据

WEBSOCKET_FACTORY_CLASS = 'dwebsocket.backends.uwsgi.factory.uWsgiWebSocketFactory'

(2)修改uwsgi的配置文件,添加异步选项

async = 30
ugreen = ''
http-timeout = 300

(3)重启uwsgi服务

killall uwsgi
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值