Parse是一个移动后端即服务平台,自2013年起由Facebook拥有。2016年1月,Parse 宣布其托管服务将于2017年1月关闭。
为了帮助其用户从服务转移,Parse发布了一个名为Parse Server的后端的开源版本,可以部署到运行Node.js和MongoDB的环境中。
本指南补充了官方文档,其中包含在Ubuntu 14.04系统上安装Parse Server的详细说明,例如腾讯云CVM。它首先是作为正在考虑迁移其应用程序的Parse开发人员的起点,并且应该与官方的Parse Server Guide一起阅读。
一台已经设置好可以使用sudo
命令的非root账号的Ubuntu服务器,并且已开启防火墙。没有服务器的同学可以在这里购买,不过我个人更推荐您使用免费的腾讯云开发者实验室进行试验,学会安装后再购买服务器。
此外,您的系统将需要一个正在运行的MongoDB实例。通过在创建Droplet时将此脚本添加到其用户数据,MongoDB也可以自动安装在新CVM上。
使用sudo
用户和MongoDB 配置系统后,请返回本指南并继续。
首先将当前工作路径更改为sudo
用户的主目录:
cd ~
NodeSource为Debian和Ubuntu Node.js包提供了一个Apt存储库。我们将用它来安装Node.js. NodeSource为最新的稳定版本(撰写本文时的v5.5.0)提供了安装脚本,可以在安装说明中找到。下载脚本curl
:
curl -sL https://deb.nodesource.com/setup_5.x -o nodesource_setup.sh
您可以使用nano
或自己选择的文本编辑器打开该脚本的内容:
nano ./nodesource_setup.sh
接下来,运行nodesource_setup.sh
。告诉它保留用户的环境变量以便脚本可以访问它们的-E
选项sudo
:
sudo -E bash ./nodesource_setup.sh
脚本完成后,NodeSource存储库应该在系统上可用。我们可以用apt-get
来安装nodejs
包。我们还将安装build-essential
metapackage,它提供了一系列可能在以后有用的开发工具,以及用于从GitHub检索项目的Git版本控制系统:
sudo apt-get install -y nodejs build-essential git
Parse Server旨在与Express结合使用,Express是Node.js的一个流行的Web应用程序框架,它允许符合定义的API的中间件组件安装在给定的路径上。该解析服务器,例如存储库包含此模式的废止示例实现。
使用以下git
命令检索存储库:
git clone https://github.com/ParsePlatform/parse-server-example.git
输入刚刚克隆的parse-server-example
目录:
cd ~/parse-server-example
使用npm
安装依赖性,包括在当前目录的parse-server
,:
npm install
npm
将获取所需的所有模块parse-server
并将其存储在~/parse-server-example/node_modules
其中。
使用npm
启动该服务。这将运行package.json
的start
属性中定义的命令。在这种情况下,它运行node index.js
:
npm start
> parse-server-example@1.0.0 start /home/sammy/parse-server-example
> node index.js
DATABASE_URI not specified, falling back to localhost.
parse-server-example running on port 1337.
您可以通过按Ctrl-C随时终止正在运行的应用程序。
定义的Express应用程序index.js
将HTTP请求传递给parse-server
模块,模块又与MongoDB实例通信并调用其中定义的函数~/parse-server-example/cloud/main.js
。
在这种情况下,Parse Server API调用的端点默认为:
http://your_server_IP/parse
在另一个终端中,您可以使用它curl
来测试此端点。确保首先登录到服务器,因为这些命令引用localhost
而不是特定的IP地址。
通过发送POST
带有X-Parse-Application-Id
标头的请求来标识应用程序以及格式化为JSON的一些数据来创建记录:
curl -X POST \
-H "X-Parse-Application-Id: myAppId" \
-H "Content-Type: application/json" \
-d '{"score":1337,"playerName":"Sammy","cheatMode":false}' \
http://localhost:1337/parse/classes/GameScore
{"objectId":"fu7t4oWLuW","createdAt":"2016-02-02T18:43:00.659Z"}
您发送的数据存储在MongoDB中,可以通过curl
发送GET
请求来检索:
curl -H "X-Parse-Application-Id: myAppId" http://localhost:1337/parse/classes/GameScore
{"results":[{"objectId":"GWuEydYCcd","score":1337,"playerName":"Sammy","cheatMode":false,"updatedAt":"2016-02-02T04:04:29.497Z","createdAt":"2016-02-02T04:04:29.497Z"}]}
运行以下定义的函数~/parse-server-example/cloud/main.js
:
curl -X POST \
-H "X-Parse-Application-Id: myAppId" \
-H "Content-Type: application/json" \
-d '{}' \
http://localhost:1337/parse/functions/hello
{"result":"Hi"}
在原始终端中,按Ctrl-C以停止运行版本的Parse Server应用程序。
如上所述,可以使用六个环境变量来配置示例脚本:
变量 | 描述 |
---|---|
DATABASE_URI | MongoDB连接URI,如 mongodb://localhost:27017/dev |
CLOUD_CODE_MAIN | 包含Parse Cloud Code函数的文件的路径,如cloud/main.js |
APP_ID | 您的应用的字符串标识符,例如 myAppId |
MASTER_KEY | 一个秘密主密钥,允许您绕过所有应用程序的安全机制 |
PARSE_MOUNT | 应该提供Parse Server API的路径,例如 /parse |
PORT | 应用程序应该监听的端口,例如 1337 |
您可以在使用该export
命令运行脚本之前设置任何这些值。例如:
export APP_ID=fooApp
值得一读的内容index.js
,但为了更清楚地了解正在发生的事情,您还可以编写自己的较短版本的示例。在编辑器中打开一个新脚本:
nano my_app.js
并粘贴以下内容,根据需要更改突出显示的值:
var express = require('express');
var ParseServer = require('parse-server').ParseServer;
// Configure the Parse API
var api = new ParseServer({
databaseURI: 'mongodb://localhost:27017/dev',
cloud: __dirname + '/cloud/main.js',
appId: 'myOtherAppId',
masterKey: 'myMasterKey'
});
var app = express();
// Serve the Parse API on the /parse URL prefix
app.use('/myparseapp', api);
// Listen for connections on port 1337
var port = 9999;
app.listen(port, function() {
console.log('parse-server-example running on port ' + port + '.');
});
退出并保存文件,然后使用Node.js运行它:
node my_app.js
parse-server-example running on port 9999.
同样,您可以随时按Ctrl-C停止my_app.js
。如上所述,该示例的my_app.js
行为几乎与提供的相同index.js
,只是它将侦听端口9999,并安装了Parse Server /myparseapp
,因此端点URL如下所示:
http:// 您的服务器 IP:9999 / myparseapp
它可以像这样用curl
测试:
curl -H "X-Parse-Application-Id: myOtherAppId" http://localhost:9999/myparseapp/classes/GameScore`
您现在应该了解在Ubuntu环境中运行Node.js应用程序(如Parse Server)的基础知识。从Parse完全迁移应用程序可能是一项更为复杂的工作,需要更改代码并仔细规划基础架构。
更多Ubuntu教程请前往腾讯云+社区学习更多知识。
参考文献:《How To Run Parse Server on Ubuntu 14.04》
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。