欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

詳解使用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服務(wù)互動。
  •       wsgi:利用http服務(wù)的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)存大小限制,服務(wù)一定次數(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 設(shè)置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

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

小結(jié)

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

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

相關(guān)文章

  • Nginx配置文件詳解以及優(yōu)化建議指南

    Nginx配置文件詳解以及優(yōu)化建議指南

    Nginx是一款面向性能設(shè)計的HTTP服務(wù)器,相較于Apache、lighttpd具有占有內(nèi)存少,穩(wěn)定性高等優(yōu)勢,下面這篇文章主要給大家介紹了關(guān)于Nginx配置文件詳解以及優(yōu)化的相關(guān)資料,需要的朋友可以參考下
    2021-09-09
  • Nginx配置80端口訪問8080及項目名地址方法解析

    Nginx配置80端口訪問8080及項目名地址方法解析

    這篇文章主要介紹了Nginx配置80端口訪問8080及項目名地址方法解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-09-09
  • 服務(wù)器nginx配置ssl并http重定向到https方式

    服務(wù)器nginx配置ssl并http重定向到https方式

    這篇文章主要介紹了服務(wù)器nginx配置ssl并http重定向到https方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-12-12
  • 一文教會你使用Nginx訪問日志統(tǒng)計PV與UV

    一文教會你使用Nginx訪問日志統(tǒng)計PV與UV

    做網(wǎng)站的都知道,平常經(jīng)常要查詢下網(wǎng)站PV、UV等網(wǎng)站的訪問數(shù)據(jù),所以下面這篇文章主要給大家介紹了關(guān)于如何使用Nginx訪問日志統(tǒng)計PV與UV的相關(guān)資料,文中通過實例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-05-05
  • 詳解metricbeat監(jiān)控nginx情況

    詳解metricbeat監(jiān)控nginx情況

    這篇文章主要介紹了詳解metricbeat監(jiān)控nginx情況,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-06-06
  • 詳解Nginx中基本的內(nèi)存池初始化配置

    詳解Nginx中基本的內(nèi)存池初始化配置

    Nginx由其自己實現(xiàn)的內(nèi)存池結(jié)構(gòu)對內(nèi)存進行管理,這里我們就來詳解Nginx的基本內(nèi)存池初始化配置,需要的朋友可以參考下
    2016-07-07
  • nginx配置中proxy_pass反向代理502的bug記錄

    nginx配置中proxy_pass反向代理502的bug記錄

    這篇文章主要介紹了nginx配置中proxy_pass反向代理502的bug記錄,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-01-01
  • Nginx從搭建到配置支持HTTPS的方法

    Nginx從搭建到配置支持HTTPS的方法

    這篇文章主要介紹了Nginx從搭建到配置支持HTTPS的方法,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下
    2018-07-07
  • 基于Nginx實現(xiàn)一個灰度上線系統(tǒng)的示例代碼

    基于Nginx實現(xiàn)一個灰度上線系統(tǒng)的示例代碼

    本文主要介紹了基于Nginx實現(xiàn)一個灰度上線系統(tǒng)的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-07-07
  • Nginx配置圖片服務(wù)器(極簡配置)

    Nginx配置圖片服務(wù)器(極簡配置)

    本文主要介紹了主要是Nginx做靜態(tài)圖片服務(wù)器的詳情配置說明,還包括做反向代理、動靜分離、負(fù)載均衡的極簡配置,具有一定的參考價值,感興趣的可以了解一下
    2023-08-08

最新評論