2015年7月29日 星期三

[Node.js]在Heroku上連結Github部屬Node.js應用程式

在做了一個簡單的Node.js的app後,當然就想要讓他上線看看啊!
在沒有實體IP,沒有足夠的$$的支持下,找雲端平台來建置是一個不錯的解決方案。
Node.js官方有整理了目前支援建置Node.js專案的平台整理。

看了看原本決定要用IBM Bluemix,但是嘗試了老半天,發現他一直給我failed to accept connections within health check timeout這樣的錯誤訊息,嘗試了老半天發現貌似是因為http.listen的關係,但無論怎麼做修改都不法正確部屬上去,也不是十分清楚到底為什麼,有沒有高手可以給小弟解答啊!

最後只好換一個平台來建置,這次選一個看過有人成功部屬相關程式的平台Heroku
而且他的免費方案也非常親民,但因為沒權限不能安裝他所提供的部屬程式,害我以為完蛋又要碰壁。
還好皇天不負苦心人,在建立應用程式後發現可以使用網頁來連結github部屬,真是太棒了!
馬上來看看怎麼利用網頁連結github部屬Node.js應用程式吧!

首先,到Heroku官網,建立帳號,點選Dashboard。



接著選擇右上角的 + 號來建立應用程式。



建立完應用程式後看到上面的標籤有Deploy的選項,選項中有Github部屬的方法,將heroku帳號與你的GitHub帳號連結就可以直接從Github下載檔案部屬上去囉!



在部屬Node.js過程中,遇到幾個檔案或設定必須注意的,首先是project.json。
{
  "name": "Howard's-socket-chat",
  "version": "1.0.0",
  "description": "my first socket.io app",
  "main": "index.js",
  "scripts": {
    "start": "node index.js"
  },
  "keywords": [
    "chat room",
    "socket.io"
  ],
  "author": "howard-yang",
  "license": "MIT",
  "dependencies": {
    "express": "4.12.4",
    "socket.io": "1.3.5"
  },
  "engines": {
    "node": "0.12.x"
  }
}

這之中比較需要注意的參數有main、start來決定node執行的起始點,dependencies則是記錄這個專案有用到那些Node的擴充套件。
這些很重要,因為在部屬過程中,基本上就是看這個檔案來安裝、執行Node.js程式的。

再來就是procfile,這個檔案內容也很簡單。
web: node index.js
就是設定運行時所下的command。

最後就是如果有用到http.listen的話,雖然在本機執行可以直接給參數,但在雲端中記得要使用下面的語法,設定process的參數喔。
http.listen(process.env.PORT || 3000);

歡迎來玩Howard's Chat Room
想要看如何撰寫的請參考這裡

2 則留言: