如何在Ubuntu 14.04上运行解析服务器

介绍

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 配置系统后,请返回本指南并继续。

第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.sh。告诉它保留用户的环境变量以便脚本可以访问它们的-E选项sudo

sudo -E bash ./nodesource_setup.sh

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

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

第2步 - 安装示例解析服务器应用程序

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其中。

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

使用npm启动该服务。这将运行package.jsonstart属性中定义的命令。在这种情况下,它运行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"}

第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

并粘贴以下内容,根据需要更改突出显示的值:

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》

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

编辑于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏木头编程 - moTzxx

Laravel5下自定义错误页面的配置

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u011415782/article/de...

39440
来自专栏我的博客

课外阅读之ASP+access

1、准备知识: 了解VBScript或者JavaScript(下面多介绍VB系列的ASP),两者只是在语法有稍微的差别 2、输出 使用:response.w...

36670
来自专栏腾讯云数据库团队的专栏

Elasticsearch源码分析-写入解析

Elasticsearch(ES)是一个基于Lucene的近实时分布式存储及搜索分析系统,其应用场景广泛,可应用于日志分析、全文检索、结构化数据分...

97150
来自专栏三丰SanFeng

redis配置详解(中英文)

V2.8.21: (中英字幕同步) # Redis configuration file example #* Redis 配置文件例子 # Note on...

30880
来自专栏性能与架构

体验 Mysql shell 控制台

以前登录Mysql的控制台后,使用SQL语言来操作数据库,如 mysql> select * from tablename; Mysql 5.7.12 之后有了...

387100
来自专栏Porschev[钟慰]的专栏

CodeSmith 创建Ado.Net自定义模版(二)

CodeSmith 创建Ado.Net自定义模版(二) 接第一篇:  CodeSmith 创建Ado.Net自定义模版(一) 建立第二个C# Template:...

19560
来自专栏.NET技术

.net core实践系列之SSO-跨域实现

接着上篇的《.net core实践系列之SSO-同域实现》,这次来聊聊SSO跨域的实现方式。这次虽说是.net core实践,但是核心点使用jquery居多。

15930
来自专栏java工会

redis面试总结

(1) 速度快,因为数据存在内存中,类似于HashMap,HashMap的优势就是查找和操作的时间复杂度都是O(1)

27340
来自专栏程序员同行者

redis 优化

37930
来自专栏Pythonista

CMDB之数据采集

利用saltstack的salt.client模块可以在python的命令行下或者python脚本里执行相应的salt命令

32520

扫码关注云+社区

领取腾讯云代金券