Parse GG (2) 自架土炮 Parse Server

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
  • ...
  • ...


參考資料:

這個網誌中的熱門文章

2023 最新入門零基礎 Kotlin教學【從零開始學 Kotlin 程式設計】Kotlin 教學課程目錄 (Android Kotlin, IntelliJ IDEA, Android Studio, Android APP 開發教學)

2022 最新入門零基礎 Flutter教學 【Flutter 程式設計入門實戰 30 天】Flutter 教學課程目錄 (IntelliJ IDEA 開發教學)

nano 文字編輯器

最新入門零基礎 Java 教學【從零開始學 Java 程式設計】Java教學課程目錄 (IntelliJ IDEA 開發教學)

16天記下7000單字