在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之编写类之四再论继承
Oct 11 Python
Python中列表、字典、元组数据结构的简单学习笔记
Mar 20 Python
python利用Guetzli批量压缩图片
Mar 23 Python
python django使用haystack:全文检索的框架(实例讲解)
Sep 27 Python
关于python列表增加元素的三种操作方法
Aug 22 Python
python 构造三维全零数组的方法
Nov 12 Python
pygame游戏之旅 添加游戏介绍
Nov 20 Python
Jupyter notebook在mac:linux上的配置和远程访问的方法
Jan 14 Python
Python散点图与折线图绘制过程解析
Nov 30 Python
keras slice layer 层实现方式
Jun 11 Python
Python rabbitMQ如何实现生产消费者模式
Aug 24 Python
Manjaro、pip、conda更换国内源的方法
Nov 17 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.ini 配置文件的深入解析
2013/06/17 PHP
保存到桌面、设为桌面且带图标的PHP代码
2013/11/19 PHP
php一行代码获取文件后缀名实例分析
2014/11/12 PHP
PHP如何通过传引用的思想实现无限分类(代码简单)
2015/10/13 PHP
PHP pthreads v3下的Volatile简介与使用方法示例
2020/02/21 PHP
php实现商城购物车的思路和源码分析
2020/07/23 PHP
JQuery for与each性能比较分析
2013/05/14 Javascript
jquery渐隐渐显的图片幻灯闪烁切换实现方法
2015/02/26 Javascript
javascript中$(function() {});写与不写有哪些区别
2015/08/10 Javascript
封装好的javascript前端分页插件pagination
2016/01/04 Javascript
JavaScript生成验证码并实现验证功能
2016/09/24 Javascript
简单实现js菜单栏切换效果
2017/03/04 Javascript
Mui使用jquery并且使用点击跳转新窗口的实例
2017/08/19 jQuery
微信小程序自定义toast实现方法详解【附demo源码下载】
2017/11/28 Javascript
angularJS开发注意事项
2018/05/26 Javascript
VUE接入腾讯验证码功能(滑块验证)备忘
2019/05/07 Javascript
小程序云开发实现数据库异步操作同步化
2019/05/18 Javascript
用Python实现随机森林算法的示例
2017/08/24 Python
Python实现PS滤镜的旋转模糊功能示例
2018/01/20 Python
Python中if elif else及缩进的使用简述
2018/05/31 Python
tensorflow 获取变量&打印权值的实例讲解
2018/06/14 Python
使用 Python 实现微信群友统计器的思路详解
2018/09/26 Python
python截取两个单词之间的内容方法
2018/12/25 Python
Django项目中添加ldap登陆认证功能的实现
2019/04/04 Python
聊聊python里如何用Borg pattern实现的单例模式
2019/06/06 Python
Pytorch的mean和std调查实例
2020/01/02 Python
告诉你怎样写创业计划书
2014/01/27 职场文书
我们的节日清明节活动方案
2014/03/05 职场文书
公务员保密承诺书
2014/03/27 职场文书
企业法人代表证明书
2014/09/27 职场文书
庐山导游词
2015/02/03 职场文书
2015年南京大屠杀纪念日活动总结
2015/03/24 职场文书
2015军训通讯稿大全
2015/07/18 职场文书
关于HTML编码导致的乱码问题
2021/09/04 HTML / CSS
详解JS数组方法
2021/11/20 Javascript
java实现自定义时钟并实现走时功能
2022/06/21 Java/Android