如何在 OpenShift 上部署 NodeJS 應用
Red Hat 的 PaaS 平臺 OpenShift 有三種版本:開源的 OpenShift Origin, 商用的 OpenShift Enterprise 以及 OpenShift Online,也就是這篇文章要談論的公用版本。
OpenShift 搭配使用的命令列工具是用 ruby 寫成,所以是包成 rubygem 而不是放在 npm 上。
在 Fedora 底下可以直接安裝:sudo dnf install rubygem-rhc
透過 rhc setup 設定完成后,便可以 rhc app create 來建立一個新的 Gear 來存放程式。
更新程式都是透過 git 操作,push 上去后會自動執行 npm install --production,所以常會花不少時間才能完成,有時更新后遇到問題就得 rhc tail 去看看到底發生了什么事。
另外在 Web Console 裡面也能很方便地新增 MongoDB 等 Cartridge 來附掛功能,但由于免費的每個 Application 有 1G 容量的限制,得自己 rhc ssh 進去停掉 MongoDB 的 Journal 功能以節省用量。其實也可以直接用 MongoLab 提供的服務還來得更好用。
除此之外更麻煩的就是 inode 的數量上限只有 80000,偏偏 npm 裝了一大堆東西之后很容易就會用掉上萬個檔案數目,要注意把 dependencies 跟 devDepenpdencies 區隔清楚。
OpenShift Online 提供了免費的叁個 Application 額度,雖然能夠自訂 CNAME 綁 domain 這點很不錯,但由于提供的 Node.js 還停留在 0.10,再加上剛剛提到的種種問題,結論還是不推薦。但如果是在新手工作坊之類的場合要拿來玩玩應該還是很有用,不過這樣還不如去用 Heroku 對 Node.js 的支援還更好。