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
成功启动后,可以看到类似这样的输出:
> parse-server@3.1.2 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
> parse-server@3.1.2 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":[]}
搞定,收工!下次继续说说如何二次开发。