將 https://github.com/Ricardo-Li/node-practice-2 這個項目部署上 heroku,成為一個線上項目
我部署的在這里 http://serene-falls-9294.herokuapp.com/
heroku 是弄 ruby 的 paas 起家,現(xiàn)在支持多種語言環(huán)境,更甚的是它強大的 add-on 服務。
paas 平臺相信大家都不陌生。Google 有 gae,國內(nèi)新浪有 sae。paas 平臺相對 vps 來說,不需要你配置服務器,不需要裝數(shù)據(jù)庫,也不需要理會負載均衡。這一切都可以在平臺上直接獲取。
你只要專注自己的業(yè)務,把應用的邏輯寫好,然后發(fā)布上去,應用自然就上線了。數(shù)據(jù)庫方面,如果你用 mysql,那么你可以從平臺商那里得到一個 mysql 的地址、賬號和密碼,直接連接就能用。如果應用的流量增大,需要橫向拓展,則只用去到 paas 平臺的管理頁面,增大服務器實例的數(shù)量即可,負載均衡會自動幫你完成。
說起來,我之所以對于 web 開發(fā)產(chǎn)生興趣也是因為當年 gae 的關系。那時候除了 gae 之外,沒有別的 paas 平臺,gae 是橫空出世的。有款翻墻的軟件,叫 gappproxy(https://code.google.com/p/gappproxy/ )——可以認為是 goagent 的前身——就是搭建在 gae 上面的,不僅快,而且免費。于是我就很想弄懂這樣一個程序是如何開發(fā)的。好在 gappproxy 是開源的,于是我下了源碼來看,那時候才大一,只學過 c,看到那些 python 代碼就凌亂了。于是轉頭也去學 python,后來漸漸發(fā)現(xiàn)了 web 開發(fā)的樂趣,于是 ruby 和 node.js 也碰碰。后來 goagent 火起來了,我又去看了看它的代碼,發(fā)現(xiàn)非常難看,就自己寫了個 https://github.com/alsotang/keepagent 。不過現(xiàn)在回想起來,還是 goagent 的實現(xiàn)比較穩(wěn)定以及效率高。
heroku 的免費額度還是足夠的,對于 demo 應用來說,放上去是綽綽有余的。各位搞 web 開發(fā)的大學生朋友,一定要試著讓你開發(fā)的項目盡可能早地去線上跑,這樣你的項目可以被其他人看到,能夠促使你更有熱情地進行進一步開發(fā)。這回我們放的是 cnode 社區(qū)的爬蟲上去,你其實可以試著為你們學院或者學校的新聞站點寫個爬蟲,提供 json api,然后去申請個微信公共平臺,每天推送學院網(wǎng)站的新聞。這東西輔導員是有需求的,可以做個給他們用。
好了,我們先 clone https://github.com/Ricardo-Li/node-practice-2 這個項目。由于我們這回講部署,所以代碼就用現(xiàn)成的了,代碼的內(nèi)容就是 lesson 3(https://github.com/alsotang/node-lessons/tree/master/lesson3 ) 里面的那個爬蟲。
clone 下來以后,我們?nèi)タ纯创a。代碼中有兩個特殊的地方,
一個是一個叫 Procfile 的文件,內(nèi)容是:
web: node app.js
一個是 app.js 里面,
app.listen(process.env.PORT || 5000);
這兩者都是為了部署 heroku 所做的。
大家有沒有想過,當部署一個應用上 paas 平臺以后,paas 要為我們干些什么?
首先,平臺要有我們語言的運行時;
然后,對于 node.js 來說,它要幫我們安裝 package.json 里面的依賴;
然后呢?然后需要啟動我們的項目;
然后把外界的流量導入我們的項目,讓我們的項目提供服務。
上面那兩處特殊的地方,一個是啟動項目的,一個是導流量的。
heroku 雖然能推測出你的應用是 node.js 應用,但它不懂你的主程序是哪個,所以我們提供了 Procfile 來指導它啟動我們的程序。
而我們的程序,本來是監(jiān)聽 5000 端口的,但是 heroku 并不知道。當然,你也可以在 Procfile 中告訴 heroku,可如果大家都監(jiān)聽 5000 端口,這時候不就有沖突了嗎?所以這個地方,heroku 使用了主動的策略,主動提供一個環(huán)境變量process.env.PORT
來供我們監(jiān)聽。
這樣的話,一個簡單 app 的配置就完成了。
我們?nèi)?nbsp;https://www.heroku.com/ 申請個賬號,然后下載它的工具包 https://toolbelt.heroku.com/ ,然后再在命令行里面,通過 heroku login
來登錄。
上述步驟完成后,我們進入 node-practice-2
的目錄,執(zhí)行 heroku create
。這時候,heroku 會為我們隨機取一個應用名字,并提供一個 git 倉庫給我們。
接著,往 heroku 這個遠端地址推送我們的 master 分支:
更多建議: