在Linux系统上通过uWSGI配置Nginx+Python环境的教程

 更新时间:2015年12月25日 16:20:51   投稿:goldensun  
这篇文章主要介绍了在Linux系统上通过uWSGI配置Nginx+Python环境的教程,示例中为Ubuntu系统并且默认使用系统中自带的Python解释器,需要的朋友可以参考下

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中Scrapy的性能

    详解如何优化和调整Python中Scrapy的性能

    在本篇高级教程中,我们将深入探讨如何优化和调整Scrapy爬虫的性能,以及如何处理更复杂的抓取任务,如登录,处理Cookies和会话,以及避免爬虫被网站识别和封锁,需要的朋友可以参考下
    2023-09-09
  • python上下文管理的使用场景实例讲解

    python上下文管理的使用场景实例讲解

    在本篇文章里小编给大家整理的是一篇关于python上下文管理的使用场景实例讲解内容,有兴趣的朋友们可以学习下。
    2021-03-03
  • python如何通过openpyxl读写Excel文件

    python如何通过openpyxl读写Excel文件

    python操作excel的库有很多,有的库只能读取xsl格式,比如xlrd库,有的库只能写xsl格式,比如xlwt库,有的只能读写xslx格式,比如openpyxl库,综合各库及 xslx 格式比较常见,所以本文主要讲解openpyxl库对xslx格式的excel操作,需要的朋友可以参考下
    2023-10-10
  • 利用python 读写csv文件

    利用python 读写csv文件

    python中有一个读写csv文件的包,直接import csv即可。利用这个python包可以很方便对csv文件进行操作。
    2020-09-09
  • python与js主要区别点总结

    python与js主要区别点总结

    在本篇内容里小编给大家整理了关于python与js主要区别点总结内容,有兴趣的朋友们可以学习下。
    2020-09-09
  • 通过Python中的CGI接口讲解什么是WSGI

    通过Python中的CGI接口讲解什么是WSGI

    这篇文章主要为大家通过Python中的CGI接口及应用示例讲解什么是WSGI,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-04-04
  • 解决matplotlib库show()方法不显示图片的问题

    解决matplotlib库show()方法不显示图片的问题

    今天小编就为大家分享一篇解决matplotlib库show()方法不显示图片的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-05-05
  • Python简明入门教程

    Python简明入门教程

    这篇文章主要介绍了Python简明入门教程,较为详细的分析了Python的基本概念及语法基础,有助于Python初学者更好的掌握Python的基本语法与使用技巧,需要的朋友可以参考下
    2015-08-08
  • 如何真正的了解python装饰器

    如何真正的了解python装饰器

    在本篇内容里小编给大家整理的是一篇关于如何真正的了解python装饰器的相关文章,需要的朋友们可以参考下。
    2020-08-08
  • python自动裁剪图像代码分享

    python自动裁剪图像代码分享

    这篇文章主要介绍了python自动裁剪图像代码分享,具有一定参考价值,需要的朋友可以了解下。
    2017-11-11

最新评论