<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
uWSGI是一個Web伺服器,它實現了WSGI協定、uwsgi、http等協定,旨在提供專業的 Python web應用釋出和開發。Nginx中HttpUwsgiModule的作用就是與uWSGI伺服器進行交換。WSGI是一種Web伺服器閘道器介面。它是一個Web伺服器(如nginx,uWSGI等伺服器)與web應用(如用Flask框架寫的程式)通訊的一種規範。
uwsgi:https://pypi.python.org/pypi/uWSGI
uwsgi 引數詳解:http://uwsgi-docs.readthedocs.org/en/latest/Options.html
1、通過 pip 命令:
pip install uwsgi
2、通過原始碼安裝
wget http://projects.unbit.it/downloads/uwsgi-latest.tar.gz tar zxvf uwsgi-latest.tar.gz cd uwsgi-latest make
安裝完成後,在當前目錄下,你會獲得一個 uwsgi 二進位制檔案。
3、測試 uwsgi 是否正常:
uwsgi --version # 檢視 uwsgi 版本
讓我們從一個簡單的 "Hello World" 開始,新建 test.py 檔案,內容如下:
def application(env, start_response): start_response('200 OK', [('Content-Type','text/html')]) return "Hello World"
uWSGI Python 載入器將會搜尋的預設函數 application 。
接下來我們啟動 uWSGI 來執行一個 HTTP 伺服器,將程式部署在HTTP埠 8001上:
uwsgi --http :8001 --wsgi-file test.py
在瀏覽器內輸入:http://127.0.0.1:8001,檢視是否有"Hello World"輸出,若沒有輸出,請檢查你的安裝過程。
預設情況下,uWSGI 啟動一個單一的程序和一個單一的執行緒。
你可以用 --processes 選項新增更多的程序,或者使用 --threads 選項新增更多的執行緒 ,也可以兩者同時使用。
uwsgi --http :9090 --wsgi-file foobar.py --master --processes 4 --threads 2
以上命令將會生成 4 個程序, 每個程序有 2 個執行緒。
如果你要執行監控任務,可以使用 stats 子系統,監控的資料格式是 JSON:
uwsgi --http :9090 --wsgi-file foobar.py --master --processes 4 --threads 2 --stats 127.0.0.1:9191
我們可以安裝 uwsgitop(類似 Linux top 命令) 來檢視監控資料:
pip install uwsgitop
uwsgi支援ini、xml等多種設定方式,本文以 ini 為例, 在/etc/目錄下新建uwsgi9090.ini,新增如下設定:
[uwsgi] socket = 127.0.0.1:9090 master = true //主程序 vhost = true //多站模式 no-site = true //多站模式時不設定入口模組和檔案 workers = 2 //子程序數 reload-mercy = 10 vacuum = true //退出、重啟時清理檔案 max-requests = 1000 limit-as = 512 buffer-size = 30000 pidfile = /var/run/uwsgi9090.pid //pid檔案,用於下面的指令碼啟動、停止該程序 daemonize = /website/uwsgi9090.log
我們可以將 uWSGI 和 Nginx Web 伺服器結合使用,實現更高的並行效能。
安裝命令如下:
cd ~ wget http://nginx.org/download/nginx-1.5.6.tar.gz tar xf nginx-1.5.6.tar.gz cd nginx-1.5.6 ./configure --prefix=/usr/local/nginx-1.5.6 --with-http_stub_status_module --with-http_gzip_static_module make && make install
你可以閱讀 Nginx 安裝設定 瞭解更多內容。
一個常用的nginx設定如下:
location / { include uwsgi_params; uwsgi_pass 127.0.0.1:3031; }
以上程式碼錶示使用 nginx 接收的 Web 請求傳遞給埠為 3031 的 uWSGI 服務來處理。
現在,我們可以生成 uWSGI 來本地使用 uwsgi 協定:
uwsgi --socket 127.0.0.1:3031 --wsgi-file foobar.py --master --processes 4 --threads 2 --stats 127.0.0.1:9191
如果你的 Web 伺服器使用 HTTP,那麼你必須告訴 uWSGI 本地使用 http 協定 (這與會自己生成一個代理的–http不同):
uwsgi --http-socket 127.0.0.1:3031 --wsgi-file foobar.py --master --processes 4 --threads 2 --stats 127.0.0.1:9191
找到nginx的安裝目錄(如:/usr/local/nginx/),開啟conf/nginx.conf檔案,修改server設定:
server { listen 80; server_name localhost; location / { include uwsgi_params; uwsgi_pass 127.0.0.1:9090; //必須和uwsgi中的設定一致 uwsgi_param UWSGI_SCRIPT demosite.wsgi; //入口檔案,即wsgi.py相對於專案根目錄的位置,「.」相當於一層目錄 uwsgi_param UWSGI_CHDIR /demosite; //專案根目錄 index index.html index.htm; client_max_body_size 35m; } }
你可以閱讀 Nginx 安裝設定 瞭解更多內容。
設定完成後,在終端執行:
uwsgi --ini /etc/uwsgi9090.ini & /usr/local/nginx/sbin/nginx
在瀏覽器輸入:http://127.0.0.1,你就可以看到 django 的 "It work" 了。
Django 是最常使用的 Python web 框架,假設 Django 專案位於 /home/foobar/myproject:
uwsgi --socket 127.0.0.1:3031 --chdir /home/foobar/myproject/ --wsgi-file myproject/wsgi.py --master --processes 4 --threads 2 --stats 127.0.0.1:9191
--chdir 用於指定專案路徑。
我們可以把以上的命令弄成一個 yourfile.ini 組態檔:
[uwsgi] socket = 127.0.0.1:3031 chdir = /home/foobar/myproject/ wsgi-file = myproject/wsgi.py processes = 4 threads = 2 stats = 127.0.0.1:9191
接下來你只需要執行以下命令即可:
uwsgi yourfile.ini
Flask 是一個流行的 Python web 框架。
建立檔案 myflaskapp.py ,程式碼如下:
from flask import Flask app = Flask(__name__) @app.route('/') def index(): return "I am app 1"
執行以下命令:
uwsgi --socket 127.0.0.1:3031 --wsgi-file myflaskapp.py --callable app --processes 4 --threads 2 --stats 127.0.0.1:9191
到此這篇關於Django+Nginx+uwsgi伺服器部署的文章就介紹到這了。希望對大家的學習有所幫助,也希望大家多多支援it145.com。
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45