Nginx + uwsgi + django + websocket(dwebsocket)环境部署
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能正常跑起来,websocket能调通###
1.项目名称:Python_20160906,里面有2个应用
2.一个应用名字叫app,一个叫做api
3.项目路径/export/App/DevOPS/Python_20160906
uwsgi相关的东西在下图这个配置文件中(项目settings.py文件目录下)
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.xx.com devops.xx.local;
access_log /export/servers/nginx/logs/devops.xx.local/devops.xx.local_access.log main;
error_log /export/servers/nginx/logs/devops.xx.local/devops.xx.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
Nginx + uwsgi + django + websocket(dwebsocket)环境部署的更多相关文章
- nginx+uwsgi+django+celery+supervisord环境部署
前言 很久没更博客了,最近新写了一个小项目,后边有时间把一些心得放上来,先把环境的部署方式整理出来. 部署过程 先将环境的python升级为2.7 保证有pip 安装了nginx并配置 vim /Da ...
- Nginx+uwsgi+Django 的web应用环境部署-完整记录
Python作为当前最火爆最热门,也是最主要的Web开发语言之一,在其二十多年的历史中出现了数十种Web框架,比如Django.Tornado.Flask.Twisted.Bottle和Web.py等 ...
- 【金】nginx+uwsgi+django+python 应用架构部署
网上有很多这种配置,但就是没一个靠普的,费了好大的力气才完成架构部署.顺便记录一下. 一.部署前的说明 先安装好 python,django,uwsgi,nginx软件后.后配置运行的软件是分先后的. ...
- nginx+uwsgi+django 部署原理
python开发群里经常有同学问 nginx+uwsgi+django 着了教程部署,但是不知道他们之间怎么样的关系,于是我就google到了一个让我看起来很认同的图,大家看了也比较认同,于是就分享出 ...
- 五步教你实现使用Nginx+uWSGI+Django方法部署Django程序
Django的部署可以有很多方式,采用nginx+uwsgi的方式是其中比较常见的一种方式. 在这种方式中,我们的通常做法是,将nginx作为服务器最前端,它将接收WEB的所有请求,统一管理请求.ng ...
- debian完整部署 Nginx + uWSGI + Django
手工部署一个Django服务器真心不容易,需要安装很多东西.从头开始搭建服务器,主要是为了梳理一下后续开发中一般为碰到的平台部署.对后续问题的解决有一定帮助. 通常部署有2中方式: 一种是使用现成提供 ...
- Nginx+uWSGI+Django环境配置
通常项目会部署在虚拟环境,虚拟环境的使用可以参考这里,点击前往 当然你也可以直接部署,这里不多说. 一.安装uWSGI 1.通过pip安装 pip install uwsgi 这里只说明了一种安装方式 ...
- Nginx+uWSGI+Django部署web服务器
目录 Nginx+uWSGI+Django部署web服务器 环境说明 前言 搭建项目 Django部署 编辑luffy/luffy/settings.py 编辑luffy/app01/views.py ...
- nginx+uwsgi+django部署流程
当我们在用django开发的web项目时,开发测试过程中用到的是django自带的测试服务器,由于其安全及稳定等性能方面的局限性,django官方并不建议将测试服务器用在实际生产. nginx+uws ...
随机推荐
- JSP -java service pages
jsp的运行机制: 1客户端(请求jsp页面)------->JSP页面(转换为java源文件)------->Selvet文件(.java) (编译成相应的字节码文件也就是后缀名是.cl ...
- Java多线程优化方法及使用方式
一.多线程介绍 在编程中,我们不可逃避的会遇到多线程的编程问题,因为在大多数的业务系统中需要并发处理,如果是在并发的场景中,多线程就非常重要了.另外,我们在面试的时候,面试官通常也会问到我们关于多线程 ...
- 【Thinkphp 5】 如何引入extend拓展文件
extend/maile/cc.php 文件目录 cc文件 必须要加上命名空间,如下 cc.php文件内容如下: namespace maile; //命名空间 maile是文件夹名称 class C ...
- Django的CBV和FBV
一.FBV FBV(function base views) 就是在视图里使用函数处理请求,也是我们最开始接触和使用的方式,普通项目中最常见的方式. urls.py 1 2 3 4 urlpatter ...
- iOS-隐藏Navigation导航栏线
去除navigationBar上那条线: ///隐藏navigationBar导航栏线(直接写在UINavigationController-viewDidLoad方法里面即可) UIView *ba ...
- MySQL用户授权与权限
MySQL权限如下表 权限名字 权限说明 Context CREATE 允许创建新的数据库和表 Databases, tables, or indexes DROP 允许删除现有数据库.表和视图 Da ...
- Kitty猫基因编码
原题链接:https://www.luogu.org/problemnew/show/2562#sub 简单的递归题.记录一下前缀和然后二分求解就好. 参考代码: #include <iostr ...
- HDU 4315 Climbing the Hill [阶梯Nim]
传送门 题意: 和上题基本一样:山顶可以有多人,谁先把king放到山顶谁就胜 并不太明白 #include <iostream> #include <cstdio> #incl ...
- 【模板小程序】循环方阵构造(仿《剑指offer》循环矩阵打印)
/* 本程序说明: 输入:方阵大小n,输出:n*n的旋转方阵 举例: 当n=2时,输出: 1 2 4 3 当n=4时,输出: 1 2 3 4 12 13 14 5 11 16 15 6 10 9 8 ...
- WinSock IOCP 模型总结(附一个带缓存池的IOCP类)
前言 本文配套代码:https://github.com/TTGuoying/IOCPServer 由于篇幅原因,本文假设你已经熟悉了利用Socket进行TCP/IP编程的基本原理,并且也熟练的掌握了 ...