摘要:網(wǎng)上有很多種發(fā)布部署的方式,這里我使用的是發(fā)布。但當(dāng)我部署成功后,我發(fā)現(xiàn)了一個(gè)問題。再說回問題當(dāng)我用的命令啟動(dòng)服務(wù)時(shí),發(fā)現(xiàn)的正則表達(dá)式的路徑轉(zhuǎn)發(fā)規(guī)則發(fā)生了問題。導(dǎo)致訪問地址發(fā)生跳轉(zhuǎn)不正常和錯(cuò)誤的現(xiàn)象。,下面說回正題,介紹如何部署。
網(wǎng)上有很多種發(fā)布部署flask的方式,這里我使用的是Gunicorn、nginx發(fā)布flask。
先說明一下為什么不使用supervisor,之前我也是按照一些文章中的推薦采取nginx、gunicorn和supervisor的方式部署。但當(dāng)我部署成功后,我發(fā)現(xiàn)了一個(gè)問題。
寫到這里先介紹一下supervisor是什么:網(wǎng)上正規(guī)的解釋為supervisor是linux進(jìn)程管理的工具。而我將其理解為其對(duì)gunicorn命令封裝后的工具(當(dāng)然不只是針對(duì)gunicorn,像nginx也可以用其管理,這里是為了方便理解)。如果用supervisor啟動(dòng)flask,那么可以看成:supervisor調(diào)用gunicorn把flask的服務(wù)啟動(dòng)。
再說回問題:當(dāng)我用supervisor的命令啟動(dòng)服務(wù)時(shí),發(fā)現(xiàn)nginx的正則表達(dá)式的url路徑轉(zhuǎn)發(fā)規(guī)則發(fā)生了問題。導(dǎo)致訪問url地址發(fā)生跳轉(zhuǎn)不正常和404錯(cuò)誤的現(xiàn)象。當(dāng)然錯(cuò)誤的原因不排除我安裝配置的原因,這里不做詳細(xì)的解釋,只是我沒有解決其問題。但就像之前介紹的supervisor只是對(duì)進(jìn)程的管理工具(也可以理解為對(duì)gunicorn命令的封裝),并不對(duì)服務(wù)本身有什么影響,只是日常啟動(dòng)、重啟、停止服務(wù)時(shí)命令行多了一些而已罷了。
ok,下面說回正題,介紹如何部署flask。
1.安裝python、virtualenv、flask、nginx這些前置工作這里就不介紹了,網(wǎng)絡(luò)上有很多文檔和詳細(xì)的步驟可以參考。
2.創(chuàng)建項(xiàng)目創(chuàng)建一個(gè)文件夾test,在該文件夾創(chuàng)建test.py文件
mkdir test cd test touch test.py
編寫一個(gè)簡單的例子
#encoding:utf-8 from flask import Flask app = Flask(__name__) @app.route("/") def index(): return "hello woody" @app.route("/test/") def test(): return "test" @app.errorhandler(404) def page_not_found(error): return "sorry that is my 404" #if __name__ == "__main__": # app.run(host="0.0.0.0",port=5000,debug=True)3.安裝gunicorn
最新版的virtualenv自帶了gunicorn,如果沒有,請(qǐng)?jiān)谔摂M環(huán)境手動(dòng)安裝
pip install gunicorn4.啟動(dòng)flask
進(jìn)入剛創(chuàng)建的項(xiàng)目文件夾下,用命令行啟動(dòng)
cd test gunicorn -w2 -b0.0.0.0:9016 test:app
-w指的是worker(啟動(dòng)的進(jìn)程),后面跟的數(shù)字是worker的數(shù)量-b指的是bind(綁定ip),后面是ip:port地址和端口號(hào),0.0.0.0代表所有地址
test指的是入口文件的文件名
app指的是入口文件中Flask()對(duì)象的變量名,這里上面的程序中是app
注:如果想靜默啟動(dòng)(后臺(tái)啟動(dòng)),可以在后面加個(gè) -D 的參數(shù)
gunicorn -w2 -b0.0.0.0:9016 test:app -D5.nginx配置
location /api/ { proxy_pass http://127.0.0.1:9016/; #proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; }
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/44566.html
摘要:試想,在多線程服務(wù)器中,多個(gè)線程同時(shí)處理不同客戶端發(fā)送的不同請(qǐng)求時(shí),每個(gè)線程看到的對(duì)象必然不同。多線程服務(wù)器會(huì)創(chuàng)建一個(gè)線程池,再從線程池中選擇一個(gè)線程用于處理接收到的請(qǐng)求。 框架 Django flask flask是一個(gè)輕量的web開發(fā)應(yīng)用示例開發(fā)一個(gè)小應(yīng)用 from flask import Flask app = Flask(__name__) @app.route(/) d...
摘要:月份發(fā)布了第版,收到不少網(wǎng)友的良好建議,所以又抽空進(jìn)行了完善,當(dāng)然也拖了不少時(shí)間。本書主要介紹的基本使用,這也是我一開始在學(xué)習(xí)過程中經(jīng)常用到的。第章實(shí)戰(zhàn),介紹了如何開發(fā)一個(gè)簡單的應(yīng)用。聲明本書由編寫,采用協(xié)議發(fā)布。 showImg(https://segmentfault.com/img/remote/1460000007484050?w=200&h=152); 書籍地址 head-f...
摘要:回顧通過前幾篇文章的內(nèi)容我們已經(jīng)搭建了基于框架的一個(gè)簡單的應(yīng)用的代碼如下此外我們還為其申請(qǐng)了公網(wǎng)和域名并且部署了的證書現(xiàn)在當(dāng)我們?cè)跒g覽器地址欄輸入即可訪問我們的網(wǎng)站不過我們的網(wǎng)站目前還存在幾個(gè)問題無法訪問每次都需要用戶手動(dòng)輸入前綴以制定形式 回顧 通過前幾篇文章的內(nèi)容, 我們已經(jīng)搭建了基于 Flask 框架的一個(gè)簡單的 Web 應(yīng)用, server.py 的代碼如下 from f...
摘要:生產(chǎn)環(huán)境下,自帶的服務(wù)器,無法滿足性能要求。配置前面我們已經(jīng)在系統(tǒng)環(huán)境下安裝了安裝好的二進(jìn)制文件放在文件夾下,接下來使用來管理。參考文章探針安裝部署部署筆記在生產(chǎn)環(huán)境上部署使用詳解本文系工程師編譯整理。 由于字?jǐn)?shù)的限制,其實(shí)本篇文章的全標(biāo)題為 《如何在 virtualenv 環(huán)境下 Django + Nginx + Gunicorn+ Supervisor 搭建 Python Web》...
摘要:生產(chǎn)環(huán)境下,自帶的服務(wù)器,無法滿足性能要求。配置前面我們已經(jīng)在系統(tǒng)環(huán)境下安裝了安裝好的二進(jìn)制文件放在文件夾下,接下來使用來管理。參考文章探針安裝部署部署筆記在生產(chǎn)環(huán)境上部署使用詳解本文系工程師編譯整理。 由于字?jǐn)?shù)的限制,其實(shí)本篇文章的全標(biāo)題為 《如何在 virtualenv 環(huán)境下 Django + Nginx + Gunicorn+ Supervisor 搭建 Python Web》...
閱讀 2365·2021-09-26 10:21
閱讀 2851·2021-09-08 09:36
閱讀 3099·2019-08-30 15:56
閱讀 982·2019-08-30 12:57
閱讀 970·2019-08-26 10:39
閱讀 3590·2019-08-23 18:11
閱讀 3119·2019-08-23 17:12
閱讀 1140·2019-08-23 12:18