在Linux系统上通过uWSGI配置Nginx+Python环境的教程


Posted in Python onDecember 25, 2015

1.安装ubuntu有uwsgi的ppa:

add-apt-repository ppa:stevecrozz/ppa 
apt-get update 
apt-get install uwsgi

2. 用uwsgi代替mod_wsgi

Nginx 的整体配置这里不说了,假设已经明白 Nginx的基本配置,那么uwsgi就类似这么配置:

location / { 
   include uwsgi_params 
   uwsgi_pass 127.0.0.1:9090 
  }

再比如django就是:

....... 
 from django.core.handlers.wsgi import WSGIHandler 
 application = WSGIHandler()

然后运行uwsgi监听9090,其中-w后跟模块名,也就是刚才配置的myapp

uwsgi -s :9090 -w myapp

运行网站发现已经部署完成了。

3.uwsgi的参数

以上是单个project的最简单化部署,uwsgi还是有很多令人称赞的功能的,例如:

并发4个线程:

uwsgi -s :9090 -w myapp -p 4

主控制线程+4个线程:

uwsgi -s :9090 -w myapp -M -p 4

执行超过30秒的client直接放弃:

uwsgi -s :9090 -w myapp -M -p 4 -t 30

限制内存空间128M:

uwsgi -s :9090 -w myapp -M -p 4 -t 30 --limit-as 128

服务超过10000个req自动respawn:

uwsgi -s :9090 -w myapp -M -p 4 -t 30 --limit-as 128 -R 10000

后台运行等:

uwsgi -s :9090 -w myapp -M -p 4 -t 30 --limit-as 128 -R 10000 -d uwsgi.log

4.为uwsgi配置多个站点

为了让多个站点共享一个uwsgi服务,必须把uwsgi运行成虚拟站点:去掉“-w myapp”加上”?vhost”:

uwsgi -s :9090 -M -p 4 -t 30 --limit-as 128 -R 10000 -d uwsgi.log --vhost

然后必须配置virtualenv,virtualenv是Python的一个很有用的虚拟环境工具,这样安装:

apt-get install Python-setuptools
 easy_install virtualenv

然后设置一个/多个app基准环境:

virtualenv /var/www/myenv

应用环境,在此环境下安装的软件仅在此环境下有效:

source /var/www/myenv/bin/activate 
 pip install django 
 pip install mako 
 ...

最后配置nginx,注意每个站点必须单独占用一个server,同一server不同location定向到不同的应用不知为何总是失败,估计也 算是一个bug。

server { 
     listen    80; 
     server_name app1.mydomain.com; 
     location / { 
         include uwsgi_params; 
         uwsgi_pass 127.0.0.1:9090; 
         uwsgi_param UWSGI_PYHOME /var/www/myenv; 
         uwsgi_param UWSGI_SCRIPT myapp1; 
         uwsgi_param UWSGI_CHDIR /var/www/myappdir1; 
     } 
   } 
   server { 
     listen    80; 
     server_name app2.mydomain.com; 
     location / { 
         include uwsgi_params; 
         uwsgi_pass 127.0.0.1:9090; 
         uwsgi_param UWSGI_PYHOME /var/www/myenv; 
         uwsgi_param UWSGI_SCRIPT myapp2; 
         uwsgi_param UWSGI_CHDIR /var/www/myappdir2; 
     } 
   }

这样,重启nginx服务,两个站点就可以共用一个uwsgi服务了。

Python 相关文章推荐
用Python的Django框架完成视频处理任务的教程
Apr 02 Python
使用Python的Scrapy框架编写web爬虫的简单示例
Apr 17 Python
对于Python的框架中一些会话程序的管理
Apr 20 Python
python使用urllib2实现发送带cookie的请求
Apr 28 Python
python操作redis的方法
Jul 07 Python
利用Python如何制作好玩的GIF动图详解
Jul 11 Python
浅谈python3发送post请求参数为空的情况
Dec 28 Python
浅谈python多进程共享变量Value的使用tips
Jul 16 Python
18个Python脚本可加速你的编码速度(提示和技巧)
Oct 17 Python
python时间日期操作方法实例小结
Feb 06 Python
通用的Django注册功能模块实现方法
Feb 05 Python
利用Matlab绘制各类特殊图形的实例代码
Jul 16 Python
Linux系统上Nginx+Python的web.py与Django框架环境
Dec 25 #Python
Linux下将Python的Django项目部署到Apache服务器
Dec 24 #Python
在Linux系统上部署Apache+Python+Django+MySQL环境
Dec 24 #Python
在Mac OS上使用mod_wsgi连接Python与Apache服务器
Dec 24 #Python
在Mac OS上搭建Python的开发环境
Dec 24 #Python
详解Python字符串对象的实现
Dec 24 #Python
浅谈Python单向链表的实现
Dec 24 #Python
You might like
windows xp下安装pear
2006/12/02 PHP
php使用curl检测网页是否被百度收录的示例分享
2014/01/31 PHP
Java和PHP在Web开发方面对比分析
2015/03/01 PHP
select组合框option的捕捉实例代码
2008/09/30 Javascript
jquery checkbox,radio是否选中的判断代码
2010/03/20 Javascript
调试代码导致IE出错的避免方法
2014/04/04 Javascript
javascript 判断整数方法分享
2014/12/16 Javascript
原生Js实现简易烟花爆炸效果的方法
2015/03/20 Javascript
jquery实现可横向和竖向展开的动态下滑菜单效果
2015/08/24 Javascript
Windows系统下安装Node.js的步骤图文详解
2016/11/15 Javascript
Vue.js中用webpack合并打包多个组件并实现按需加载
2017/02/17 Javascript
javascript 中null和undefined区分和比较
2017/04/19 Javascript
Node.js学习之查询字符串解析querystring详解
2017/09/28 Javascript
vue组件生命周期详解
2017/11/07 Javascript
微信小程序实现的canvas合成图片功能示例
2019/05/03 Javascript
Nuxt页面级缓存的实现
2020/03/09 Javascript
python创建关联数组(字典)的方法
2015/05/04 Python
在 Python 应用中使用 MongoDB的方法
2017/01/05 Python
python中defaultdict的用法详解
2017/06/07 Python
Sanic框架请求与响应实例分析
2018/07/16 Python
Django后台管理系统的图文使用教学
2020/01/20 Python
Python实现GIF图倒放
2020/07/16 Python
浅析python中的del用法
2020/09/02 Python
HTML5网页录音和上传到服务器支持PC、Android,支持IOS微信功能
2019/04/26 HTML / CSS
制定岗位职责的原则
2013/11/08 职场文书
大学生如何写自荐信
2014/01/08 职场文书
管理失职检讨书
2014/02/12 职场文书
生产厂长岗位职责
2014/02/21 职场文书
省级优秀毕业生主要事迹
2014/05/29 职场文书
房屋鉴定委托书范本
2014/09/23 职场文书
教师学习八项规定六项禁令思想汇报
2014/09/27 职场文书
后勤工作个人总结
2015/02/28 职场文书
2015年妇幼卫生工作总结
2015/05/23 职场文书
Python3 多线程(连接池)操作MySQL插入数据
2021/06/09 Python
详解如何用Python实现感知器算法
2021/06/18 Python