国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 網站 > Nginx > 正文

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

2024-08-30 12:27:49
字體:
來源:轉載
供稿:網友
這篇文章主要介紹了使用Nginx和uWSGI配置Python的web項目的方法,與其他CGI連接方式相比uwsgi的連接性能也較為出眾,需要的朋友可以參考下
 

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

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

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

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

環境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配置文件中的參數也可以在命令行通過uwsgi指定,配置文件除了xml格式外,還可以寫成ini格式的,軟件包安裝完畢后在/usr/share/doc/uwsgi/examples/conffile目錄下會有一些xml和ini格式配置文件的例子。

wsgi_configuration_module.py腳本內容

#!/usr/bin/pythonimport osimport syssys.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 的參數: 
    -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 將進程的總內存量控制在32M 
    -x  使用配置文件模式

并發4個線程

uwsgi -s :9090 -w myapp -p 4

主控制線程+4個線程

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

執行超過30秒的client直接放棄

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

限制內存空間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.iniINHERITED_CONFIG=/etc/uwsgi/apps-enabled/default.xml

啟動nginx

/etc/init.d/nginx start

效果如下:

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

 

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

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

 

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

小結

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

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



發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 文成县| 都江堰市| 华坪县| 秦安县| 宜丰县| 彩票| 黄浦区| 湟中县| 长春市| 铜梁县| 会宁县| 泽州县| 绥化市| 成武县| 澄迈县| 兴国县| 和田县| 瑞金市| 马关县| 吉木萨尔县| 昭平县| 积石山| 通河县| 宁陕县| 襄汾县| 安义县| 巫溪县| 万盛区| 南华县| 洪江市| 新竹县| 遂宁市| 静安区| 泽州县| 新田县| 灵台县| 鲜城| 亳州市| 晴隆县| 伊春市| 永定县|