在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简单的实现树莓派的WEB控制
Feb 18 Python
用Python写冒泡排序代码
Apr 12 Python
分享给Python新手们的几道简单练习题
Sep 21 Python
python中logging库的使用总结
Oct 18 Python
PyQt5高级界面控件之QTableWidget的具体使用方法
Feb 23 Python
python简单实现最大似然估计&scipy库的使用详解
Apr 15 Python
关于tensorflow softmax函数用法解析
Jun 30 Python
Python pip使用超时问题解决方案
Aug 03 Python
Biblibili视频投稿接口分析并以Python实现自动投稿功能
Feb 05 Python
Jupyter notebook 不自动弹出网页的解决方案
May 21 Python
Python自动化爬取天眼查数据的实现
Jun 15 Python
python利用pandas分析学生期末成绩实例代码
Jul 09 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
JAVA/JSP学习系列之七
2006/10/09 PHP
一个php作的文本留言本的例子(六)
2006/10/09 PHP
如何删除多级目录
2006/10/09 PHP
php有道翻译api调用方法实例
2014/12/22 PHP
php把大写命名转换成下划线分割命名
2015/04/27 PHP
php删除一个路径下的所有文件夹和文件的方法
2018/02/07 PHP
快速解决FusionCharts联动的中文乱码问题
2013/12/04 Javascript
Javascript动态引用CSS文件的2种方法介绍
2014/06/06 Javascript
js中window.open打开一个新的页面
2014/08/10 Javascript
jQuery+CSS实现的网页二级下滑菜单效果
2015/08/25 Javascript
jQuery中的Deferred和promise 的区别
2016/04/03 Javascript
详解AngularJs中$resource和restfu服务端数据交互
2016/09/21 Javascript
dul无法加载bootstrap实现unload table/user恢复
2016/09/29 Javascript
jQuery事件用法详解
2016/10/06 Javascript
jQuery居中元素scrollleft计算方法示例
2017/01/16 Javascript
vue.js实现备忘录功能的方法
2017/07/10 Javascript
underscore之Collections_动力节点Java学院整理
2017/07/10 Javascript
微信、QQ、微博、Safari中使用js唤起App
2018/01/24 Javascript
如何提升vue.js中大型数据的性能
2019/06/21 Javascript
js通过循环多张图片实现动画效果
2019/12/19 Javascript
JavaScript设计模型Iterator实例解析
2020/01/22 Javascript
python:print格式化输出到文件的实例
2018/05/14 Python
python实现下载pop3邮件保存到本地
2018/06/19 Python
Python和Go语言的区别总结
2019/02/20 Python
python切片的步进、添加、连接简单操作示例
2019/07/11 Python
浅析Windows 嵌入python解释器的过程
2019/07/26 Python
python基于FTP实现文件传输相关功能代码实例
2019/09/28 Python
Python序列类型的打包和解包实例
2019/12/21 Python
html5 postMessage前端跨域并前端监听的方法示例
2018/11/01 HTML / CSS
毕业生自荐信的主要内容
2013/10/29 职场文书
环境工程专业自荐信范文
2014/06/24 职场文书
贯彻落实“八项规定”思想汇报
2014/09/13 职场文书
企业年检委托书范本
2014/10/14 职场文书
2015年党建工作目标责任书
2015/05/08 职场文书
Python Django获取URL中的数据详解
2021/11/01 Python
mysql5.7的安装及Navicate长久免费使用的实现过程
2021/11/17 MySQL