在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下载文件时显示下载进度的方法
Apr 02 Python
python实现随机梯度下降(SGD)
Mar 24 Python
《与孩子一起学编程》python自测题
May 27 Python
Python日期时间模块datetime详解与Python 日期时间的比较,计算实例代码
Sep 14 Python
python中使用zip函数出现错误的原因
Sep 28 Python
Python中的集合介绍
Jan 28 Python
python设置环境变量的原因和方法
Jun 24 Python
Python绘制股票移动均线的实例
Aug 24 Python
python 3.74 运行import numpy as np 报错lib\site-packages\numpy\__init__.py
Oct 06 Python
pytorch方法测试详解——归一化(BatchNorm2d)
Jan 15 Python
Pycharm操作Git及GitHub的步骤详解
Oct 27 Python
Anaconda安装pytorch及配置PyCharm 2021环境
Jun 04 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的autoload自动加载机制使用说明
2010/12/28 PHP
将CMYK颜色值和RGB颜色相互转换的PHP代码
2014/07/28 PHP
PHP模板引擎smarty详细介绍
2015/05/26 PHP
php数字每三位加逗号的功能函数
2015/10/22 PHP
PHP合并两个或多个数组的方法
2019/01/20 PHP
用于自动添加Digg This!按钮的JavaScript
2006/12/23 Javascript
JavaScript 解析读取XML文档 实例代码
2009/07/07 Javascript
javascript 同时在IE和FireFox获取KeyCode的代码
2010/02/07 Javascript
JS来动态的修改url实现对url的增删查改
2014/09/05 Javascript
JQuery中基础过滤选择器用法实例分析
2015/05/18 Javascript
Javascript常用小技巧汇总
2015/06/24 Javascript
jQuery验证表单格式的使用方法
2017/01/10 Javascript
jQuery页面弹出框实现文件上传
2017/02/09 Javascript
微信小程序使用video组件播放视频功能示例【附源码下载】
2017/12/08 Javascript
jQuery实现左右滑动的toggle方法
2018/03/03 jQuery
基于Vue-Cli 打包自动生成/抽离相关配置文件的实现方法
2018/12/09 Javascript
Node.js中文件系统fs模块的使用及常用接口
2020/03/06 Javascript
微信小程序地图实现展示线路
2020/07/29 Javascript
Python中的anydbm模版和shelve模版使用指南
2015/07/09 Python
Python 中 Meta Classes详解
2016/02/13 Python
详解Python中heapq模块的用法
2016/06/28 Python
Python+MongoDB自增键值的简单实现
2016/11/04 Python
分数霸榜! python助你微信跳一跳拿高分
2018/01/08 Python
numpy中的高维数组转置实例
2018/04/17 Python
详解从Django Rest Framework响应中删除空字段
2019/01/11 Python
Python函数装饰器原理与用法详解
2019/08/16 Python
使用OpenCV实现仿射变换—缩放功能
2019/08/29 Python
图解python全局变量与局部变量相关知识
2019/11/02 Python
ECCO爱步加拿大官网:北欧丹麦鞋履及皮具品牌
2017/07/08 全球购物
会计实习期自我鉴定
2013/10/06 职场文书
预备党员2014全国两会学习心得体会
2014/03/10 职场文书
爱我中华演讲稿
2014/05/20 职场文书
2014年语文教研组工作总结
2014/12/06 职场文书
文明上网主题班会
2015/08/14 职场文书
Matlab求解数组中的最大值及它所在的具体位置
2021/04/16 Python
排查并解决MySQL生产库内存使用率高的报警
2022/04/11 MySQL