flask服務(wù)器部署全流程

開始前的逼逼賴賴

本人前端攻走,在學(xué)校學(xué)過點PHP,用原生PHP寫過接口此再,寫了很多重復(fù)代碼昔搂。后嘗試學(xué)習(xí)thinkPHP,沒學(xué)下去输拇。


0123CD3B.jpg

之后接觸了Python摘符,感覺Python語法還挺簡潔的,又看了看Python的后端框架策吠,選中了flask逛裤,或許flask不是主流,但管他呢猴抹,自己用的舒服就行了带族。

flask或許確實有點小眾了,網(wǎng)上沒多少教程洽糟,很多東西還是得靠自己摸索炉菲。我為了學(xué)習(xí)規(guī)范一點的代碼,跑到Gitee上找一些成熟的項目看源碼坤溃。

一路摸索過來踩了無數(shù)雷拍霜,所以想留下一點教程幫助后來的人吧。


正文:

部署flask項目網(wǎng)上其實也有一些教程薪介,我也嘗試過很多不同的方法祠饺,主要就是兩種方法:

  • 常規(guī)方法,把項目搬到服務(wù)器上汁政,安裝環(huán)境道偷,使用uWSGIgunicorn啟動項目缀旁,這里使用的就是這種方法。
  • 懶人方法勺鸦,把項目搬到服務(wù)器上并巍,生成環(huán)境配置清單文件,使用寶塔的Python項目管理器一鍵部署换途。

寶塔的一鍵部署我也試過(畢竟是懶人懊渡,能一鍵部署誰不想試試呢~)。不過要說的是军拟,體驗極差剃执,極不推薦。一鍵部署雖然簡單安逸懈息,但bug極多肾档,而且沒有log,寶塔的log只在項目啟動的時候有輸出辫继,項目運行后就消無聲息了怒见,這意味著一旦報錯連報錯提示都沒有。更別說一些莫名其妙的bug骇两,我嘗試了很久最后還是放棄了速种。不過bug只是暫時的姜盈,但愿寶塔能越做越好低千,讓每個用戶都能真正地一鍵部署吧。

所以這里是教大家馏颂,使用一種盡可能 簡單便捷示血、少報錯方便管理 的方式部署flask項目救拉。所以各位懶人难审,如果真的想少花點時間少花點精力亿絮,建議使用以下看起來有點復(fù)雜方法告喊,千萬不要輕易嘗試寶塔一鍵部署。

開心

首先要同步代碼到云端派昧,這里使用Pycharm同步代碼

我用的是pycharm2021.3.1黔姜,最好使用比較新的版本,老版本不支持一鍵生成flask項目蒂萎,SSH也是較新版本才有的功能秆吵。

  • 點擊tools->Deployment->Configuration
設(shè)置
  • 配置服務(wù)器的公網(wǎng)ip,端口號一般是22五慈,可以在寶塔的安全里看到:
ssh 端口
image.png

上面這個框框纳寂,點SSH configuration右邊的三個點填寫ssh配置主穗,需要輸入賬號密碼
ssh config

image.png
  • 再配置項目在服務(wù)器中的位置,以下配置項目將更新到該指定路徑 /tmp/pycharn_project_30
    配置項目路徑
  • 配置好后可以點擊菜單tools->Deployment->Upload to ...更新當(dāng)前打開文件的代碼
    Upload All Opened Files to ...是更新所有文件
    image.png

配置云端的Python環(huán)境

將項目上傳到服務(wù)器后毙芜,由于服務(wù)器沒有Python的環(huán)境忽媒,所以通過以下方式為服務(wù)器安裝環(huán)境。

  • 點擊settings->project
image.png

image.png
  • 點擊Python版本右邊的設(shè)置按鈕腋粥,點add,在彈出來的窗口左邊選ssh猾浦,填寫服務(wù)器公網(wǎng)IP和端口,點Next
    image.png
image.png
  • 配置好后變成這樣:
    image.png

這里可以不應(yīng)用灯抛,在這里為服務(wù)器安裝Python版本和插件就行了金赦,安裝了Python后在服務(wù)器也可以使用pip安裝插件,但大概率會出現(xiàn)報錯对嚼,而且無法更新到最新版本(親身經(jīng)歷)夹抗。在這里可以輕松地安裝和管理插件。

  • 點擊左上角的加號安裝插件纵竖。

    image.png

  • 上方輸入插件名漠烧,就會顯示插件的最新版本,一鍵安裝

    image.png

  • 這里會顯示當(dāng)前版本和最新版本靡砌,三角箭頭表示可以升級已脓。

    image.png


配置好服務(wù)器環(huán)境后,就要運行項目了

其實配置好服務(wù)器環(huán)境后通殃,可以在項目根目錄下啟動終端度液,像在本地運行項目一樣輸入python app.py啟動項目,但會打印一個警告:

image.png

翻譯過來就是這是一個開發(fā)服務(wù)器画舌。不要在生產(chǎn)部署中使用它堕担。
百度之后,說說我的理解:
flask本身的服務(wù)器容器性能非常弱曲聂,記住是非常霹购,只能在本地開發(fā)用用,不推薦在生產(chǎn)環(huán)境下使用朋腋,注意這只是個警告而不是報錯齐疙,實際還可以用用。我自己測試過旭咽,代碼寫一點簡單的邏輯還可以用贞奋,稍微復(fù)雜一點,驗證了一下token就芭比Q了轻专,直接報超時忆矛。所以還是非常有必要使用第三方的容器提升一下性能的。

目前有兩大獨立WSGI容器,uWSGIgunicorn

這里只講如何使用gunicorn催训,感興趣的可以看看這篇文章:https://zhuanlan.zhihu.com/p/50857407


使用gunicorn運行flask項目

  • 首先打開終端安裝gunicorn
    老配方
pip install gunicorn

安裝完成可以使用-h命令查看幫助

gunicorn -h
  • 直接運行項目gunicorn 啟動文件名:flask實例名
    此處app:app中洽议,第一個app為flask項目實例所在的包(就是啟動文件app.py),第二個app為生成的flask項目實例(就是你app.py里定義的flask實例)漫拭。
    flask實例:
app = Flask(__name__)

所以我這里是:

gunicorn app:app
  • gunicorn默認(rèn)的host是127.0.0.1也就是本地亚兄,我試了一下運行后,訪問不了采驻。也就需要手動改一下配置审胚。有兩種方法,個人感覺都挺扯淡的礼旅。
  • 一種是直接上命令膳叨,使用-b host:port
gunicorn -b 123.456.7.8:5000 app:app

這樣就直接運行了,下次運行還得重新輸入host:port

無語

  • 還有一種方法痘系,首先手動創(chuàng)建一個配置文件gunicorn_config.py菲嘴,其實名字隨便取,然后在文件內(nèi)輸入私網(wǎng)ip地址加端口汰翠,注意端口號要在安全組放行龄坪。
bind = '123.0.2.3:8000'

更多的配置可以看這篇文章:
https://blog.csdn.net/u012856866/article/details/119384985

注意一定要是私網(wǎng)ip,不能使用公網(wǎng)复唤,不知道私網(wǎng)可以看控制臺健田,這里是阿里云的控制臺

image.png

然后就可以輸入命令,讓gunicorn根據(jù)配置文件啟動gunicorn -c 文件名.py 啟動文件名:實例名

gunicorn -c gunicorn_config.py app:app

而然佛纫,每次啟動都還是要敲一遍文件名妓局,(為什么不能讓配置永遠(yuǎn)生效!!!),所以我建議各位雳旅,配置文件名越短越好跟磨,比如gun.py间聊、conf.py攒盈、a.py... 簡短的名字能一定程度上少敲一點代碼。

如果運行后一直重復(fù)連接哎榴,可以換個端口型豁,注意安全組要放行,配置要使用私網(wǎng)ip尚蝌,訪問要使用公網(wǎng)ip迎变,其他應(yīng)該沒什么要注意的了。

這樣就是ip無效或端口未放行導(dǎo)致連接不上:

image.png

最終運行成功效果:

在后臺運行項目

成功運行后關(guān)閉cmd窗口會殺掉進(jìn)程(我的不會殺進(jìn)程飘言,但是接口依然不能使用)衣形。
所以要想辦法讓進(jìn)程在后臺運行,命令如下:

gunicorn -b post.py app:app --daemon

只要在后面加一個--daemon就可以了,這段命令運行后是沒有任何提示的谆吴,不過可以通過以下命令查看正在運行的進(jìn)程:

sudo lsof -iTCP -sTCP:LISTEN -P | grep gunicorn

可以看到在gunicorn -b post.py app:app --daemon輸入后雖然沒有任何提示倒源,但是會有進(jìn)程被生成,命令已經(jīng)生效了句狼,如果想要關(guān)閉可以運行以下命令:

sudo kill -9 【進(jìn)程號】

ps: 百度到的命令都是奇奇怪怪而且沒有用笋熬,甚至有一段命令nohup還是啥,運行后沒有啥子用的同時進(jìn)程號還是動態(tài)的腻菇,沒法用命令關(guān)閉胳螟,害得我只能重啟服務(wù)器。筹吐。糖耸。

至此項目運行成功仇参,圓滿結(jié)束

謝謝大家

image.png
05745415.gif
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末吆玖,一起剝皮案震驚了整個濱河市严衬,隨后出現(xiàn)的幾起案子引镊,更是在濱河造成了極大的恐慌盟劫,老刑警劉巖西壮,帶你破解...
    沈念sama閱讀 221,695評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件涡戳,死亡現(xiàn)場離奇詭異皿淋,居然都是意外死亡凰兑,警方通過查閱死者的電腦和手機妥粟,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,569評論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來吏够,“玉大人勾给,你說我怎么就攤上這事」” “怎么了播急?”我有些...
    開封第一講書人閱讀 168,130評論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長售睹。 經(jīng)常有香客問我桩警,道長,這世上最難降的妖魔是什么昌妹? 我笑而不...
    開封第一講書人閱讀 59,648評論 1 297
  • 正文 為了忘掉前任捶枢,我火速辦了婚禮,結(jié)果婚禮上飞崖,老公的妹妹穿的比我還像新娘烂叔。我一直安慰自己,他們只是感情好固歪,可當(dāng)我...
    茶點故事閱讀 68,655評論 6 397
  • 文/花漫 我一把揭開白布蒜鸡。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪逢防。 梳的紋絲不亂的頭發(fā)上康聂,一...
    開封第一講書人閱讀 52,268評論 1 309
  • 那天,我揣著相機與錄音胞四,去河邊找鬼恬汁。 笑死,一個胖子當(dāng)著我的面吹牛辜伟,可吹牛的內(nèi)容都是我干的氓侧。 我是一名探鬼主播,決...
    沈念sama閱讀 40,835評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼导狡,長吁一口氣:“原來是場噩夢啊……” “哼约巷!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起旱捧,我...
    開封第一講書人閱讀 39,740評論 0 276
  • 序言:老撾萬榮一對情侶失蹤独郎,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后枚赡,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體氓癌,經(jīng)...
    沈念sama閱讀 46,286評論 1 318
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,375評論 3 340
  • 正文 我和宋清朗相戀三年贫橙,在試婚紗的時候發(fā)現(xiàn)自己被綠了贪婉。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,505評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡卢肃,死狀恐怖疲迂,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情莫湘,我是刑警寧澤尤蒿,帶...
    沈念sama閱讀 36,185評論 5 350
  • 正文 年R本政府宣布,位于F島的核電站幅垮,受9級特大地震影響腰池,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜军洼,卻給世界環(huán)境...
    茶點故事閱讀 41,873評論 3 333
  • 文/蒙蒙 一巩螃、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧匕争,春花似錦、人聲如沸爷耀。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,357評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至跑杭,卻和暖如春铆帽,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背德谅。 一陣腳步聲響...
    開封第一講書人閱讀 33,466評論 1 272
  • 我被黑心中介騙來泰國打工爹橱, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人窄做。 一個月前我還...
    沈念sama閱讀 48,921評論 3 376
  • 正文 我出身青樓愧驱,卻偏偏與公主長得像,于是被迫代替她去往敵國和親椭盏。 傳聞我的和親對象是個殘疾皇子组砚,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,515評論 2 359

推薦閱讀更多精彩內(nèi)容