在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使用PIL库实现验证码图片的方法
Mar 11 Python
Python使用Pycrypto库进行RSA加密的方法详解
Jun 06 Python
python实现随机漫步算法
Aug 27 Python
python交换两个变量的值方法
Jan 12 Python
浅谈Python类中的self到底是干啥的
Nov 11 Python
Python通过VGG16模型实现图像风格转换操作详解
Jan 16 Python
Python模块future用法原理详解
Jan 20 Python
python生成13位或16位时间戳以及反向解析时间戳的实例
Mar 03 Python
利用 Python ElementTree 生成 xml的实例
Mar 06 Python
python实现人像动漫化的示例代码
May 17 Python
python实现批量提取指定文件夹下同类型文件
Apr 05 Python
python中的被动信息搜集
Apr 29 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
php使用GeoIP库实例
2014/06/27 PHP
php+memcache实现的网站在线人数统计代码
2014/07/04 PHP
php分页函数完整实例代码
2014/09/22 PHP
PHP中overload与override的区别
2017/02/13 PHP
源码分析 Laravel 重复执行同一个队列任务的原因
2017/12/25 PHP
使用Laravel中的查询构造器实现增删改查功能
2019/09/03 PHP
this[] 指的是什么内容 讨论
2007/03/24 Javascript
javascript实现的网页局布刷新效果
2008/12/01 Javascript
JS模拟面向对象全解(一、类型及传递)
2011/07/13 Javascript
Jquery事件的连接使用示例
2013/06/18 Javascript
jQuery之ajax删除详解
2014/02/27 Javascript
Bootstrap列表组学习使用
2017/02/09 Javascript
JS排序之选择排序详解
2017/04/08 Javascript
使用bootstraptable插件实现表格记录的查询、分页、排序操作
2017/08/06 Javascript
JavaScript使用Ajax上传文件的示例代码
2017/08/10 Javascript
webpack构建换肤功能的思路详解
2017/11/27 Javascript
vue插件实现v-model功能
2018/09/10 Javascript
VeeValidate 的使用场景以及配置详解
2019/01/11 Javascript
用Electron写个带界面的nodejs爬虫的实现方法
2019/01/29 NodeJs
vue响应式更新机制及不使用框架实现简单的数据双向绑定问题
2019/06/27 Javascript
js计算最大公约数和最小公倍数代码实例
2019/09/11 Javascript
Layui Form 自定义验证的实例代码
2019/09/14 Javascript
Typescript的三种运行方式(小结)
2019/09/18 Javascript
[53:10]2018DOTA2亚洲邀请赛 4.6 淘汰赛 VP vs VG 第一场
2018/04/11 DOTA
Python 网络编程起步(Socket发送消息)
2008/09/06 Python
Python的Django中django-userena组件的简单使用教程
2015/05/30 Python
python入门前的第一课 python怎样入门
2018/03/06 Python
在pycharm中debug 实时查看数据操作(交互式)
2020/06/09 Python
HTML5之SVG 2D入门2—图形绘制(基本形状)介绍及使用
2013/01/30 HTML / CSS
出国留学介绍信
2014/01/13 职场文书
网络营销策划方案
2014/06/04 职场文书
纪检干部先进事迹材料
2014/08/23 职场文书
2015年中秋节活动总结
2015/03/23 职场文书
诚信教育主题班会
2015/08/13 职场文书
公司团队口号霸气押韵
2015/12/24 职场文书
python脚本框架webpy模板控制结构
2021/11/20 Python