部署 Node.js 程式到 Heroku

因為在找有沒有地方可以放自己寫的程式,所以找上了Heroku,而且為了申請主機、網域和轉移原本的wordpress到自己的主機花了不少時間,原本給wordpress管會沒辦法裝插件,就決定來搬一下家了。

準備

首先,請到Heroku官方網站申請帳號

heroku_2

然後安裝Heroku Toolbelt

部署步驟

  1. 建立package.json
  2. 建立procfile
  3. 利用Heroku Toolbelt部署App

1. 建立package.json

首先到我們的專案,用指令建立package.json檔

npm init

接著開啟package.json檔案

在裡面加入以下:

"engines": {
    "node":"4.2.2"
}

這一段代表我們的app要運行在哪一個node.js版本上

heroku_3

2. 建立procfile

我們在專案的根目錄下建立一個名稱為「procfile」的檔案,這個檔案的目的是告訴node.js該如何執行我們的程式,例如:

web: node.js

這邊還沒有暸解太多,先留個位置之後再補充

3.利用Heroku Toolbelt部署App

先來解說一下原理,Heroku的是利用git來部署的,我們本地端的程式完成後,利用git push到Heroku的remote repo,然後Heroku就會執行我們的程式。

這邊補充一下,Heroku會自動依據我們package.json的內容,安裝我們「執行」所需要的Module(不包含dev),請記得在.gitignore加入node module資料夾喔。

A. 登入Heroku

首先我們要先在終端機登入我們的Heroku帳號

heroku login

如果對指令有疑惑,可以輸入以下獲得幫助

heroku help
heroku help apps

B. 建立Heroku App

我們要用Heroku指令為我們的專案建立一個名為「heroku」的remote

heroku apps:create [App Name]

C. 更改執行的port

這邊因為自己遇到的問題所以補充一下,Heroku預設會執行在port5000上,而且真正部署後的port也會不一樣,但是如果我們的port寫死在1337,那麼部署之後就必須到1337去找,會出問題,解決的方式很簡單,把port變數改成:

var port = process.env.PORT || 1337;

如果env的port是有東西的就用,沒有就用1337,這樣就可以對應到Heroku給的port了。

D. Push到Heroku Remote

在push之前,我們先在本地端測試一下

heroku local

然後把該commit的處理好,最後push到Heroku上

git push heroku master

接著就會看到一連串處理訊息,完畢之後輸入

heroku open

或者輸入網址

http://<App Name>.herokuapp.com

就可以開啟我們的App了!

預告:下一次會介紹Heroku插件 – Mongolab

2 Comments

  1. 如果是要寫 blog,用 Node 的話可以考慮看看這套 static website generator:
    https://hexo.io

    • 謝謝補充!我現在自己是用 MWeb ,這套要花COCO,但是可以和WordPress 連動直接上傳 Markdown 轉換後的文章,之後再來寫一篇正在用的工具!

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

這個網站採用 Akismet 服務減少垃圾留言。進一步瞭解 Akismet 如何處理網站訪客的留言資料