web框架致力於如何生成html**,而web伺服器用於處理和響應http請求。web框架和web伺服器之間的通訊,需要一套雙方都遵守的介面協議。wsgi協議就是用來統一這兩者的介面的。
常用的wsgi容器有gunicorn和uwsgi,但gunicorn直接用命令啟動,不需要編寫配置檔案,相對uwsgi要容易很多,所以這裡我也選擇用gunicorn作為容器。
gunicorn是乙個python wsgi http server,只支援在unix系統上執行,**於ruby的unicorn專案。gunicorn使用prefork master-worker模型(在gunicorn中,master被稱為arbiter),能夠與各種wsgi web框架協作。
gunicorn安裝非常簡單,使用命令pip install gunicorn即可。一般使用它,主要是為使用其非同步的worker模型,還需要安裝對應的非同步模組。
$ pip install greenlet # 使用非同步必須安裝
$ pip install eventlet # 使用eventlet workers
$ pip install gevent # 使用gevent workers
這裡使用gunicorn來部署乙個flask專案舉例,此處flask框架的使用不過多闡述,不是本文的重點。
from flask import flask
def hello():
return "hello world!"
gunicorn通常使用的引數如下:
-c config, --config=config
# 設定配置檔案。
-b bind, --bind=bind
# 設定服務需要繫結的埠。建議使用host:port。
-w workers, --workers=workers
# 設定工作程序數。建議伺服器每乙個核心可以設定2-4個。
-k module
# 選定非同步工作方式使用的模組。
在shell中輸入你的啟動配置,比如:
這樣執行正常就可以啟動伺服器了。
linux通常會禁止繫結使用1024以下的埠,除非在root使用者許可權。很多人在使用gunicorn時試圖將其繫結到80或者443埠,發現無效。如果想繫結到這些埠,常見的有如下的幾種方法:
使用ps -ef | grep gunicorn命令找出gunicorn所有程序。
[root@vm_0_12_centos ~]# ps -ef | grep gunicorn
然後使用 kill -9 程序id 命令來殺掉程序,注意,我們找到主程序殺掉即可,子程序會隨之結束,在上例中,主程序號為23035.
[root@vm_0_12_centos ~]# kill -9 23035
[root@vm_0_12_centos ~]# ps -ef | grep gunicorn
殺掉程序後,稍等幾秒,再使用ps -ef | grep gunicorn檢視,發現gunicorn服務程序已全部殺掉。
**:
使用gunicorn部署Flask
gunicorn是乙個python wsgi的web服務框架,只支援在unix系統上執行,於ruby的unicorn專案。gunicorn使用prefork master worker模型,能夠與各種wsgi web框架協作。gunicorn安裝非常簡單,使用命令pip install guncor...
使用gunicorn部署django專案
python mange.py runserver 0.0 0.0 8000gunicorn 綠色獨角獸 是乙個被廣泛使用的高效能的python wsgi unix http伺服器 pip install gunicorn gunicorn w 2 b 0.0.0.0 8000 project dj...
使用gunicorn部署flask專案
目錄web框架致力於如何生成html 而web伺服器用於處理和響應http請求。web框架和web伺服器之間的通訊,需要一套雙方都遵守的介面協議。wsgi協議就是用來統一這兩者的介面的。常用的wsgi容器有gunicorn和uwsgi,但gunicorn直接用命令啟動,不需要編寫配置檔案,相對uws...