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