2016年8月23日 星期二

[技術] 在Windows平台上建立Parse Server

實作OS:
Windows 8.1

前置作業:

1. 安裝MongoDB,實作版本3.2.5。
執行安裝檔後下一步下一步地按,完成安裝。
預設存放資料庫實體檔案的地方為C:\data\db。
需要注意如果沒有這個路徑,將MongoDB啟動的時候會有錯誤。
可以以指令執行 "mongod.exe --dbpath {路徑}"選擇其他路徑。
以命令提示字元執行mongo.exe進入MongoDB,輸入
use {DB名稱}
建立自己想要取的DB名稱

2. 安裝Python,實作版本2.7.11。

3. 安裝node.js,實作版本v4.2.1。

4. 安裝npm,實作版本2.15.10。
https://github.com/npm/npm/releases/tag/v2.15.10

5. 安裝express,實作版本3.0.0。
執行指令
npm install express -g
完成的時候,執行express指令時系統說找不到這個指令。
上Google搜尋看到有人說還需要再下一道指令:
npm install -g express-generator@3
才解決這個問題。

========================================================================

方法1:

接著到GitHub下載Parse提供的
Parse Server Example
https://github.com/ParsePlatform/parse-server-example

Parse Dashboard
https://github.com/ParsePlatform/parse-dashboard

下載存放到自己想要的路徑

修改parse-server-example下的index.js
databaseURI: databaseUri || 'mongodb://localhost:27017/{DB名稱}',

以命令提示字元分別到兩個路徑底下執行指令
npm install

npm run start

就可以把服務啟動,打開dashboard網址就可以看到像Parse.com上看到的dashboard畫面了,不過不是擁有全部的功能就是,因為我只是要用到最基本的功能所以沒有再作深入研究。


附註:
在寫這篇文章的時候發現Parse的GitHub上還有一個parse-server專案,我沒有研究跟parse-server-example有什麼差別...。之後有時間的話再看看吧。

========================================================================

方法2:

安裝Parse Server

打開命令提示字元輸入
npm install -g parse-server mongodb-runner

mongodb-runner start

parse-server --appId APPLICATION_ID --masterKey MASTER_KEY --databaseURI mongodb://localhost/test

APPLICATION_ID 跟 MASTER_KEY 跟 mongodb://localhost/test 記得替換成自己的設定值
Parse Server就啟動了

安裝Parse Dashboard
打開命令提示字元輸入
npm install -g parse-dashboard

parse-dashboard --appId yourAppId --masterKey yourMasterKey --serverURL "https://example.com/parse" --appName optionalName

Parse Dashboard就啟動了

========================================================================


如果要讓使用者進入Dashboard提示輸入帳號密碼的話,
開啟Dashboard資料夾的Parse-Dashboard/parse-dashboard-config.json

{
  "apps": [{"...": "..."}],
  "users": [
    {
      "user":"user1",
      "pass":"pass"
    },
    {
      "user":"user2",
      "pass":"pass"
    }
  ]
}

將想要的帳號密碼輸入在users的陣列值裡面即可。

補充
如果出現「Parse Dashboard can only be remotely accessed via HTTPS」,
指令調整為
parse-dashboard --appId yourAppId --masterKey yourMasterKey --serverURL "https://example.com/parse" --appName optionalName --allowInsecureHTTP true

另外指令的預設config檔似乎不是原資料夾下的,所以指令後來變成parse-dashboard --config {Config檔案路徑與名稱} --allowInsecureHTTP true



備註:
1. 想要將MongoDB設成Windows Service請參考:
http://www.runoob.com/mongodb/mongodb-window-install.html

2. 原本Parse上面的資料,因為我資料沒有很多,所以採用匯出成json格式再匯入MongoDB。
匯出完的檔案格式要稍微調整,調整成JSONArray的格式。
指令:mongoimport --db {DBName} --collection {CollectionName} --drop --file {FileName} --jsonArray
參考資料:
https://dotblogs.com.tw/kevinya/2015/10/15/153567
http://stackoverflow.com/questions/15171622/mongoimport-of-json-file

20160929補充
實際將Parse Server和Dashboard執行後,發現無法用Dashboard修改原有的資料,但是可以修改之後新增的資料。
所以我在自己的電腦上架設MongoDB環境,到Parse.com專案選擇App Setting -> General -> Migrate,先將資料抓回自己的電腦,然後將整個MongoDB實體資料檔案放到Server上就可以編輯了。
原本在Android端按照原本的寫法也無法將舊資料撈出來,錯誤訊息是bad json response的話,檢查ServerUrl最後是不是少了「/」,正確格式為:「http://{IP}/parse/」。


3. ParseServer跟Dashboard是用Windows工作排程來處理背景執行的

更新於2016.12.10

  • 參考資料:
    •  MongoDB 快速入門筆記
      http://andyyou.logdown.com/posts/177570-mongodb-notes
    • 在 Windows 中安裝 MongoDB 資料庫
      https://blog.gtwang.org/windows/windows-install-mongodb-database/
    • Parse Server 架設教學
      http://ssk7833.github.io/blog/2016/04/09/setup-parse-server/
    • 在Windows平台上安装Node.js及NPM模块管理http://www.cnblogs.com/seanlv/archive/2011/11/22/2258716.html
    • Parse Server
      https://github.com/ParsePlatform/parse-server
    • Parse Dashboard
      https://github.com/ParsePlatform/parse-dashboard
    • MongoDB建立資料庫使用者帳號
      http://ithelp.ithome.com.tw/articles/101137781