如何在Ubuntu14.04上运行解析服务器

来自菜鸟教程
跳转至:导航、​搜索

介绍

Parse 是一个移动后端即服务平台,自 2013 年起归 Facebook 所有。 2016 年 1 月,Parse 宣布 其托管服务将于 2017 年 1 月关闭。

为了帮助其用户从该服务过渡,Parse 发布了其后端的开源版本,称为 Parse Server,可以部署到运行 Node.js 和 MongoDB 的环境中。

本指南对官方文档进行了补充,提供了在 Ubuntu 14.04 系统(例如 DigitalOcean Droplet)上安装 Parse Server 的详细说明。 它首先是为考虑迁移其应用程序的 Parse 开发人员提供的起点,应与官方 Parse 服务器指南 一起阅读。

先决条件

本指南假设您有一个干净的 Ubuntu 14.04 系统,配置了具有 sudo 权限的非 root 用户来执行管理任务。 您可能希望查看 New Ubuntu 14.04 Server Checklist 系列中的指南。

此外,您的系统将需要一个正在运行的 MongoDB 实例。 您可以从 如何在 Ubuntu 14.04 上安装 MongoDB 开始。 MongoDB 也可以通过在创建时将 this script 添加到其用户数据来自动安装在新的 Droplet 上。 查看 本教程 以了解有关 Droplet 用户数据的更多信息。

一旦您的系统配置了 sudo 用户和 MongoDB,请返回本指南并继续。

第 1 步 — 安装 Node.js 和开发工具

首先将当前工作路径更改为 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.shsudo-E 选项告诉它保留用户的环境变量,以便脚本可以访问它们:

sudo -E bash ./nodesource_setup.sh

脚本完成后,系统上应该可以使用 NodeSource 存储库。 我们可以使用 apt-get 来安装 nodejs 包。 我们还将安装 build-essential 元包,它提供了一系列以后可能有用的开发工具,以及用于从 GitHub 检索项目的 Git 版本控制系统:

sudo apt-get install -y nodejs build-essential git

第 2 步 — 安装示例 Parse Server 应用程序

Parse Server 旨在与 Express 结合使用,这是一种流行的 Node.js Web 应用程序框架,它允许将符合已定义 API 的中间件组件安装在给定路径上。 parse-server-example 存储库包含此模式的存根示例实现。

使用 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 中。

第 3 步 — 测试示例应用程序

使用 npm 启动服务。 这将运行在 package.jsonstart 属性中定义的命令。 在这种情况下,它运行 node index.js

npm start
Output> 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 来终止正在运行的应用程序。

index.js 中定义的 Express 应用程序会将 HTTP 请求传递到 parse-server 模块,该模块进而与您的 MongoDB 实例通信并调用 ~/parse-server-example/cloud/main.js 中定义的函数。

在这种情况下,Parse Server API 调用的端点默认为:

http://your_server_IP/parse

在另一个终端中,您可以使用 curl 来测试这个端点。 确保您首先登录到您的服务器,因为这些命令引用 localhost 而不是特定的 IP 地址。

通过发送带有 X-Parse-Application-Id 标头的 POST 请求来创建记录,以识别应用程序,以及一些格式为 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
Output{"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
Output{"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
Output{"result":"Hi"}

第 4 步 — 配置示例应用程序

在您原来的终端中,按 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

并粘贴以下内容,在需要的地方更改突出显示的值:

~/parse-server-example/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
Outputparse-server-example running on port 9999.

同样,您可以随时按 Ctrl-C 停止 my_app.js。 如上所述,示例 my_app.js 的行为与提供的 index.js 几乎相同,除了它将侦听端口 9999,Parse Server 安装在 /myparseapp 上,因此端点 URL 如下所示:

http://your_server_IP:9999/myparseapp

并且可以像这样使用 curl 进行测试:

curl -H "X-Parse-Application-Id: myOtherAppId" http://localhost:9999/myparseapp/classes/GameScore`

结论

您现在应该知道在 Ubuntu 环境中运行像 Parse Server 这样的 Node.js 应用程序的基础知识。 从 Parse 完全迁移应用程序可能是一项更复杂的工作,需要更改代码并仔细规划基础架构。

有关此过程的更多详细信息,请参阅本系列的第二篇指南,如何在 Ubuntu 14.04 上将 Parse 应用程序迁移到 Parse Server。 您还应该参考官方的 Parse Server Guide,特别是关于 migrating an existing Parse app 的部分。