Categories: NodeJS

如何部屬 Nodejs 程式到 Openshift 上?

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” 內容如下

"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 中。

Public Key

因為 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 有兩項要注意的事情

  1. 過久沒有人進入時會自動進入閒置狀態,只要有人進就會自動重啟
  2. 每次 push 都會清除 openshift 內不屬於 git 所監控的檔案內容

除了這兩項外,Openshift 算是一個非常好用且穩定的服務,值得用做測試或甚至是正式上線的服務提供端。

duye.chen

Recent Posts

[教學] 打造你的 NFT 智能合約 – ERC721A

GM!前些日子在幣圈亂玩,一路...

2 年 ago

JavaScript – Singleton 設計模式

前言 在設計程式時,我們有時會...

4 年 ago

PlaidML 讓你的 Mac 也能加速 Tensorflow 機器學習!

相信很多使用 Mac 或者手上...

4 年 ago

RESTful API 測試很煩,只好動手寫屬於自己的測試了

寫在最前面 嗨,大家好久不見!...

4 年 ago

Node.js 與 Socket.io – 即時聊天室實作:資料庫

經過前兩篇(一、二)文章,我們...

7 年 ago