在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 相关文章推荐
python3使用requests模块爬取页面内容的实战演练
Sep 25 Python
浅谈python中字典append 到list 后值的改变问题
May 04 Python
python 统计列表中不同元素的数量方法
Jun 29 Python
PyCharm设置SSH远程调试的方法
Jul 17 Python
python 实现视频流下载保存MP4的方法
Jan 09 Python
opencv python统计及绘制直方图的方法
Jan 21 Python
Python学习笔记之For循环用法详解
Aug 14 Python
利用python实现冒泡排序算法实例代码
Dec 01 Python
python 实现图片上传接口开发 并生成可以访问的图片url
Dec 18 Python
python实现简单学生信息管理系统
Apr 09 Python
Python3 使用pip安装git并获取Yahoo金融数据的操作
Apr 08 Python
Python实现视频中添加音频工具详解
Dec 06 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  单例模式详细介绍及实现源码
2016/11/05 PHP
php strftime函数获取日期时间(switch用法)
2018/05/16 PHP
游戏人文件夹程序 ver 3.0
2006/07/14 Javascript
IE下Ajax缓存问题的快速解决方法(get方式)
2014/01/09 Javascript
AngularJS向后端ASP.NET API控制器上传文件
2016/02/03 Javascript
浅述Javascript的外部对象
2016/12/07 Javascript
Vue.js中兄弟组件之间互相传值实例
2017/06/01 Javascript
用React实现一个完整的TodoList的示例代码
2017/10/30 Javascript
Hexo已经看腻了,来手把手教你使用VuePress搭建个人博客
2018/04/26 Javascript
详解webpack自定义loader初探
2018/08/29 Javascript
解决在vue项目中webpack打包后字体不生效的问题
2018/09/01 Javascript
微信小程序实现搜索指定景点周边美食、酒店
2019/05/18 Javascript
JavaScript中判断为整数的多种方式及保留两位小数的方法
2019/09/09 Javascript
使用vue制作滑动标签
2019/09/21 Javascript
[51:39]DOTA2-DPC中国联赛 正赛 Magma vs LBZS BO3 第二场 2月7日
2021/03/11 DOTA
Python多线程同步Lock、RLock、Semaphore、Event实例
2014/11/21 Python
python监控进程脚本
2018/04/12 Python
python模块smtplib学习
2018/05/22 Python
使用 Python 处理 JSON 格式的数据
2019/07/22 Python
Django实现auth模块下的登录注册与注销功能
2019/10/10 Python
Python lxml模块的基本使用方法分析
2019/12/21 Python
Python timeit模块的使用实践
2020/01/13 Python
python实现快递价格查询系统
2020/03/03 Python
jenkins+python自动化测试持续集成教程
2020/05/12 Python
CSS3美化表单控件全集
2016/06/29 HTML / CSS
欧洲最大的婴幼儿服装及内衣公司:Petit Bateau(小帆船)
2016/08/16 全球购物
法国太阳镜店:Sunglasses Shop
2016/08/27 全球购物
商场拾金不昧表扬信
2014/01/13 职场文书
2014两会学习心得:榜样精神伴我行
2014/03/17 职场文书
企业文明单位申报材料
2014/05/16 职场文书
电视节目策划方案
2014/05/16 职场文书
2014年学校党建工作汇报材料
2014/11/02 职场文书
护士2014年终工作总结
2014/11/11 职场文书
四年级作文之植物
2019/09/20 职场文书
laravel添加角色和模糊搜索功能的实现代码
2021/06/22 PHP
Redis 的查询很快的原因解析及Redis 如何保证查询的高效
2022/03/16 Redis