星期三, 2月 03, 2016

Parse GG (2) 自架土炮 Parse Server

適用於 VirtualBox、VMware、Linode、DigitalOcean VPS、AWS 等 Ubuntu 作業系統上,運行的網站環境。

Parse GG 第二天

Parse 宣布將停止結束服務的消息外,還提供資料搬家工具也同時開源釋出 Parse Server 核心程式碼。還貼心附上,架設Parse Server 範例 : parse-server-example。 

自己家裡架設Parse Server ,然後移轉 雲端後台到自己家裡這個Gap,取決於有無相關架站背景,如果有經驗可能只是幾毫釐(mm),很輕鬆就可以移轉,如果沒有,這個Gap當然是一條大深溝幾千里(Km),隨便一步都有可能掉入萬丈深淵。Server ?、node.js ?、express framework ? 、Mongodb ? 都是問號,肯定會啃食掉不少時間, 當初選擇Parse當自己家的後台服務,想必家裡應該沒有很足夠的後台人員去開發與維護,所以選擇Parse,現在當然也可以再找一家同樣雲端後台服務,然後遷移過去。


APP資料遷移

APP 資料遷移,可以進入Parse 後台,選擇要遷移資料的APP-> App Settings → General → 在 App Management 面板裡 可以看到有兩個方式,一個是Export app data(匯出資料),另一個是Migrate to external database(遷移到外部資料庫)

Export app data(匯出資料)

選擇Export app data (匯出資料)Parse會將你的後台資料轉成JSON資料格式,然後打包成一個壓縮檔 email 給你,信件中會個有下載連結,點擊連結直接將資料下載回來,再匯進去你的新雲端平台,即大功告成。

Migrate to external database(遷移到外部資料庫)

選擇Migrate to external database(遷移到外部資料庫),則是可以同步 Sync 到你的外部 Mongodb 資料庫: 
格式:「 mongodb://<你的DB帳號>:<你的DB密碼>@<你的IP>:<你的Mongodb Port>」 
例如: 「mongodb://hkt:ilovehkt@192.168.1.10:27017」 

自架土炮 Parse Server

根據正式資料站,搬家遷移SOP: 步驟1. APP會先通知使用者,公告伺服器暫停服務,將於某段期間進行升級維護...等步驟,在某個程度上,這搬家過程還算幸福。
但故事急轉直下,老闆或是公司高層不能接受再次搬家,堅持自己的 Server 自己架,外加一句這周五前完成,這週六是小年夜(2016/1/6),周日除夕,原本自己業務可能只有負責APP 開發,瞬間升職成「全端攻城師」,前端吃、後台吃,伺服器營運維護...等全負責,週五中午前沒完成禁休,這個過年還沒圍到爐就已經飽了。城還沒攻下,就已經先趴了。
Parse 宣布關閉,不知道會影響到多少人今年過年的心情。 Parse 自架Server 範例,官方安裝非常簡潔扼要金言九句來說明:
parse-server-example

* Make sure you have at least Node 4.1. `node --version`
* Clone this repo and change directory to it.
* `npm install`
* Install mongo locally using http://docs.mongodb.org/master/tutorial/install-mongodb-on-os-x/
* Run `mongo` to connect to your database, just to make sure it's working. Once you see a mongo prompt, exit with Control-D
* Run the server with: `npm start`
* By default it will use a path of /parse for the API routes.  To change this, or use older client SDKs, run `export PARSE_MOUNT=/1` before launching the server.
* You now have a database named "dev" that contains your Parse data
* Install ngrok and you can test with devices
不熟的,真的有看沒有懂,KT 這邊再補上一點點說明,讓遇到要自架Parse Server的負擔可以再小一點點。
自架Server 通常會在自己電腦上安裝VirtualBox 或 VMware虛擬機器,當作開發環境,在虛擬機器上安裝Linux 作業系統。Linux 系統可以選擇Ubuntu或是centOS...等作業系統,看您個人喜好。KT個人喜好Ubuntu,所以這邊示範安裝指令,適用於安裝在Ubuntu 14.04 Linux 作業系統上。

Parse Server 基本運行環境需求:

  1. Node.js 4.1 以上
  2. Mongodb 2.6.X 或 3.0.X
  3. Python 2.x
以下將從無到有,一步一步的帶領大家安裝 :
Node.js + Mongodb + Parse Server,然後運行 & 測試。 
(其中 Python 在 Ubuntu 14.04 預設下已經安裝,不需要另行安裝,若擔心可以$ python -V 確認一下)
一開始以最高權限系統管理者,如: root,開啟並進入終端機

首先更新套件列表

$ apt-get update

安裝基本編譯器

$ apt-get install build-essential -y

透過 NVM 安裝Node.JS

下載NVM安裝腳本並執行安裝
$ curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.30.2/install.sh | bash
重新載入環境變數
$ source ~/.profile

安裝 node 4.2.6版本

node.js 官網目前LTS 版本為4.2.6
(Parse Server Node 版本最低需求要在4.1以上)
$ nvm install 4.2.6

安裝npm

$ npm install npm -g
確認node 查看node當下使用版號
$ node -v
v4.2.6
輸入node 關鍵字,進入node 命令模式,簡單輸入1+1,運行看是否可以印出結果2。
$node
>1+1
2
ctrl + c 兩次或輸入exit 即可以離開node命令模式。

安裝MongoDB

Ubuntu 安裝MongoDB,要先匯入公鑰(public key)才能進行軟體下載安裝,匯入公鑰
$ apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 7F0CEB10
將MongoDB 加入套件安裝列表中:
$ echo "deb http://repo.mongodb.org/apt/ubuntu "$(lsb_release -sc)"/mongodb-org/3.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.0.list
再次更新安裝套件列表,然後進行mongodb 安裝
$ apt-get update
$ apt-get install -y mongodb-org
確認MongoDB版本與運行狀態 輸入mongo關鍵字,則會秀出MongoDB 版號,並進入MongoDB命令模式
$mongo
MongoDB shell version: 3.0.9
ctrl+c 即可以離開MongoDB命令模式
檢查MongoDB 運行狀態
$service mongod status
mongod start/running, process 7893
PS. 啟動/停止/重啟 MongoDB指令
$service mongod start | stop | restart

安裝Parse server

安裝git (透過git套件來下載Parse server放在GitHub的程式)
$ apt-get install git -y
我們先建立目錄/var/www/,然後進入到此目錄中
mkdir -p /var/www
cd /var/www
使用git的方式,下載parse-server-example 程式碼,放置到此目錄下,目錄名稱取為parse:
$ git clone https://github.com/ParsePlatform/parse-server-example.git parse
進入此parse目錄後,輸入npm install 進行此套件安裝
$ cd parse/
$ npm install

運行 Parse server

$ npm run start
看到以下輸出的結果,代表Parse Server 已成功運行:
> parse-server-example@1.0.0 start /var/www/parse
> node index.js

DATABASE_URI not specified, falling back to localhost.
parse-server-example running on port 1337.
此時你可以開啟你的瀏覽器,網址列上,輸入「 http://<你的IP>:1337/parse」,如:http://192.168.1.10/parse
如果看到json 回應,如下
{"error":"unauthorized"}
這時可以稍微歡呼一下,土炮Parse Server已經安裝差不多了。 
此時使用nano 文字編輯器,開啟index.js,修改加入我們的appID 和 masterKey:
$ nano index.js
簡單示範所以我們這邊只修改加入我們自己的定義appID 和 masterKey:
var api = new ParseServer({
  databaseURI: process.env.DATABASE_URI || 'mongodb://localhost:27017/dev',
  cloud: process.env.CLOUD_CODE_MAIN || __dirname + '/cloud/main.js',
  appId: '<自己定義 appID>',
  masterKey: '<自己定義 masterKey>'
});
之前會根據 Parse,隨機產生給我們的的金鑰來使用:
這時自己架設即需自己在這支 「index.js」 定義金鑰。
呼叫使用時再帶入相關的金鑰,這時你可以根據你自己的需求填入,如:javascriptKey, restAPIKey, dotNetKey, clientKey

測試 Parse server

使用 curl 方式,在GameScore表格裡,建立一筆遊戲資料
$ curl -X POST \
-H "X-Parse-Application-Id: <你的appID>" \
-H "Content-Type: application/json" \
-d '{"score":99,"playerName":"HKT","cheatMode":false}' \
http://<你的IP>:1337/parse/classes/GameScore
此時Server 會回傳已寫入訊息
{"objectId":"MlyaoRqeKy","createdAt":"2016-02-03T09:09:19.879Z"}
這時你真的可以放鞭炮,代表土炮 Parse Server建立成功。
可以再使用 curl 方式,取回GameScore表格裡的遊戲資料
$ curl -H "X-Parse-Application-Id: <你的appID>" http://<你的IP>:1337/parse/classes/GameScore
Server 回應取回如下資料:
{"results":[{"objectId":"MlyaoRqeKy","score":99,"playerName":"HKT","cheatMode":false,"updatedAt":"2016-02-03T09:09:19.879Z","createdAt":"2016-02-03T09:09:19.879Z"}]}
不過癮,還可以再測試一下cloud 程式
$ curl -X POST \
  -H "X-Parse-Application-Id: <你的appID>" \
  -H "Content-Type: application/json" \
  -d '{}' \
  http://<你的IP>:1337/parse/functions/hello
這回 Server 會回傳如下訊息:
{"result":"Hi"}



今天最後結尾,我們請武哥來下一個結論:「終點 新的起點」 
Parse 或許即將關閉結束,但我們將有嶄新的開始。
保持一顆樂觀愛挑戰冒險的心 ,Parse Server 大秘寶已釋出在GitHub,等著我們大家去解開那神秘的潘朵拉盒子。一起來吧~


最後補充為什麼是說土炮 Parse Server,因為官網很多功能並未釋出,如:
  • ...
  • ...
  • Analytics (This is not supported.), 官網建議,改換Mixpanel or Google Analytics。這個倒還好。
  • Config
  • Push Notifications
  • Schema API
  • Webhooks
  • Dashboard (We do not provide a self-hosted dashboard out of the box.) 沒有親切可愛的後台面版來操作數據,自己架起來就是土炮,這點...官網建議我們自己刻一個。
  • Welcome Emails and Email Verification
  • ...
  • ...


參考資料:

Parse GG (2) 自架土炮 Parse Server

星期二, 2月 02, 2016

Parse GG (1) 將停止結束服務

Parse GG 第一天

今天一早醒來(2016/1/29),看到Parse將停止結束服務的消息。
不知道在台灣有沒有很多人在使用Parse 服務。
Parse 將在2017年1月28日,完全終止服務。
有使用的朋友們,可以使用官網提供的 Migration Tool 來進行資料庫搬家動作。
詳細相關細節與說明,可以參考 Parse 官網公告連結: http://blog.parse.com/announcements/moving-on/


Parse 真的是一個很酷的服務,原本想說他被臉書收購後,有了富爸爸, 未來服務與品質應該更不用擔憂,可以更大膽將系統放在Parse上, 臉書也力推大家使用Parse服務,不久前還在台北辦研討會,
那天的伴手禮照片:

真的很貼心還有簡單中文使用手冊(繁體中文),官網也提供繁體中文件(老美線上產品,官方往往很少翻譯成繁中),沒想到事過境遷,物是全非。一切只能懷念了。為了紀念 Parse 的美好,KT 決定寫些東西來致敬,曾經叱吒雲端服務的先鋒產品。
Parse創立於2011年,在2013年時臉書以8千5百萬美金收購。

什麼是Parse?

Parse 是雲端後台服務BaaS (Back end as a Service),主要提供:
  1. 雲端資料的儲存
  2. 雲端資料的分析
  3. 訊息推播服務
  4. 雲端後台監控資料系統
Parse 很貼心的有提供免費雲端使用額度,不用先線上刷卡,只要mail註冊立即開通服務,很適合學生研究做專題或剛創業沒有後端開發人員的小型團隊。計價方式,主要以request 量來收費,每秒低於30 個request免費,超過以量計價。

Parse價目表

Parse 真的可以大大省去,後台開發的負擔,最適合開發APP的人員,APP開發者可以只要專心在APP上,不用去擔心也不用額外花太多心思在建構後台資料儲存與串接邏輯上,一切交給Parse就好。

Parse GG (1) 將停止結束服務

星期日, 1月 31, 2016

在 Ubuntu 14.04 上安裝 node.js

適用於 VirtualBox、VMware、Linode、DigitalOcean VPS、AWS 等 Ubuntu 作業系統上,運行的網站環境。
安裝node.js 有很多種方式,其中 NVM (註1) 安裝方式是我覺得最不囉唆的方法。

更新軟體列表

sudo apt-get update

安裝編譯環境

sudo apt-get install build-essential libssl-dev

安裝NVM

curl https://raw.githubusercontent.com/creationix/nvm/v0.16.1/install.sh | sh

重新載入環境變數

source ~/.profile

列表顯示目前可安裝版本號碼

nvm ls-remote
此時會秀出一推版號,如果沒有環境或其他相關因素考量,建議可以先到 node.js 官網 查看最新長期支援版本號碼。 目前當下最新長期支援版本號碼為v4.2.6,所以我們示範選擇安裝此版本。
nvm install v4.2.6

安裝完成後可以確認安裝後的版號

node -v

測試node是否可以運行

輸入node 關鍵字後,簡單執行 1+1 加法運算,如果出現2。 此時可以給自己大大的一個讚+放鞭炮,代表已成功安裝。 讚!!!
node
>1+1
2
ctrl+c 即可以離開離開node環境。
如果不過癮,當然也可以小試身手一下,用文字編輯器新建一個檔名為test.js的文件。
nano test.js
在test.js的文件裡,輸入以下內容範例
var util = require("util");
console.log("Hello! Node.js");
存檔離開執行剛剛的程式,即可以印出令人興奮的「Hello! Node.js」字樣。
node test.js
Hello! Node.js



註1: NVM是「Node Version Manager」 Node 版本管理的縮寫,顧名思義此套件可以方便,開發安者安裝多套Node 版本,來進行程式開發或調試。

在 Ubuntu 14.04 上安裝 node.js

關閉廣告 [X]