在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计算最大优先级队列实例
Dec 18 Python
在Linux系统上通过uWSGI配置Nginx+Python环境的教程
Dec 25 Python
Python实现在线暴力破解邮箱账号密码功能示例【测试可用】
Sep 06 Python
Python连接phoenix的方法示例
Sep 29 Python
用Python写王者荣耀刷金币脚本
Dec 21 Python
python中的句柄操作的方法示例
Jun 20 Python
Python实现的对一个数进行因式分解操作示例
Jun 27 Python
python basemap 画出经纬度并标定的实例
Jul 09 Python
Django之提交表单与前后端交互的方法
Jul 19 Python
python 按钮点击关闭窗口的实现
Mar 04 Python
matplotlib交互式数据光标mpldatacursor的实现
Feb 03 Python
python字符串常规操作大全
May 02 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
DC动画电影《黑暗正义联盟》曝预告 5月5日上线数字平台
2020/04/09 欧美动漫
Laravel框架中扩展函数、扩展自定义类的方法
2014/09/04 PHP
php的mail函数发送UTF-8编码中文邮件时标题乱码的解决办法
2015/10/20 PHP
功能强大的PHP发邮件类
2016/08/29 PHP
PHP入门教程之面向对象基本概念实例分析
2016/09/11 PHP
php + nginx项目中的权限详解
2017/05/23 PHP
利用php操作memcache缓存的基础方法示例
2017/08/02 PHP
详解PHP使用日期时间处理器Carbon人性化显示时间
2017/08/10 PHP
PHP实现微信退款的方法示例
2019/03/26 PHP
Javascript实例教程(19) 使用HoTMetal(6)
2006/12/23 Javascript
用jquery实现自定义风格的滑动条实现代码
2011/04/26 Javascript
jQuery对象数据缓存Cache原理及jQuery.data方法区别介绍
2013/04/07 Javascript
window.print打印指定div指定网页指定区域的方法
2014/08/04 Javascript
jQuery中:nth-child选择器用法实例
2014/12/31 Javascript
JavaScript判断IE版本型号
2015/07/27 Javascript
jQuery Tags Input Plugin(添加/删除标签插件)详解
2016/06/20 Javascript
使用bootstrap typeahead插件实现输入框自动补全之问题及解决办法
2016/07/07 Javascript
Webpack优化配置缩小文件搜索范围
2017/12/25 Javascript
详解使用Next.js构建服务端渲染应用
2018/07/10 Javascript
微信小程序实现日历效果
2018/12/28 Javascript
vue 封装 Adminlte3组件的实现
2020/03/18 Javascript
vue prop传值类型检验方式
2020/07/30 Javascript
javascript实现打砖块小游戏(附完整源码)
2020/09/18 Javascript
Python version 2.7 required, which was not found in the registry
2014/08/26 Python
Python中的元类编程入门指引
2015/04/15 Python
Python简单实现查找一个字符串中最长不重复子串的方法
2018/03/26 Python
python实现微信自动回复功能
2018/04/11 Python
paramiko使用tail实时获取服务器的日志输出详解
2020/12/06 Python
美国折扣网站:jClub
2017/08/07 全球购物
什么是方法的重载
2013/06/24 面试题
语文高效课堂实施方案
2014/05/03 职场文书
企业环保标语
2014/06/10 职场文书
党的群众路线教育实践活动党员个人整改措施
2014/10/27 职场文书
先进班组材料范文
2014/12/25 职场文书
北京故宫导游词
2015/01/31 职场文书
python turtle绘图命令及案例
2021/11/23 Python