在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中使用swapCase()方法转换大小写的教程
May 20 Python
python基于隐马尔可夫模型实现中文拼音输入
Apr 01 Python
Python3中的json模块使用详解
May 05 Python
Pandas 数据处理,数据清洗详解
Jul 10 Python
python paramiko利用sftp上传目录到远程的实例
Jan 03 Python
pyqt5移动鼠标显示坐标的方法
Jun 21 Python
基于python的selenium两种文件上传操作实现详解
Sep 19 Python
Python实现企业微信机器人每天定时发消息实例
Feb 25 Python
python使用re模块爬取豆瓣Top250电影
Oct 20 Python
用pip给python安装matplotlib库的详细教程
Feb 24 Python
Pytorch中使用ImageFolder读取数据集时忽略特定文件
Mar 23 Python
Python用any()函数检查字符串中的字母以及如何使用all()函数
Apr 14 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 substr 截取字符串出现乱码问题解决方法[utf8与gb2312]
2011/12/16 PHP
PHP多个文件上传到服务器实例
2014/10/29 PHP
php生成word并下载代码实例
2019/03/15 PHP
各种页面定时跳转(倒计时跳转)代码总结
2013/10/24 Javascript
JS简单的图片放大缩小的两种方法
2013/11/11 Javascript
node.js中的buffer.fill方法使用说明
2014/12/14 Javascript
javascript上下方向键控制表格行选中并高亮显示的方法
2015/02/13 Javascript
Javascript无参数和有参数类继承问题解决方法
2015/03/02 Javascript
javascript实现复选框选中属性
2015/03/25 Javascript
javascript精确统计网站访问量实例代码
2015/12/19 Javascript
简单封装js的dom查询实例代码
2016/07/08 Javascript
jQuery在ie6下无法设置select选中的解决方法详解
2016/09/20 Javascript
vue-cli如何快速构建vue项目
2017/04/26 Javascript
JavaScript实现各种排序的代码详解
2017/08/28 Javascript
Vue 滚动行为的具体使用方法
2017/09/13 Javascript
angularjs实现过滤并替换关键字小功能
2017/09/19 Javascript
Angular使用过滤器uppercase/lowercase实现字母大小写转换功能示例
2018/03/27 Javascript
Bootstrap 模态框自定义点击和关闭事件详解
2018/08/10 Javascript
微信小程序将页面按钮悬浮固定在底部的实现代码
2020/10/29 Javascript
[03:33]TI9战队采访 - Infamous
2019/08/20 DOTA
python向已存在的excel中新增表,不覆盖原数据的实例
2018/05/02 Python
selenium+python设置爬虫代理IP的方法
2018/11/29 Python
Python图像的增强处理操作示例【基于ImageEnhance类】
2019/01/03 Python
Python 分享10个PyCharm技巧
2019/07/13 Python
Python操作Jira库常用方法解析
2020/04/10 Python
Python通过递归函数输出嵌套列表元素
2020/10/15 Python
使用CSS3美化HTML表单的技巧演示
2016/05/17 HTML / CSS
爱国卫生月活动总结范文
2014/04/25 职场文书
省级青年文明号申报材料
2014/05/23 职场文书
争先创优公开承诺书
2014/08/30 职场文书
初中教师德育工作总结2015
2015/05/12 职场文书
《假如》教学反思
2016/02/17 职场文书
JavaScript事件的委托(代理)的用法示例详解
2022/02/18 Javascript
铁头也玩根德 YachtBoy YB-230......
2022/04/05 无线电
Java Lambda表达式常用的函数式接口
2022/04/07 Java/Android
python中pymysql包操作数据库方法
2022/04/19 Python