flask +gevent+nginx+Gunicorn+supervisor部署flask應用


上篇   可以完美部署flask ,但是視乎在結合gevent+apscheduler 實現異步非阻塞后台和定時任務的時候視乎不是那么完美。請教了前輩,決定使用flask+gevent+nginx+gunicorn+supervisor部署

Nginx

Nginx 是高效的 Web 服務器和反向代理服務器,可以用作負載均衡(當有 n 個用戶訪問服務器時,可以實現分流,分擔服務器的壓力),與 Apache 相比,Nginx 支持高並發,可以支持百萬級的 TCP 連接,十萬級別的並發連接,部署簡單,內存消耗少,成本低,但 Nginx 的模塊沒有 Apache 豐富。Nginx 支持 uWSGI 的 uwsgi 協議,因此我們可以將 Nginx 與 uWSGI 結合起來,Nginx 通過 uwsgi_pass 將動態內容交給 uWSGI 處理。

官方文檔在

最好的 Nginx 教程在

Gunicorn 綠色獨角獸 是一個Python WSGI UNIX的HTTP服務器。這是一個pre-fork worker的模型,該Gunicorn服務器大致與各種Web框架兼容,只需非常簡單的執行,輕量級的資源消耗,以及相當迅速。

  准備工作,首先呢,我們先去安裝我們需要的包,首先呢  我這里是我新裝的系統,所以沒有pip,所以我先來去安裝pip
sudo apt-get install python-pip

使用 下面命令去安裝flask

pip install flask

安裝后呢,我們可以去測試下,

import flask

沒有報錯證明我們的flask 是安裝成功的。那么接下來我們要做的就是安裝ngnix

sudo apt-get install nginx

安裝好以后,我們可以先啟動下, nginx start 直接命令行啟動,簡單粗暴

這樣我們的nginx就啟動成功了,接下來,我們就是利用pip 去安裝uwsgi

我們安裝好后,那么接下來就開始開干吧,

首先我在hellowflak下創建一個app的python的包,

#app/__init__.py
from flask import Flask
app = Flask(__name__) from app import view

接下來我們去創建view.py

from app import app
@app.route('/') def index(): return 'hellow'

那么我們去在app同級目錄創建hello.py

from app import app
if __name__ == "__main__": app.run()

,那么我們可以在本地利用Python去調試我們的程序,

那么我們可以在瀏覽器去看看,輸入地址,可以得到這個,這么來看我們flask程序是沒有問題的。

那么我們接下來要做的就是讓nginx去承擔web服務。

我這里做的是簡單粗暴直接刪除nginx的配置文件

$ sudo rm /etc/nginx/sites-enabled/default

接下來,我在FXTtest下創建的一個配置文件

server {
listen 80;
server_name 47.104.199.225 ;
charset utf-8;
client_max_body_size 75M;
location / {
proxy_pass http://127.0.0.1:8000;
}
}

稍作解釋:server_name 可以是域名,也可以寫 ip 地址

那么我們接下來去軟連我們的這個配置到nginx中去。

sudo ln -s /home/FXTest/flaskapi.conf /etc/nginx/conf.d/
這樣我們再去啟動我們的nginx,
sudo /etc/init.d/nginx restart

平滑重啟可以用用,重新加載配置文件,用新的工作進程代替舊的工作進程。
sudo nginx -s reload

我們可以正常去訪問了我們的服務

完工之后,感覺還是很簡單的 有問題那么就去看log,只要log配置得當,那么排除錯誤是很快的。

我已經成功的把我寫的部署到了阿里雲上面。 

增加supervisor管理,當chrash了,可以自動重啟

安裝后/etc/supervisor/conf.d/ 配置一個文件,如下 簡單配置

command=gunicorn -b :8000 -w 2 manage:app
autostart=ture
autorestart=true
stdout_logfile=/home/FXTest/supervisor.log
user=root


配置后啟動

service supervisor start

終止服務

service supervisor stop

 

有疑問可以加我qq:952943386或者我的qq群194704520

希望大家一起沖菜鳥飛到更高


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM