在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实现同时兼容老版和新版Socket协议的一个简单WebSocket服务器
Jun 04 Python
在Windows8上的搭建Python和Django环境
Jul 03 Python
python中Flask框架简单入门实例
Mar 21 Python
python中装饰器级连的使用方法示例
Sep 29 Python
python音频处理用到的操作的示例代码
Oct 27 Python
pygame游戏之旅 按钮上添加文字的方法
Nov 21 Python
Python设计模式之命令模式原理与用法实例分析
Jan 11 Python
不到20行代码用Python做一个智能聊天机器人
Apr 19 Python
Django框架组成结构、基本概念与文件功能分析
Jul 30 Python
python脚本实现音频m4a格式转成MP3格式的实例代码
Oct 09 Python
Selenium基于PIL实现拼接滚动截图
Apr 10 Python
Python安装Bs4的多种方法
Nov 28 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
2020年4月放送决定!第2期TV动画《邪神酱飞踢》视觉图&主题曲情报公开!
2020/03/06 日漫
php查找任何页面上的所有链接的方法
2013/12/03 PHP
零基础php编程好学吗
2019/10/11 PHP
List the Codec Files on a Computer
2007/06/11 Javascript
页面元素绑定jquery toggle后元素隐藏的解决方法
2014/03/27 Javascript
js中window.open打开一个新的页面
2014/08/10 Javascript
AngularJs学习第八篇 过滤器filter创建
2016/06/08 Javascript
JavaScript简单获取系统当前时间完整示例
2016/08/02 Javascript
jquery实现瀑布流效果 jquery下拉加载新数据
2016/12/12 Javascript
Ajax实现不刷新取最新商品
2017/03/01 Javascript
基于Vue的文字跑马灯组件(npm 组件包)
2017/05/24 Javascript
js中url对象化管理分析
2017/12/29 Javascript
微信小程序中使用wxss加载图片并实现动画效果
2018/08/13 Javascript
Angular4.x Event (DOM事件和自定义事件详解)
2018/10/09 Javascript
Vue 表情包输入组件的实现代码
2019/01/21 Javascript
echarts大屏字体自适应的方法步骤
2019/07/12 Javascript
关于layui的下拉搜索框异步加载数据的解决方法
2019/09/28 Javascript
跟老齐学Python之编写类之四再论继承
2014/10/11 Python
python计算一个序列的平均值的方法
2015/07/11 Python
Python实现的摇骰子猜大小功能小游戏示例
2017/12/18 Python
Python地图绘制实操详解
2019/03/04 Python
python将字符串转变成dict格式的实现
2019/11/18 Python
windows中安装Python3.8.0的实现方法
2019/11/19 Python
Python2.6版本pip安装步骤解析
2020/08/17 Python
python cookie反爬处理的实现
2020/11/01 Python
浅谈基于Canvas的手绘风格图形库Rough.js
2018/03/19 HTML / CSS
澳大利亚旅游网站:Lastminute
2017/08/07 全球购物
Charles & Keith欧盟:新加坡时尚品牌
2019/08/01 全球购物
PHP数据运算类型都有哪些
2013/11/05 面试题
幼教简历自我评价
2014/01/28 职场文书
幼儿园毕业教师感言
2014/02/21 职场文书
给校长的建议书400字
2014/05/15 职场文书
2015年小学师德师风建设工作总结
2015/10/23 职场文书
python文本处理的方案(结巴分词并去除符号)
2021/05/26 Python
SQL实现LeetCode(175.联合两表)
2021/08/04 MySQL
Spring Boot项目如何优雅实现Excel导入与导出功能
2022/06/10 Java/Android