Parse是什麼?
Parse是一個開源框架,基於nodejs(開發語言)、mongodb(數據庫存儲)實現的,並且提供了衆多SDK包,包括:iOS、Android、Javascript、.NET、PHP、REST API等。Github上關注的星星也很多,有15K多,看得出是比較受歡迎的。
官方的介紹是:
The Complete Application Stack
Build applications faster with object and file storage,
user authentication, push notifications, dashboard and more out of the box.
相關重要資料和鏈接
Parse官網:https://parseplatform.org/
Parse的Github代碼倉庫:https://github.com/parse-community/parse-server
衆多SDK包文檔與代碼:https://docs.parseplatform.org/
安裝使用
安裝方式一:全局安裝
官網提供的安裝以及運行方式如下:
$ npm install -g parse-server mongodb-runner
$ mongodb-runner start
$ parse-server --appId APPLICATION_ID --masterKey MASTER_KEY --databaseURI mongodb://localhost/test
如果全局安裝成功,那麼就能正常運行,並通過一個測試鏈接看到效果。
但是,如果我採用全局安裝的話,就會提示錯誤(即便用了 root 權限),錯誤提示是:
npm ERR! code 128
npm ERR! Command failed: /bin/git clone --depth=1 -q -b master git://github.com/mongodb-js/mongodb-tools.git /root/.npm/_cacache/tmp/git-clone-202253e0
npm ERR! fatal: 不能爲 '/root/.npm/_cacache/tmp/git-clone-202253e0' 創建先導目錄: ????
npm ERR!
npm ERR! A complete log of this run can be found in:
npm ERR! /root/.npm/_logs/2018-11-29T05_12_56_706Z-debug.log
雖然官方文檔有提過,如果有錯誤就查看相關資料。但,可以換成本地局部的方式來快速安裝。
安裝方式二:拉Git代碼下來安裝並運行
第二種方式,是把Github的代碼拉下來,然後運行。這樣的好處,相比於第一種直接使用,這種還可以支持二次開發,比較適合我們開發人員。
先拉下代碼:
git clone https://github.com/parse-community/parse-server.git
然後,本地進行一下 npm install,安裝依賴的類庫後,嘗試運行。
npm start -- --appId APP_ID --masterKey MASTER_KEY --serverURL localhost
成功啓動後,可以看到類似這樣的輸出:
> [email protected] start /home/dogstar/node/parse-server
> node ./bin/parse-server "--appId" "APP_ID" "--masterKey" "MASTER_KEY" "--serverURL" "127.0.0.1"
here we go~~~~
(node:17699) ExperimentalWarning: The http2 module is an experimental API.
WARNING, Unable to connect to '127.0.0.1'. Cloud code and push notifications may be unavailable!
appId: APP_ID
masterKey: ***REDACTED***
serverURL: 127.0.0.1
masterKeyIps: []
logsFolder: ./logs
databaseURI: mongodb://localhost:27017/parse
userSensitiveFields: ["email"]
enableAnonymousUsers: true
allowClientClassCreation: true
maxUploadSize: 20mb
customPages: {}
sessionLength: 31536000
expireInactiveSessions: true
revokeSessionOnPasswordReset: true
schemaCacheTTL: 5000
cacheTTL: 5000
cacheMaxSize: 10000
objectIdSize: 10
port: 1337
host: 0.0.0.0
mountPath: /parse
scheduledPush: false
collectionPrefix:
preserveFileName: false
verifyUserEmails: false
preventLoginWithUnverifiedEmail: false
enableSingleSchemaCache: false
enableExpressErrorHandler: false
jsonLogs: false
verbose: false
level: undefined
[17699] parse-server running on 127.0.0.1
這裏有一些坑
一開始不太懂的時候,怎麼運行都不行,不是提示這個錯誤:
# 錯誤執行方式,少了前面的雙槓槓
npm start --appId APP_ID --masterKey MASTER_KEY --serverURL 127.0.0.1
# 錯誤提示
Error: Cannot find module '/home/dogstar/node/parse-server/APP_ID'
就是提示那個錯誤:
ERROR: appId and masterKey are required
npm ERR! code ELIFECYCLE
npm ERR! errno 1
但都是自己理解不到位,全貌和錯誤導致的。
運行mongodb
與此同時,如果需要運行mongodb,也可以局部安裝mongodb,然後啓動mongodb。
# 局部安裝
npm install mongodb-runner
# 啓動
./node_modules/mongodb-runner/bin/mongodb-runner.js start --port 27017
◝ Starting a MongoDB deployment to test against...
◟ Starting a MongoDB deployment to test against...
◝ Starting a MongoDB deployment to test against...
安裝運行方式三:發佈到生產環境
如果是要發佈到生產環境,那麼可以進行打包發佈,並且全部採用局部安裝的方式。所以,可以把parse-server也在本地項目安裝下(保險起見):
# 局部安裝
npm install parse-server
這時,在原來項目的根目錄下,會有一個 bootstrap.sh 的文件,運行它,然後按照它的指引,輸入一些信息,例如:
$ ./bootstrap.sh
`.-://////:-..`
`:/oooooooooooooooo+:.`
`:+oooooooooooooooooooooo+/`
:+ooooooooooooooooooooooooooo/.
.+oooooooooooooo/:.....-:+ooooooo-
.+ooooooooooooo/` .:///:-` -+oooooo:
`+ooooooooooooo: `/ooooooo+- `ooooooo-
:oooooooooooooo :ooooooooo+` /oooooo+
+ooooooooooooo/ +ooooooooo+ /ooooooo.
oooooooooooooo+ ooooooooo` .oooooooo.
+ooooooooooo+/: `ooooooo` .:ooooooooo.
:ooooooo+.````````````` /+oooooooooo+
`+oooooo- `ooo+ /oooooooooooooooooooo-
.+ooooo/ :/:` -ooooooooooooooooooo:
.+ooooo+:-..-/ooooooooooooooooooo-
:+ooooooooooooooooooooooooooo/.
`:+oooooooooooooooooooooo+/`
`:/oooooooooooooooo+:.`
`.-://////:-..`
parse-server
Enter an installation directory
(/home/dogstar/node/parse-server):
完成後,會在根目錄,生成 一個 config.json 的配置文件,例如這樣:
{
"appId": "123456",
"masterKey": "abc",
"appName": "tryp",
"cloud": "./cloud/main",
"port": "13370",
"databaseURI": "mongodb://127.0.0.1:27017/parse"
}
這個配置文件等下啓動時會用到。準備好這些工作後,我們先來準備下打包和發佈。
首先,是打包。
在根目錄下,運行:
$ npm run-script build
成功後,輸出:
$ npm run-script build
> [email protected] build /path/to/parse-server
> babel src/ -d lib/ --copy-files
Successfully compiled 135 files with Babel.
也就是說,打包後的文件全部都在 ./lib 目錄下,而且都是經常編譯壓縮後的,源碼再也不用擔心泄露(纔怪),妥妥的。
接下來,爲了模擬發佈。
我們在與 parse-server 同級的地方新建另外一個新目錄,專門用來存放要發佈的文件。發佈目錄是:parse-server-publish。
這裏,通過創建軟鏈,而不是真的複製代碼的方式,來表示,需要發佈哪些文件和目錄。全部需要用到的軟鏈如下:
bin -> ../parse-server/bin
cloud -> ../parse-server/cloud
config.json -> ../parse-server/config.json
lib -> ../parse-server/lib
node_modules -> ../parse-server/node_modules
package.json -> ../parse-server/package.json
最後一步,運行parse-server項目!
$ ./bin/parse-server -- config.json
[13121] parse-server running on http://localhost:13370/parse
這樣就可以運行啦~~~完美!!
測試一下
$ curl -X GET -H "X-Parse-Application-Id: APP_ID" http://localhost:13371/parse/roles
{"results":[]}
搞定,收工!下次繼續說說如何二次開發。