Node.js 12:《線上部署:heroku》

2018-08-07 15:23 更新

目標

將 https://github.com/Ricardo-Li/node-practice-2 這個項目部署上 heroku,成為一個線上項目

我部署的在這里 http://serene-falls-9294.herokuapp.com/

知識點

  1. 學習 heroku 的線上部署(https://www.heroku.com/ )

課程內(nèi)容

什么是 heroku

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 分支:

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號