最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

詳解使用Nginx和uWSGI配置Python的web項目的方法

 更新時間:2015年12月21日 10:12:42   作者:China_OS  
這篇文章主要介紹了使用Nginx和uWSGI配置Python的web項目的方法,與其他CGI連接方式相比uwsgi的連接性能也較為出眾,需要的朋友可以參考下

基于python的web項目,常見的部署方法有:

  •       fcgi:用spawn-fcgi或者框架自帶的工具對各個project分別生成監(jiān)聽進程,然后和http服務互動。
  •       wsgi:利用http服務的mod_wsgi模塊來跑各個project。

不過還有個uwsgi,它既不用wsgi協(xié)議也不用fcgi協(xié)議,而是自創(chuàng)了一個uwsgi的協(xié)議,據(jù)作者說該協(xié)議大約是fcgi協(xié)議的10倍那么快。uWSGI的主要特點如下:

  •        超快的性能。
  •        低內(nèi)存占用(實測為apache2的mod_wsgi的一半左右)。
  •        多app管理。
  •        詳盡的日志功能(可以用來分析app性能和瓶頸)。
  •        高度可定制(內(nèi)存大小限制,服務一定次數(shù)后重啟等)。

環(huán)境ubuntu 12.04 IP:10.1.6.79

安裝nginx

apt-get install nginx-full nginx-common

nginx配置/etc/nginx/sites-enabled/example

server {
    listen     80;
    server_name   10.1.6.79;
    access_log   /var/log/nginx/example_access.log;
    error_log    /var/log/nginx/example_error.log;
    root      /var/www/example;
    location / {
      uwsgi_pass   127.0.0.1:9001;
      include     uwsgi_params;
      uwsgi_param   UWSGI_SCHEME $scheme;
      uwsgi_param   SERVER_SOFTWARE  nginx/$nginx_version;
    }
}

安裝uwsgi

apt-get install uwsgi uwsgi-plugin-python

    如果你想安裝所有的uwsgi插件,則可以安裝uwsgi-plugin-all軟件包

uwsgi配置/etc/uwsgi/apps-enabled/default.xml

<uwsgi>
  <plugin>python</plugin>
  <socket>127.0.0.1:9001</socket>
  <pythonpath>/var/www/example/app/</pythonpath>
  <app mountpoint="/">
    <script>wsgi_configuration_module</script>
  </app>
  <master/>
  <processes>4</processes>
  <reload-mercy>8</reload-mercy>
  <cpu-affinity>1</cpu-affinity>
  <max-requests>2000</max-requests>
  <limit-as>512</limit-as>
  <reload-on-as>256</reload-on-as>
  <reload-on-rss>192</reload-on-rss>
  <no-orphans/>
  <vacuum/>
</uwsgi>

    uwsgi配置文件中的參數(shù)也可以在命令行通過uwsgi指定,配置文件除了xml格式外,還可以寫成ini格式的,軟件包安裝完畢后在/usr/share/doc/uwsgi/examples/conffile目錄下會有一些xml和ini格式配置文件的例子。

wsgi_configuration_module.py腳本內(nèi)容

#!/usr/bin/python
import os
import sys
sys.path.append('/var/www/example/app')
os.environ['PYTHON_EGG_CACHE'] = '/var/www/example/.python-egg'
def application(environ, start_response):
  status = '200 OK'
  output = 'Hello World!'
  response_headers = [('Content-type', 'text/plain'),
          ('Content-Length', str(len(output)))]
  start_response(status, response_headers)
  return [output]

啟動uwsgi

uwsgi -x /etc/uwsgi/apps-enabled/default.xml --daemonize /var/log/uwsgi/app/default.log

uwsgi 的參數(shù):
    -M 開啟Master進程
    -p 4 開啟4個進程
    -s 使用的端口或者socket地址
    -d 使用daemon的方式運行, 注意, 使用-d后, 需要加上log文件地址, 比如-d /var/log/uwsgi.log
    -R 10000 開啟10000個進程后, 自動respawn下
    -t 30 設置30s的超時時間, 超時后, 自動放棄該鏈接
    –limit-as 32 將進程的總內(nèi)存量控制在32M
    -x  使用配置文件模式

并發(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

服務超過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命令啟動外,還可以用init.d下的腳本啟動, 不過需先修 改/etc/default/u wsgi中默認配置文件的路徑,然后通過/etc/init.d/uwsgi start啟動

#INHERITED_CONFIG=/usr/share/uwsgi/conf/default.ini
INHERITED_CONFIG=/etc/uwsgi/apps-enabled/default.xml

啟動nginx

/etc/init.d/nginx start

效果如下:

20151221100655687.jpg (445×137)

測試uwsgi是否可用
測試腳本test.py

#!/usr/bin/python
def application(env,start_response):
  start_response('200 OK',[('Content_Type','text/html')])
  return "Congraduation!!! uWSGI Testing OK!!!
#啟動web server
uwsgi --http :9090 --wsgi-file test.py

瀏覽器輸入IP:端口:192.168.1.99:9090
可以看到”Congraduation!!! uWSGI Testing OK!!!”

小結

uwsgi 實際上也是一個 http 服務器,只不過它只面向 python 網(wǎng)絡應用程序。雖然 uwsgi 也是 http 服務器,但是卻不能直接使用它部署 python web 應用程序,否則會出錯。

在本文中,uwsgi 所扮演的的角色是后端 http 服務器,nginx 扮演的角色是前端 http 服務器,hello.py 是客戶端應用程序。 用戶從網(wǎng)頁瀏覽器中發(fā)出請求,nginx 服務器收到請求后,會通過它的 uwsgi 模塊將用戶的請求轉發(fā)給 uwsgi 服務器,uwsgi 服務器處理完畢后將結果返回給 nginx,瀏覽器將最終的結果展現(xiàn)給用戶。

相關文章

  • nginx基礎配置說明一則

    nginx基礎配置說明一則

    nginx基礎配置說明一則,有需要的朋友可以參考下
    2013-02-02
  • Nginx FastCGI緩存的實現(xiàn)示例

    Nginx FastCGI緩存的實現(xiàn)示例

    Nginx的FastCGI緩存是一種性能優(yōu)化手段,通過緩存動態(tài)內(nèi)容減少對后端服務器的請求,提高系統(tǒng)響應速度,具有一定的參考價值,感興趣的可以了解一下
    2024-12-12
  • 關于Nginx 命令行控制的問題

    關于Nginx 命令行控制的問題

    Nginx 是一個高性能的 Web 服務器,從 2001 年發(fā)展至今,由于 Nginx 對硬件和操作系統(tǒng)內(nèi)核特性的深度挖掘,使得在保持高并發(fā)的同時還能夠保持高吞吐量,這篇文章主要介紹了Nginx 命令行控制,需要的朋友可以參考下
    2022-10-10
  • Nginx可視化管理工具結合cpolar實現(xiàn)遠程訪問的步驟詳解

    Nginx可視化管理工具結合cpolar實現(xiàn)遠程訪問的步驟詳解

    Nginx Proxy Manager 是一個開源的反向代理工具,本文將給大家介紹在Linux 安裝Nginx Proxy Manager并且結合 cpolar內(nèi)網(wǎng)穿透工具實現(xiàn)遠程訪問管理界面,同等,當我們使用Nginx Proxy Manager配置其他本地服務,并且需要遠程訪問,也是同樣的方式,需要的朋友可以參考下
    2023-09-09
  • Nginx配置虛擬主機的三種方法

    Nginx配置虛擬主機的三種方法

    本文主要介紹了Nginx配置虛擬主機的三種方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-06-06
  • Nginx地址重定向的實現(xiàn)

    Nginx地址重定向的實現(xiàn)

    重定向 是將一個域名或地址指向另一個的方法,本文主要介紹了Nginx地址重定向的實現(xiàn),具有一定的參考價值,感興趣的可以了解一下
    2024-08-08
  • Nginx對某個目錄設置密碼保護例子

    Nginx對某個目錄設置密碼保護例子

    這篇文章主要介紹了Nginx對某個目錄設置密碼保護例子,使用htpasswd 生成用戶名和密碼,并解決了打開PHP文件變成文件下載的問題,需要的朋友可以參考下
    2014-06-06
  • Nginx內(nèi)容緩存以及常見參數(shù)配置詳析

    Nginx內(nèi)容緩存以及常見參數(shù)配置詳析

    這篇文章主要給大家介紹了關于Nginx內(nèi)容緩存以及常見參數(shù)配置的相關資料,文中通過示例代碼介紹的非常詳細,對大家學習或者使用Nginx具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧
    2019-05-05
  • Nginx文件已經(jīng)存在全局反向代理問題排查記錄

    Nginx文件已經(jīng)存在全局反向代理問題排查記錄

    反向代理除了實現(xiàn)負載均衡之外,還提供如緩存來減少上游服務器的壓力,下面這篇文章主要給大家介紹了關于Nginx文件已經(jīng)存在全局反向代理問題排查的相關資料,需要的朋友可以參考下
    2022-07-07
  • nginx FastCGI錯誤Primary script unknown解決辦法

    nginx FastCGI錯誤Primary script unknown解決辦法

    這篇文章主要介紹了nginx錯誤Primary script unknown解決辦法,需要的朋友可以參考下
    2014-03-03

最新評論

西充县| 板桥市| 炉霍县| 潜山县| 枣强县| 牙克石市| 全南县| 清涧县| 都兰县| 呼伦贝尔市| 五峰| 张家港市| 镇雄县| 徐闻县| 桂林市| 三门县| 宁海县| 鄂尔多斯市| 塔城市| 徐闻县| 通化市| 西充县| 台东市| 达州市| 长治县| 固始县| 石嘴山市| 资源县| 涞源县| 平原县| 巩留县| 巴彦县| 渑池县| 绿春县| 宜春市| 敦煌市| 茂名市| 雷波县| 合水县| 宁强县| 平凉市|