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

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>
            亚洲电影免费观看高清完整版| 久久riav二区三区| 欧美黄色大片网站| 久久久夜夜夜| 亚洲欧洲日产国码二区| 欧美激情精品久久久久久蜜臀| 男人的天堂成人在线| 亚洲精品国产系列| 日韩性生活视频| 国产精品s色| 久久久在线视频| 奶水喷射视频一区| 亚洲一区二区久久| 久久精品亚洲乱码伦伦中文| 亚洲二区在线观看| 亚洲精品国产精品国自产观看浪潮| 欧美日韩中文在线| 久久精品水蜜桃av综合天堂| 免费成人高清在线视频| 亚洲一本视频| 久久伊人免费视频| 亚洲一区二区在线观看视频| 久久成人精品无人区| 亚洲美女色禁图| 午夜视频一区| 一区二区三区欧美| 久久国产99| 亚洲午夜在线视频| 久久综合色天天久久综合图片| 夜夜爽av福利精品导航| 亚洲在线一区二区| 亚洲激情亚洲| 性做久久久久久久久| 中日韩高清电影网| 久久在线免费观看视频| 亚洲欧美日韩精品久久亚洲区| 久久久久看片| 欧美一区免费视频| 欧美日韩一区二区视频在线 | 影院欧美亚洲| 亚洲天堂av在线免费观看| 亚洲国产精品高清久久久| 性久久久久久久久久久久| 99精品视频免费观看| 久久精品国产2020观看福利| 亚洲一区二区精品在线| 欧美国产日韩免费| 欧美freesex交免费视频| 国产欧美va欧美不卡在线| 亚洲国产日韩欧美综合久久| 狠狠综合久久| 欧美一二三区精品| 欧美专区18| 国产欧美综合在线| 亚洲午夜黄色| 亚洲综合首页| 国产精品高潮久久| 亚洲三级色网| 亚洲美洲欧洲综合国产一区| 美女脱光内衣内裤视频久久影院| 久久精品官网| 国产麻豆一精品一av一免费| 一区二区电影免费观看| 一区二区三区鲁丝不卡| 欧美人与性动交a欧美精品| 亚洲国产另类久久久精品极度| 狠狠色狠狠色综合| 欧美在线影院| 蜜臀av性久久久久蜜臀aⅴ| 极品少妇一区二区三区精品视频| 性色av一区二区三区| 久久久久久网| 在线成人激情视频| 男人的天堂成人在线| 亚洲激精日韩激精欧美精品| 9l国产精品久久久久麻豆| 欧美日韩中文字幕在线| 亚洲一卡二卡三卡四卡五卡| 午夜精品久久久久99热蜜桃导演| 国产精品无码永久免费888| 午夜精品久久久久| 免费观看亚洲视频大全| 91久久久在线| 欧美视频一区二区三区…| 亚洲一区二区三区四区五区黄 | 夜夜爽99久久国产综合精品女不卡| 国产无遮挡一区二区三区毛片日本| 99精品视频一区| 欧美一区视频| 91久久精品国产91久久性色| 欧美日韩一区二区三区免费看| 99热这里只有精品8| 欧美一级视频精品观看| 国产一区二区欧美| 美女视频一区免费观看| 亚洲精品久久久蜜桃| 亚洲综合日本| 国产午夜精品全部视频在线播放 | 欧美激情一区二区三区| 99re热这里只有精品视频| 久久精品一区二区国产| 亚洲国产欧洲综合997久久| 欧美先锋影音| 久久久精品国产免大香伊| 亚洲毛片在线观看| 久热re这里精品视频在线6| 亚洲人成在线播放| 国产欧美日韩综合精品二区| 免费在线观看一区二区| 亚洲欧美一区二区在线观看| 亚洲福利国产精品| 久久久精品国产一区二区三区| 亚洲高清在线观看一区| 国产欧美日韩另类一区| 欧美精品国产精品| 久久精品国产第一区二区三区最新章节 | 欧美日韩激情网| 久久全国免费视频| 亚洲男女毛片无遮挡| 91久久一区二区| 久久亚洲一区二区三区四区| 亚洲一区在线免费| 亚洲剧情一区二区| 在线成人av.com| 国产日韩1区| 欧美日韩综合| 欧美日韩成人综合| 老色鬼精品视频在线观看播放| 香蕉尹人综合在线观看| 亚洲私人影院在线观看| 亚洲欧洲精品一区二区三区| 美国十次了思思久久精品导航| 午夜亚洲伦理| 亚洲一区在线免费| 一区二区久久久久久| 亚洲国产欧美一区| 亚洲高清视频在线| 欧美经典一区二区| 亚洲永久免费| 亚洲午夜女主播在线直播| 国产麻豆综合| 免费成人av资源网| 欧美三区美女| 久久久人成影片一区二区三区| 久久婷婷影院| 亚洲精品日韩久久| 中文亚洲视频在线| 在线观看欧美日韩国产| 亚洲欧洲另类国产综合| 国产精品sss| 亚洲国产mv| 欧美精品一区二区视频| 久久久久久黄| 欧美色欧美亚洲另类七区| 欧美影院午夜播放| 欧美成人精精品一区二区频| 美女国产一区| 欧美日韩一区二区国产| 亚洲专区在线视频| 亚洲欧洲精品一区二区三区波多野1战4| 亚洲国产美女精品久久久久∴| 乱码第一页成人| 欧美一区不卡| 欧美日韩三级视频| 91久久久久久久久| 欧美韩国一区| 亚洲人成77777在线观看网| 亚洲人成在线影院| 欧美中文字幕精品| 久久精品日韩一区二区三区| 久久久久久久999精品视频| 欧美不卡视频一区| 亚洲精品少妇| 欧美亚洲免费| 欧美大胆a视频| 国产精品国产福利国产秒拍| 国产欧美日韩激情| 在线精品国产欧美| 亚洲毛片网站| 欧美一区二区三区免费观看视频| 久久久久久成人| 亚洲人成啪啪网站| 亚洲午夜av电影| 久久夜精品va视频免费观看| 欧美日韩成人综合天天影院| 国产一区二区三区最好精华液| 国产亚洲精品7777| 激情懂色av一区av二区av| 亚洲欧美一区二区在线观看| 性欧美大战久久久久久久免费观看| 国产女人水真多18毛片18精品视频| 亚洲男女毛片无遮挡| 欧美插天视频在线播放| 美女日韩在线中文字幕| 久久理论片午夜琪琪电影网| 国产真实精品久久二三区| 欧美高清hd18日本| 欧美日韩视频在线| 好吊成人免视频| 伊人春色精品|