服務器系統(tǒng):ubuntu 16.04 LTS python環(huán)境:3.6
Flask?
Flask是一個使用python代碼編寫的輕量級web框架负敏,可以通過簡易的配置快速實現(xiàn)各類web服務功能。常用于web_api秘蛇、個人博客其做、中小型服務網站搭建。
flask的搭建流程就不細說了彤叉,大致如下: 1 通過pip 安裝flask 依賴
? ??????pip install flask
2 新建run.py文件 引入flask模塊
????????flask import Flask,request
????????import json #通常還會引入json模塊
????????from flask_cors import CORS #跨域訪問 cors 按需要配置
????????app = Flask(__name__)
????????CORS(app, supports_credentials=True) #可去除
????????@app.route('/')?
????????def hello_world():
? ? ???????? return 'Hello World!'
????????@app.route('/test', methods=['GET'])
????????def test():? # 導入:
????????# 取參數
? ????????? text = request.args.get('text')
? ? ????????return json.dumps(text)
????????if __name__ == '__main__':
? ? ????????app.run(debug=True,port=5000)
然后執(zhí)行 python run.py 就可以在本地的5000端口看到helloworld界面了庶柿。
Gunicorn
這是一個被廣泛使用的高性能的Python WSGI UNIX HTTP服務器,也有人選擇uWsgi可以達到同樣的效果。
首先安裝:
pip install gunicorn
然后在flask 配置文件中添加如下代碼:
????????from werkzeug.contrib.fixers import ProxyFix
? ? ????????app.wsgi_app = ProxyFix(app.wsgi_app)
這時候便在flask工程中引入了wsgi代理秽浇。gunicorn支持多種worker模式浮庐,包括:
1 sync - 默認,使用同步阻塞的網絡模型
2 gevent - Requires gevent >= 0.13
3 tornado - Requires tornado >= 0.2 等
本教程選用gevent模式:
pip install gevent
使用下面命令便可通過gunicorn啟動flask:
gunicorn -w 4 -b 0.0.0.0:5000 -k gevent run:app
(-w 4 表示啟動4個worker -k gevent 表示選擇gevent模式)
Nginx的對應配置?詳見本博客另一篇教程柬焕,簡單說就是把5000端口映射到nignx代理就行了审残,就可以實現(xiàn)通過nginx轉發(fā)http請求。
supervisor?服務端運維的重點斑举,系統(tǒng)中各類進程的守護者搅轿。由于不支持python3的環(huán)境,所以配置會稍微麻煩一點,我們需要通過virtualenv 創(chuàng)建一個python2虛擬環(huán)境富玷。
pip install virtualenv
首先在自定義目錄下創(chuàng)建 super 虛擬環(huán)境
virtualenv --distribute -p /usr/bin/python2 super
cd super
source bin/activate? ? #激活虛擬環(huán)境
./bin/pip install supervisor# 安裝supervier
echo_supervisord_conf > supervisor.conf? # 生成 supervisor 默認配置文件
#熱后便可以通過以下命令對supervisor進行操作:
supervisord -c supervisor.conf #通過配置文件啟動supervisor
supervisorctl -c supervisor.conf status #察看supervisor的狀態(tài)
supervisorctl -c supervisor.conf reload 重新載入 #配置文件
supervisorctl -c supervisor.conf start [all]|[appname] #啟動指定/所有 supervisor管理的程序進程
supervisorctl -c supervisor.conf stop [all]|[appname] 關閉指定/所有 supervisor管理的程序進程
supervisor.conf中配置對應的gunicorn應用,其他類型的應用配置也類似璧坟,比如java的springboot。
[program:start_gunicorn]
command=/your/bin/path/to/gunicorn -w 4 -b 0.0.0.0:5000 -k gevent run:app
directory:/home/ubuntu/project/test1/ #run.py所在的目錄
autostart=true
redirect_stderr=true
user=root
directory=/usr/local/qs-project/web
stdout_logfile=/var/log/test_test.log
如果要啟用supervisor的web端:9001端口.
需要注釋掉 配置文件中
[inet_http_server] 的所有子配置項
以及
[supervisorctl] 中的前四項
deactivate? #退出環(huán)境
至此赎懦,F(xiàn)lask的服務端部署教程結束雀鹃。