Opebshift 是由知名的 RedHat 公司所提供的一個雲端服務,它透過 AWS(Amazon Web Service, AWS) 來提供使用者雲端主機的服務,而且是一個幾近完全功能的主機。
你可以在上面啟用 Apache、PHP、JAVA…等的支援,還支援先進的 NodeJS、GO 等新興語言,關於這服務的詳細內容可以參考香腸所撰寫的這篇文章。
今天我們要教各位如何把你所撰寫好的 NodeJS 程式部屬到 OpenShift 上,並且自動執行而不需要經過登入遠端伺服器來啟動的步驟。
請將你的 NodesJs 程式主要啟動的檔案更名為 server.js 。
在你準備將 NodeJS 程式部屬到 OpenShift 之前,請先利用 npm init
的指令在你的專案資料夾中生成一個 package.json,這中間他會詢問你一些相關的資訊,有專案名稱、簡介、版本號依照你的專案內容去填寫就可以了。
確認 “scripts” 和 “main” 內容如下
"scripts": {
"start": "node server.js"
},
"main": "server.js"
在剛生成 package.json 中有時不會記錄你程式中所使用的模組相依性,請透過 npm install -s <模組名稱>
來讓 npm 自動把相依性加入到 “package.json” 中。
package.json
這邊是官方範例裡面的 package.json 的內容可以作為修改參考。
{
"name": "OpenShift-Sample-App",
"version": "1.0.0",
"description": "OpenShift Sample Application",
"keywords": [
"OpenShift",
"Node.js",
"application",
"openshift"
],
"author": {
"name": "OpenShift",
"email": "ramr@example.org",
"url": "http://www.openshift.com/"
},
"homepage": "http://www.openshift.com/",
"repository": {
"type": "git",
"url": "https://github.com/openshift/origin-server"
},
"engines": {
"node": ">= 0.6.0",
"npm": ">= 1.0.0"
},
"dependencies": {
"express": "~3.4.4"
},
"devDependencies": {},
"bundleDependencies": [],
"private": true,
"main": "server.js"
}
完成上述的動作之後,要來準備將你的程式部屬到 OpenShift 中。
因為 Openshift 是透過 git 經由 SSH 的加密通訊方式來部署,而他又因安全性顧慮的關係,不提供直接輸入帳號與密碼的方式登入,因此我們必須讓 Openshift 知道你 SSH 的 Public Key 才能夠登入。
這部分因為篇幅較長,我會另外用一篇文章來作這部分的介紹,在此之前還請各位先參考官方的說明(英文)來做設定。
這邊我們將會進入到 Openshift 的網頁版控制台,將預載有 Node 的虛擬伺服器啟動後再透過 git
的指令來部屬。官方有提供另外一個做法,但這一個做法比較簡單。
首先進入到管理網頁中
建立一個新的 Application
然後選擇方案,這裡們選擇的是 NodeJS
輸入相關設定,包含網址等等
最後點下 Create Application 稍微等一下就行。
啟動完成後,系統會給你 git cone
的位置,將這個位址複製後到你的電腦中下這個指令將 Openshift 上的內容 clone 下來,然後將你的 Node.js 專案內容複製到這個資料中並覆蓋。
git clone ssh://Openshift給你的@nodejs-s9.rhcloud.com/~/git/nodejs.git/
cd nodejs/
進入資料夾並覆蓋之後,用以的 git 指令來做包裝以及推送(push)到 Openshift 的 Server 上。
git add .
git commit -m 'My changes'
git push
當你看到
remote: Git Post-Receive Result: success
就是成功上傳並啟動 nodejs 伺服器了!
最後再透過 Openshift 控制台的網頁來進入你的網站看看,如果有呈現畫面就是沒有任何問題,這篇文章的範例網站請點這裡。
關於 Openshift 有兩項要注意的事情
除了這兩項外,Openshift 算是一個非常好用且穩定的服務,值得用做測試或甚至是正式上線的服務提供端。