Heim > Backend-Entwicklung > Python-Tutorial > 在Linux系统上通过uWSGI配置Nginx+Python环境的教程

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

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
Freigeben: 2016-06-10 15:06:53
Original
1253 Leute haben es durchsucht

1.安装ubuntu有uwsgi的ppa:

add-apt-repository ppa:stevecrozz/ppa 
apt-get update 
apt-get install uwsgi 
Nach dem Login kopieren

2. 用uwsgi代替mod_wsgi

Nginx 的整体配置这里不说了,假设已经明白 Nginx的基本配置,那么uwsgi就类似这么配置:

  location / { 
   include uwsgi_params 
   uwsgi_pass 127.0.0.1:9090 
  } 
Nach dem Login kopieren

再比如django就是:

 ....... 
 from django.core.handlers.wsgi import WSGIHandler 
 application = WSGIHandler() 
Nach dem Login kopieren

然后运行uwsgi监听9090,其中-w后跟模块名,也就是刚才配置的myapp

 uwsgi -s :9090 -w myapp 
Nach dem Login kopieren

运行网站发现已经部署完成了。

3.uwsgi的参数

以上是单个project的最简单化部署,uwsgi还是有很多令人称赞的功能的,例如:

并发4个线程:

 uwsgi -s :9090 -w myapp -p 4 
Nach dem Login kopieren

主控制线程+4个线程:

 uwsgi -s :9090 -w myapp -M -p 4 
Nach dem Login kopieren

执行超过30秒的client直接放弃:

 uwsgi -s :9090 -w myapp -M -p 4 -t 30 
Nach dem Login kopieren

限制内存空间128M:

 uwsgi -s :9090 -w myapp -M -p 4 -t 30 --limit-as 128 
Nach dem Login kopieren

服务超过10000个req自动respawn:

 uwsgi -s :9090 -w myapp -M -p 4 -t 30 --limit-as 128 -R 10000 
Nach dem Login kopieren

后台运行等:

 uwsgi -s :9090 -w myapp -M -p 4 -t 30 --limit-as 128 -R 10000 -d uwsgi.log 

Nach dem Login kopieren

4.为uwsgi配置多个站点

为了让多个站点共享一个uwsgi服务,必须把uwsgi运行成虚拟站点:去掉“-w myapp”加上”–vhost”:

 uwsgi -s :9090 -M -p 4 -t 30 --limit-as 128 -R 10000 -d uwsgi.log --vhost 
Nach dem Login kopieren

然后必须配置virtualenv,virtualenv是Python的一个很有用的虚拟环境工具,这样安装:

 apt-get install Python-setuptools
 easy_install virtualenv 
Nach dem Login kopieren

然后设置一个/多个app基准环境:

 virtualenv /var/www/myenv 
Nach dem Login kopieren

应用环境,在此环境下安装的软件仅在此环境下有效:

 source /var/www/myenv/bin/activate 
 pip install django 
 pip install mako 
 ... 
Nach dem Login kopieren

最后配置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; 
     } 
   } 
Nach dem Login kopieren

这样,重启nginx服务,两个站点就可以共用一个uwsgi服务了。

Verwandte Etiketten:
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage