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:[email protected]: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 基本運行環境需求:
- Node.js 4.1 以上
- Mongodb 2.6.X 或 3.0.X
- 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 已成功運行:
> [email protected] 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
- ...
- ...
參考資料: