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