青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

C++分析研究  
C++
日歷
<2025年12月>
30123456
78910111213
14151617181920
21222324252627
28293031123
45678910
統(tǒng)計
  • 隨筆 - 92
  • 文章 - 4
  • 評論 - 4
  • 引用 - 0

導航

常用鏈接

留言簿

隨筆檔案

文章檔案

搜索

  •  

最新評論

閱讀排行榜

評論排行榜

 
  Python常見部署方法有 :

  fcgi :用spawn-fcgi或者框架自帶的工具對各個project分別生成監(jiān)聽進程,然后和http 服務(wù)互動

  wsgi :利用http服務(wù)的mod_wsgi模塊來跑各個project(Web應(yīng)用程序或框架簡單而通用的Web服務(wù)器 之間的接口)。

  uWSGI 是一款像php-cgi一樣監(jiān)聽同一端口,進行統(tǒng)一管理和負載平衡的工具,uWSGI,既不用wsgi協(xié)議也不用fcgi協(xié)議,而是自創(chuàng)了一個uwsgi的協(xié)議,據(jù)說該協(xié)議大約是fcgi協(xié)議的10倍那么快。

  其實 WSGI 是分成 server 和 framework (即 application) 兩部分 (當然還有 middleware)。嚴格說 WSGI 只是一個協(xié)議, 規(guī)范 server 和 framework 之間連接的接口。

  WSGI server 把服務(wù)器功能以 WSGI 接口暴露出來。比如 mod_wsgi 是一種 server, 把 apache 的功能以 WSGI 接口的形式提供出來。

  WSGI framework 就是我們經(jīng)常提到的 Django 這種框架。不過需要注意的是, 很少有單純的 WSGI framework , 基于 WSGI 的框架往往都自帶 WSGI server。比如 Django、CherryPy 都自帶 WSGI server 主要是測試用途, 發(fā)布時則使用生產(chǎn)環(huán)境的 WSGI server。而有些 WSGI 下的框架比如 pylons、bfg 等, 自己不實現(xiàn) WSGI server。使用 paste 作為 WSGI server。

  Paste 是流行的 WSGI server, 帶有很多中間件。還有 flup 也是一個提供中間件的庫。

  搞清除 WSGI server 和 application, 中間件自然就清楚了。除了 session、cache 之類的應(yīng)用, 前段時間看到一個 bfg 下的中間件專門用于給網(wǎng)站換膚的 (skin) 。中間件可以想到的用法還很多。

  這里再補充一下, 像 django 這樣的框架如何以 fastcgi 的方式跑在 apache 上的。這要用到 flup.fcgi 或者 fastcgi.py (eurasia 中也設(shè)計了一個 fastcgi.py 的實現(xiàn)) 這些工具, 它們就是把 fastcgi 協(xié)議轉(zhuǎn)換成 WSGI 接口 (把 fastcgi 變成一個 WSGI server) 供框架接入。整個架構(gòu)是這樣的: django -> fcgi2wsgiserver -> mod_fcgi -> apache 。

  雖然我不是 WSGI 的粉絲, 但是不可否認 WSGI 對 python web 的意義重大。有意自己設(shè)計 web 框架, 又不想做 socket 層和 http 報文解析的同學, 可以從 WSGI 開始設(shè)計自己的框架。在 python 圈子里有個共識, 自己隨手搞個 web 框架跟喝口水一樣自然, 非常方便。或許每個 python 玩家都會經(jīng)歷一個倒騰框架的托福改分

  uWSGI的主要特點如下:

  超快的性能。

  低內(nèi)存占用(實測為apache2的mod_wsgi的一半左右)。

  多app管理。

  詳盡的日志功能(可以用來分析app性能和瓶頸)。

  高度可定制(內(nèi)存大小限制,服務(wù)一定次數(shù)后重啟等)。

  uwsgi的官方文檔:

  http://projects.unbit.it/uwsgi/wiki/Doc

  nginx.conf

  location / {

  include uwsgi_params

  uwsgi_pass 127.0.0.1:9090

  }

  啟動app

  uwsgi -s :9090 -w myapp

  uwsgi的調(diào)優(yōu)參數(shù)~

  uwsgi的參數(shù)

  以上是單個project的最簡單化部署,uwsgi還是有很多令人稱贊的功能的,例如:

  并發(fā)4個線程:

  uwsgi -s :9090 -w myapp -p 4

  主控制線程+4個線程:

  uwsgi -s :9090 -w myapp -M -p 4

  執(zhí)行超過30秒的client直接放棄:

  uwsgi -s :9090 -w myapp -M -p 4 -t 30

  限制內(nèi)存空間128M:

  uwsgi -s :9090 -w myapp -M -p 4 -t 30 --limit-as 128

  服務(wù)超過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

  為了讓多個站點共享一個uwsgi服務(wù),必須把uwsgi運行成虛擬站點:去掉“-w myapp”加上”–vhost”:

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

  然后必須配置virtualenv,virtualenv是Python的一個很有用的虛擬環(huán)境工具,這樣安裝:

  最后配置nginx,注意每個站點必須單獨占用一個server,同一server不同location定向到不同的應(yīng)用不知為何總是失敗,估計也算是一個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服務(wù),兩個站點就可以共用一個uwsgi服務(wù)了。

  再來搞下 fastcgi的方式

  location / {

  fastcgi_param REQUEST_METHOD $request_method;

  fastcgi_param QUERY_STRING $query_string;

  fastcgi_param CONTENT_TYPE $content_type;

  fastcgi_param CONTENT_LENGTH $content_length;

  fastcgi_param GATEWAY_INTERFACE CGI/1.1;

  fastcgi_param SERVER_SOFTWARE nginx/$nginx_version;

  fastcgi_param REMOTE_ADDR $remote_addr;

  fastcgi_param REMOTE_PORT $remote_port;

  fastcgi_param SERVER_ADDR $server_addr;

  fastcgi_param SERVER_PORT $server_port;

  fastcgi_param SERVER_NAME $server_name;

  fastcgi_param SERVER_PROTOCOL $server_protocol;

  fastcgi_param SCRIPT_FILENAME $fastcgi_script_name;

  fastcgi_param PATH_INFO $fastcgi_script_name;

  fastcgi_pass 127.0.0.1:9002;

  }

  location /static/ {

  root /path/to/www;

  if (-f $request_filename) {

  rewrite ^/static/(.*)$ /static/$1 break;

  }

  }

  啟動一個fastcgi的進程

  spawn-fcgi -d /path/to/www -f /path/to/www/index.py -a 127.0.0.1 -p 9002

  用web.py寫的一個小demo測試

  #!/usr/bin/env python

  # -*- coding: utf-8 -*-

  import web

  urls = ("/.*", "hello")

  app = web.application(urls, globals())

  class hello:

  def GET(self):

  return 'Hello, world!'

  if __name__ == "__main__":

  web.wsgi.runwsgi = lambda func, addr=None: web.wsgi.runfcgi(func, addr)

  app.run()

  啟動nginx

  nginx

posted on 2014-01-02 15:50 HAOSOLA 閱讀(557) 評論(0)  編輯 收藏 引用

只有注冊用戶登錄后才能發(fā)表評論。
網(wǎng)站導航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


 
Copyright © HAOSOLA Powered by: 博客園 模板提供:滬江博客
PK10開獎 PK10開獎
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            国产日韩精品一区二区三区| 亚洲一区日韩在线| 亚洲国产成人91精品| 久久久欧美一区二区| 最新热久久免费视频| 亚洲激情在线播放| 国产精品久久久久久久app| 午夜久久资源| 久久精品国内一区二区三区| 亚洲国产精品高清久久久| 亚洲精品自在在线观看| 国产精品一区二区三区免费观看| 久久精品国产2020观看福利| 美女黄毛**国产精品啪啪| 夜夜爽99久久国产综合精品女不卡| 一区二区欧美日韩| 韩国欧美国产1区| 亚洲欧洲一区二区在线观看| 国产精品丝袜久久久久久app| 久久深夜福利免费观看| 欧美激情日韩| 欧美一级专区| 玖玖国产精品视频| 一区二区三区高清在线| 亚洲欧美怡红院| 亚洲黄色在线观看| 制服丝袜亚洲播放| 欧美一区二区免费观在线| 欧美黄污视频| 欧美在线视频一区二区三区| 欧美成人黄色小视频| 午夜精品久久久久久久男人的天堂| 久久精品亚洲热| 亚洲视屏在线播放| 久久久久国产一区二区| 亚洲一级一区| 久久亚洲私人国产精品va| 亚洲一区精品视频| 久久久午夜视频| 亚洲欧美综合网| 欧美成人国产| 久久免费高清视频| 欧美三级免费| 欧美成年人网| 国产老女人精品毛片久久| 亚洲国产婷婷| 国内激情久久| 一区二区三区视频在线| 亚洲电影激情视频网站| 亚洲在线免费| 99精品视频网| 久久久国产精品一区| 亚洲女女做受ⅹxx高潮| 蜜臀99久久精品久久久久久软件| 午夜亚洲福利| 欧美激情一区二区三区高清视频| 久久久久一区二区三区| 国产精品www网站| 亚洲国产欧美一区| 激情欧美一区| 午夜亚洲影视| 亚洲欧美日本伦理| 欧美精品国产一区| 欧美va亚洲va国产综合| 亚洲一区免费视频| 国产精品久久中文| 亚洲青色在线| 亚洲国产综合视频在线观看| 亚洲欧美日韩直播| 亚洲一区二区在线| 欧美女同视频| 亚洲国产欧美一区| 亚洲国产另类精品专区| 久久国产精品久久国产精品| 性欧美长视频| 欧美日韩在线视频观看| 亚洲高清一区二| 亚洲成人中文| 久久精品国产99| 久久精品毛片| 国产区亚洲区欧美区| 亚洲午夜电影网| 在线亚洲免费| 欧美日韩国产综合视频在线| 亚洲国产岛国毛片在线| 亚洲国内高清视频| 另类成人小视频在线| 麻豆成人综合网| 激情综合自拍| 久久久久欧美精品| 久久理论片午夜琪琪电影网| 国产伦精品一区二区三区视频黑人| 夜夜爽av福利精品导航| 亚洲天堂偷拍| 欧美性猛交99久久久久99按摩| 亚洲精选91| 亚洲色图制服丝袜| 欧美日韩在线精品| 一区二区三区视频免费在线观看| 亚洲一区视频在线观看视频| 欧美日韩一区二区三| 一区二区三区欧美激情| 亚洲在线观看免费视频| 欧美四级在线观看| 日韩一级在线| 午夜亚洲影视| 性伦欧美刺激片在线观看| 国产麻豆精品视频| 午夜免费日韩视频| 久久久www免费人成黑人精品 | 国产伦精品一区二区三区视频孕妇 | 一区在线影院| 久久久一区二区| 欧美成人免费播放| 亚洲日本精品国产第一区| 91久久久一线二线三线品牌| 欧美成人一区二区| 快射av在线播放一区| 麻豆精品视频在线观看| 欧美风情在线观看| 亚洲精品五月天| 欧美日韩国产综合视频在线观看中文| 一本色道久久综合亚洲精品高清 | 在线观看亚洲视频| 免费短视频成人日韩| 亚洲激情在线视频| 中日韩高清电影网| 国产精品捆绑调教| 亚洲欧美国产高清| 久久亚洲精品视频| 韩国v欧美v日本v亚洲v| 久久久久久久999| 欧美成人免费一级人片100| 亚洲毛片av| 先锋影音久久久| 极品中文字幕一区| 欧美国产欧美综合 | 中文亚洲视频在线| 国产精品一区二区三区成人| 久久成人人人人精品欧| 亚洲电影天堂av| 亚洲一区国产一区| 韩曰欧美视频免费观看| 欧美电影电视剧在线观看| 9久re热视频在线精品| 久久精品三级| 亚洲久久一区| 国产精品视频专区| 久久综合伊人77777蜜臀| 亚洲精品一区二区网址| 久久av在线看| 亚洲精品视频啊美女在线直播| 欧美午夜在线| 久久精品青青大伊人av| 亚洲人永久免费| 久久不见久久见免费视频1| 亚洲国产欧美日韩| 国产精品久久久久久久久搜平片| 久久精品综合网| 日韩午夜在线观看视频| 久久香蕉国产线看观看av| 夜夜嗨av一区二区三区免费区| 国产视频久久久久| 欧美激情五月| 欧美在线看片| 亚洲免费观看高清在线观看 | 国产一区二区三区直播精品电影| 农村妇女精品| 午夜久久久久久| 亚洲三级免费| 狼人天天伊人久久| 亚洲专区欧美专区| 亚洲国产精品美女| 国产欧美1区2区3区| 欧美激情第二页| 亚洲欧美日韩天堂一区二区| 国产精品福利在线观看| 免费日韩av片| 欧美亚洲系列| 一区二区高清在线观看| 欧美成人自拍视频| 欧美一区二区三区四区夜夜大片| 亚洲美女av在线播放| 国内精品久久久久久久97牛牛| 欧美日韩亚洲视频一区| 久久久久久伊人| 亚洲专区欧美专区| 亚洲精品在线一区二区| 久久亚洲春色中文字幕| 亚洲欧美日韩一区在线| 日韩视频中午一区| 在线播放不卡| 国产一区91精品张津瑜| 国产精品九九久久久久久久| 欧美高清在线精品一区| 久久久久久久久蜜桃| 夜夜嗨av一区二区三区中文字幕| 欧美激情日韩| 麻豆freexxxx性91精品| 午夜一区二区三视频在线观看|