跟著教程制作并改編了簡單的web應(yīng)用派歌,第一個想到的當(dāng)然是部署到托管網(wǎng)站埃撵。通常來說部署有三種選擇雇寇,第一種是自己找個機(jī)子搭一個服務(wù)器氢拥,不太現(xiàn)實(shí)哈蚌铜,第二種和第三種其實(shí)都算云服務(wù)器的內(nèi)容,一種是租個虛擬機(jī)嫩海,從頭開始搭建環(huán)境冬殃,常用的azure,aws,還有國內(nèi)的阿里云等都提供了這樣的解決方案,通常被稱為 IaaS: Infrastructure-as-a-Service(基礎(chǔ)設(shè)施即服務(wù))叁怪。另一種則是使用更加方便的PaaS: Platform-as-a-Service(平臺即服務(wù))审葬,網(wǎng)頁應(yīng)用管理,應(yīng)用設(shè)計奕谭,應(yīng)用虛擬主機(jī)涣觉,存儲,安全以及應(yīng)用開發(fā)協(xié)作工具都可以使用這種方案呈現(xiàn)血柳,代表的有l(wèi)eancloud,heroku,pythonanywhere等官册。
其中heroku既是flask狗書上推薦的部署方式,又是老牌的PaaS服務(wù)平臺难捌,同時github for students也提供了關(guān)聯(lián)heroku的優(yōu)惠政策膝宁。種種原因,我們在這兒選擇heroku作為試水部署的網(wǎng)站根吁。
一
首先我曾經(jīng)在申用過heroku的app员淫,作為中轉(zhuǎn)redirect我的簡書主頁,過程很簡單击敌,只需要在VS中上傳到github,然后在heroku中使用github的連接满粗,傻瓜式配置。不需要數(shù)據(jù)庫愚争,不需要靜態(tài)文件映皆,因此還是很快可以配置成功的,主要是需要在requirement文件中加入這兩個東西:
gunicorn
psycopg2
同時還要新建一個Procfile文件轰枝,并寫句話:
web: gunicorn app:app
需要注意的是,前面這個app意味著是你的程序或者程序包的名字捅彻,后面這個app即你在views視圖中定義路徑使用到的app:
@app.route('/', methods=['GET', 'POST'])
這兩個名字需要做相關(guān)的修改方可使用。
二
按照同樣的方法鞍陨,我開始對這個項(xiàng)目進(jìn)行配置步淹,這里出現(xiàn)過幾個微不足道的小錯誤,一筆帶過了诚撵,比如“Procfile”寫成了“Profile”,又或者“Procfile”帶了后綴缭裆,這些都是大家需要注意的。
Biuld Log如下:
-----> Python app detected
-----> Installing requirements with pip
-----> Discovering process types
Procfile declares types -> web
-----> Compressing...
Done: 51.5M
-----> Launching...
Released v14
https://starinsun.herokuapp.com/ deployed to Heroku
可能配置的build log如圖所示寿烟,但是web應(yīng)用還是有錯誤澈驼,這時就要看“Procfile”文件的內(nèi)容是不是正確的對應(yīng)了你的web應(yīng)用。
三
雖然最終弄好了筛武,但是可能由于SQLite這種數(shù)據(jù)庫文件的形式不被heroku所支持缝其,因此網(wǎng)站的信息會緩存一段時間然后消失挎塌,可能以后需要配置redit或者其他數(shù)據(jù)庫。
只是一個簡單的部署嘗試内边,但是部署是真的很麻煩呀榴都。