如何安装和使用BaasBox在Ubuntu 14.04

BaasBox是Web和移动应用程序的开放源码后端。它需要几分钟安装和配置,以及本教程向您介绍如何设置它,同时与管理控制台和REST API工作。

介绍

BaasBox是一个应用程序,充当数据库服务器和应用程序服务器相结合。 开箱即用,BaasBox提供用户注册,用户管理,角色管理,内容管理,文件管理和数据库管理与备份。 由于所有这些功能都通过标准HTTP REST API公开,因此Web和移动应用程序的开发人员可以使用BaasBox作为后端来存储数据。 开发人员还可以创建基于BaasBox的微服务,这些微服务由其应用程序的其他部分使用。

本文将指导您在创建简单应用程序后端时安装BaasBox,创建用户,使用管理控制台以及探索REST API。

先决条件

  • 你有一个运行Ubuntu 14.04的Droplet
  • 您以具有管理权限的非root用户身份登录到服务器。 参见教程为Ubuntu 14.04服务器初始设置指南设置此。
  • 您已经安装了Oracle的官方的Java JRE 8。 本教程介绍了如何做到这一点。

第1步 - 安装和运行BaasBox

要安装BaasBox,我们从官方网站下载最新的BaasBox的稳定版本。 您可以使用做到这一点wget命令,如下所示:

wget http://www.baasbox.com/download/baasbox-stable.zip

我们将使用的unzip命令从下载的zip文件中提取BaasBox。 如果你没有unzip ,使用以下命令进行安装:

sudo apt-get install unzip

现在解压缩zip文件的内容:

unzip baasbox-stable.zip

此命令提取zip文件的内容到指定目录baasbox- XYZ ,其中XYZ将是最新的版本,例如, 0.9.5 输入新创建的目录。

cd baasbox-X.Y.Z

该目录包含一个文件名为start需要被执行开始BaasBox。 为了做到这一点,我们首先需要使用以下命令使其成为可执行文件:

chmod +x ./start

然后启动BaasBox,执行以下命令:

./start

你会看到一些输出,其结束应该是这样:

2016-06-28 14:32:14,554 - [info] - BaasBox is Ready.
2016-06-28 14:32:14,558 - [info] - Application started (Prod)
2016-06-28 14:32:14,733 - [info] - Listening for HTTP on /0:0:0:0:0:0:0:0:9000
2016-06-28 14:32:15,261 - [info] - Session Cleaner: started
2016-06-28 14:32:15,263 - [info] - Session cleaner: tokens: 0 - removed: 0
2016-06-28 14:32:15,263 - [info] - Session cleaner: finished

在上面的输出中的突出显示部分表明BaasBox现在正在运行,可以在端口访问9000机器上。 默认的BaasBox配置在所有网络接口上的此端口上侦听。 这意味着BaasBox现在可以访问:

  • http://localhost:9000http://127.0.0.1:9000从它安装上(或通过一个SSH隧道)服务器
  • http:// your_internal_server_ip :9000从你的服务器是内部网络(如果它是一个内部网络上)
  • http:// your_ip_address :9000来自互联网,如果your_ip_address是可公开访问的IP地址。

您可以在特定的网络接口和不同的端口上,如果需要BaasBox监听。 要执行此操作,请使用以下命令:

./start -Dhttp.port=target_port -Dhttp.address=target_interface

访问http:// your_ip_address :9000/console在你的浏览器访问BaasBox管理控制台,你会看到类似下图的界面:

BaasBox管理控制台

使用BaasBox运行,让我们设置一个应用程序和一些用户。

第2步 - 使用BaasBox创建应用程序

在本文中,我们将创建一个简单的待办事项列表管理器应该:

  • 允许用户注册
  • 允许用户登录
  • 允许用户创建多个待办事项列表
  • 允许用户检索自己的待办事项列表
  • 允许用户修改他们的待办事项列表
  • 允许用户删除他们的待办事项列表
  • 允许用户与其他用户共享他们的待办事项列表

在跟进时,请注意以下事项:

  • 我们将创建两个用户的用户名user1user2
  • 这些用户的密码将被称为user1_passworduser2_password
  • 这些用户的会话ID将被称为user1_session_iduser2_session_id

虽然你可以通过REST API管理BaasBox,有时更方便做这样使用管理控制台,为您在第2步中看到它,在http:// your_ip_address :9000/console 在浏览器中访问该链接。 由于这是您第一次使用它,使用默认凭据登录:

  • 默认用户名: admin
  • 默认密码: admin
  • 默认的应用程序代码: 1234567890

BaasBox管理控制台登录

登录后,您将看到BaasBox仪表板:

BaasBox仪表板

让我们使用管理控制台为我们的应用程序创建用户。

第3步 - 创建用户

用户管理是BaasBox的最有用的功能之一。 BaasBox有一些内置的用户是私人的,不能编辑。 这包括admin您在登录到管理控制台登录使用的用户。

BaasBox还允许您定义角色并将其分配给用户以实现精细的访问控制。 默认情况下,BaasBox有以下3个角色:

  • administrator -这个角色拥有完整的,不受限制的访问
  • backoffice -这个角色授予访问内容由注册用户发布
  • registered -这是默认的角色敌我新注册用户

除了这些预配置的角色之外,您还可以添加自己的角色。 当创建一个新的角色,它具有相同的权限registered上述作用。

您可以通过管理控制台或通过REST API在BaasBox中创建用户。 通常,您将使用REST API以编程方式创建用户,例如通过应用程序的用户注册过程。

当您通过管理控制台添加用户时,您可以为他们设置自定义角色。 然而,当使用内置的REST API注册,新创建的用户分配的registered的角色。

要创建BaasBox的管理控制台的新用户,在管理控制台打开用户>用户菜单,单击新用户按钮。

BaasBox管理控制台 - 新用户

这会打开一个表单,您可以在其中填写要创建的用户的详细信息:

BaasBox管理控制台 - 新用户

用户名密码重新输入密码虽然所有其他字段是可选的角色字段是必需的。 请注意,如果需要,您可以在此窗体中向下滚动以填写其他详细信息。

设置该用户的用户名user1 您可以选择任何角色,但最常用的是registered 一旦你进入了所有的细节,请点击保存更改按钮即可完成用户创建过程。

我们将在后续部分中使用REST API创建用户。 现在让我们为应用程序的内容配置一个地方。

第4步 - 创建集合

BaasBox组织你的内容放到collections这是类似于NoSQL数据库MongoDB的一样提供集合。 集合持有documents的同一类型。 熟悉SQL数据库的用户可以考虑collection是大致相同的一个table 同样,一个document是有点像record

集合只能由管理员创建。 尽管创建集合的最常见方法是从管理控制台创建集合,但也可以使用REST API执行此操作。 在本节中,我们将介绍如何从管理控制台创建集合。

所有的内容管理功能是在管理控制台提供CollectionsDocuments菜单中的DATA部分。

打开数据>收藏菜单。 您将看到一个页面,其中列出了应用程序中的所有当前集合。

BaasBox管理控制台 - 集合

要创建一个新的集合,单击新建集合按钮。 这将显示一个表单,提示您输入集合名称。

BaasBox管理控制台 - 新集合

输入todos作为集合的名称,然后点击保存更改以完成集合创建过程。 应用程序的用户现在可以使用REST API访问此集合及其集合中的文档。 让我们来看看它是如何工作的。

第5步 - 使用REST API

现在我们知道如何使用管理控制台来执行各种任务,让我们来看看如何使用BaasBox的REST API执行相同的任务。

该REST API可以通过不同类型的从网络和移动应用的应用程序控制台应用程序被消耗掉,我们将使用curl ,以模拟在下面的例子请求。 您可以根据您的前端平台调整这些示例以满足您的需求。

使用REST API创建用户

在的一般格式curl用于创建用户的命令如下:

curl http://your_ip_address:9000/user \
    -d '{"username" : "username", "password" : "password"}' \
    -H Content-type:application/json \
    -H X-BAASBOX-APPCODE:baasbox_appcode

在我们的例子中,我们将创建一个用户名的用户user2 选择您喜欢的任何密码。 我们将使用默认值的X-BAASBOX-APPCODE头这1234567890 使用这些值,我们的命令变为:

curl http://your_ip_address:9000/user \
    -d '{"username" : "user2", "password" : "user2_password"}' \
    -H Content-type:application/json \
    -H X-BAASBOX-APPCODE:1234567890

执行此命令的输出应类似于:

{"result":"ok","data":{"user":{"name":"user2","status":"ACTIVE","roles":[{"name":"registered","isrole":true}]},"id":"a4353548-501a-4c55-8acd-989590b2393c","visibleByAnonymousUsers":{},"visibleByTheUser":{},"visibleByFriends":{},"visibleByRegisteredUsers":{"_social":{}},"signUpDate":"2016-04-05T13:12:17.452-0400","generated_username":false,"X-BB-SESSION":"992330a3-4e2c-450c-8d83-8eaf2903188b"},"http_code":201}

以下是上述输出的格式化版本:

{
  "result": "ok",
  "data": {
    "user": {
      "name": "user2",
      "status": "ACTIVE",
      "roles": [
        {
          "name": "registered",
          "isrole": true
        }
      ]
    },
    "id": "a4353548-501a-4c55-8acd-989590b2393c",
    "visibleByAnonymousUsers": {},
    "visibleByTheUser": {},
    "visibleByFriends": {},
    "visibleByRegisteredUsers": {
      "_social": {}
    },
    "signUpDate": "2016-04-05T13:12:17.452-0400",
    "generated_username": false,
    "X-BB-SESSION": "992330a3-4e2c-450c-8d83-8eaf2903188b"
  },
  "http_code": 201
}

注意上面输出中突出显示的值。 BaasBox生成一个唯一的id为每个用户。 当您要通过REST API获取,修改或删除此特定用户的文档时,您将使用此ID。

第二个突出显示值是X-BB-SESSION这是一个需要存在于所有未来的查询会话ID user2将。 我们将把这个值作为user2_session_id在随后的章节。

在使用REST API时记录用户

现在,我们已经为会话ID user2 ,让我们获得一个user1 ,我们前面在管理控制台创建的用户。 我们将通过为登录做到这一点user1使用REST API。 在的一般格式curl用于记录是命令:

curl http://your_ip_address:9000/login \
    -d "username=username" \
    -d "password=password" \
    -d "appcode=baasbox_appcode"

在我们的例子中,用户名是user1 ,在创建密码的任何使用user1 ,和BaasBox应用代码为1234567890 使用这些值,我们的命令变为:

curl http://your_ip_address:9000/login \
    -d "username=user1" \
    -d "password=user1_password" \
    -d "appcode=1234567890"

执行此命令的输出应类似于:

{"result":"ok","data":{"user":{"name":"user1","status":"ACTIVE","roles":[{"name":"registered","isrole":true}]},"id":"84191e4c-2471-48a7-98bb-ecdaf118285c","visibleByAnonymousUsers":{},"visibleByTheUser":{},"visibleByFriends":{},"visibleByRegisteredUsers":{"_social":{}},"signUpDate":"2016-04-05T13:06:35.750-0400","generated_username":false,"X-BB-SESSION":"74400b4b-d16c-45a2-ada3-1cd51cc202bb"},"http_code":200}

以下是上述输出的格式化版本:

{
  "result": "ok",
  "data": {
    "user": {
      "name": "user1",
      "status": "ACTIVE",
      "roles": [
        {
          "name": "registered",
          "isrole": true
        }
      ]
    },
    "id": "84191e4c-2471-48a7-98bb-ecdaf118285c",
    "visibleByAnonymousUsers": {},
    "visibleByTheUser": {},
    "visibleByFriends": {},
    "visibleByRegisteredUsers": {}
    },
    "signUpDate": "2016-04-05T13:06:35.750-0400",
    "generated_username": false,
    "X-BB-SESSION": "74400b4b-d16c-45a2-ada3-1cd51cc202bb"
  },
  "http_code": 200
}

上述响应的高亮部分显示会话ID user1 ,我们需要使用所有未来的查询user1将使。 我们将把这个值作为user1_session_id从现在开始。

使用REST API创建文档

让我们在我们的应用程序中创建两个文档。 我们将分配一个文档user1 ,我们使用管理控制台创建的用户,我们将指定其他文件, user2 ,我们通过REST API创建的用户。 我们将创建的文档的结构将类似于以下示例:

{
  "list_name": "Task List Name",
  "tasks": [
    {
      "task": "Task Details",
      "done": false
    },
    {
      "task": "Task Details",
      "done": false
    }
  ]
}

看看结构,我们可以看到一个文档将有两个属性。 一个是任务列表的名称,另一个是该列表中的任务列表。

在的一般格式curl用于创建新文档的命令是:

curl -X POST http://your_ip_address:9000/document/collection_name \
     -d 'json_formatted_document' \
     -H Content-type:application/json \
     -H X-BB-SESSION:session_id

首先,让我们创建为一个文件user1 在我们的例子中,集合的名称是todos ,我们要插入的文件是这样的:

{
  "list_name": "User 1 - List 1",
  "tasks": [
    {
      "task": "User1 List1 task 1",
      "done": false
    },
    {
      "task": "User1 List1 task 2",
      "done": false
    }
  ]
}

为了确保这个文档被关联user1 ,我们使用user1我们,当我们登录用户到我们的系统中获得的会话ID。

输入以下命令来创建文档user1

curl -X POST http://your_ip_address:9000/document/todos \
     -d '{"list_name":"User 1 - List 1","tasks":[{"task":"User1 List1 task 1","done":false},{"task":"User1 List1 task 2","done":false}]}' \
     -H Content-type:application/json \
     -H X-BB-SESSION:user1_session_id

执行此命令将产生类似于以下内容的输出:

{"result":"ok","data":{"@rid":"#24:1","@version":2,"@class":"todos","list_name":"User 1 - List 1","tasks":[{"task":"User1 List1 task 1","done":false},{"task":"User1 List1 task 2","done":false}],"id":"c83309e7-cbbd-49c8-a76b-9e8fadc72d6f","_creation_date":"2016-04-05T20:34:30.132-0400","_author":"user1"},"http_code":200}

以下是上述输出的格式化版本:

{
  "result": "ok",
  "data": {
    "@rid": "#24:1",
    "@version": 2,
    "@class": "todos",
    "list_name": "User 1 - List 1",
    "tasks": [
      {
        "task": "User1 List1 task 1",
        "done": false
      },
      {
        "task": "User1 List1 task 2",
        "done": false
      }
    ],
    "id": "c83309e7-cbbd-49c8-a76b-9e8fadc72d6f",
    "_creation_date": "2016-04-05T20:34:30.132-0400",
    "_author": "user1"
  },
  "http_code": 200
}

就像它没有为新用户,BaasBox创建了一个id ,它是在前面的例子中强调,为所有新文档。 记下此的id ,我们会同时给以后使用user2这个列表的访问。 在随后的章节中,我们将把这个文档的id user1_list1_id

现在,自己,使用相同的方法来执行以下操作:

  • 创建另一个列表user1
  • 创建两个列表user2

完成这些步骤后,您将有中共有4号文件的todos集合。 在后续章节中,我们将引用这些文档的ID:

  • USER1 list1的 ID
  • USER1 列表2
  • 用户2 list1的 ID
  • 用户2 列表2

现在我们有一些数据可以使用,所以我们可以研究如何使用REST API查询数据。

使用REST API检索单个文档

在的一般格式curl命令用来获取的文件由它的id是:

curl http://your_ip_address:9000/document/collection_name/document_id \
     -H X-BB-SESSION:session_id

如果我们想获取由创建的第一个文件user1 (与user1的凭据),命令应该是:

curl http://your_ip_address:9000/document/todos/user1_list1_id \
     -H X-BB-SESSION:user1_session_id

执行此命令给我们一个类似以下的输出:

{"result":"ok","data":{"@rid":"#24:1","@version":2,"@class":"todos","list_name":"User 1 - List 1","tasks":[{"task":"User1 List1 task 1","done":false},{"task":"User1 List1 task 2","done":false}],"id":"c83309e7-cbbd-49c8-a76b-9e8fadc72d6f","_creation_date":"2016-04-05T20:34:30.132-0400","_author":"user1"},"http_code":200}

以下是响应的格式化版本:

{
  "result": "ok",
  "data": {
    "@rid": "#24:1",
    "@version": 2,
    "@class": "todos",
    "list_name": "User 1 - List 1",
    "tasks": [
      {
        "task": "User1 List1 task 1",
        "done": false
      },
      {
        "task": "User1 List1 task 2",
        "done": false
      }
    ],
    "id": "c83309e7-cbbd-49c8-a76b-9e8fadc72d6f",
    "_creation_date": "2016-04-05T20:34:30.132-0400",
    "_author": "user1"
  },
  "http_code": 200
}

现在你知道如何检索单个文档,请尝试再次做同样的事情,只不过这次使用提取文档user2的会话ID:

curl -X POST http://your_ip_address:9000/document/todos/user1_list1_id \
     -H X-BB-SESSION:user2_session_id

执行此命令将显示类似于以下内容的输出:

{"result":"error","message":"c83309e7-cbbd-49c8-a76b-9e8fadc72d6f not found","resource":"/document/todos/c83309e7-cbbd-49c8-a76b-9e8fadc72d6f","method":"GET","request_header":{"Accept":["*/*"],"Host":["localhost:9000"],"User-Agent":["curl/7.35.0"],"X-BB-SESSION":["8f5a2e48-0f42-4478-bd1b-d28699158c4b"]},"API_version":"0.9.5","http_code":404}

这里是相同的输出,格式化的可读性:

{
  "result": "error",
  "message": "c83309e7-cbbd-49c8-a76b-9e8fadc72d6f not found",
  "resource": "\/document\/todos\/c83309e7-cbbd-49c8-a76b-9e8fadc72d6f",
  "method": "GET",
  "request_header": {
    "Accept": [
      "*\/*"
    ],
    "Host": [
      "localhost:9000"
    ],
    "User-Agent": [
      "curl\/7.35.0"
    ],
    "X-BB-SESSION": [
      "8f5a2e48-0f42-4478-bd1b-d28699158c4b"
    ]
  },
  "API_version": "0.9.5",
  "http_code": 404
}

正如你所看到的,因为user2没有创建这个文件,并没有访问这个文件,提取操作失败。 如果试图以执行命令user2 ,但与id所创建的文档user2 ,你就可以获取该文件就好了。

使用REST API检索所有文档

在的一般格式curl命令用来获取所有可访问的文件从一个集合是:

curl http://your_ip_address:9000/document/collection_name \
     -H X-BB-SESSION:session_id

请记住,此命令将只返回用户有权访问的文档。 例如,让我们尝试为执行此命令user1

curl http://your_ip_address:9000/document/todos \
     -H X-BB-SESSION:user1_session_id

执行此命令给我们一个类似以下的输出:

{"result":"ok","data":[{"@rid":"#24:1","@version":2,"@class":"todos","list_name":"User 1 - List 1","tasks":[{"task":"User1 List1 task 1","done":false},{"task":"User1 List1 task 2","done":false}],"id":"c83309e7-cbbd-49c8-a76b-9e8fadc72d6f","_creation_date":"2016-04-05T20:34:30.132-0400","_author":"user1"},{"@rid":"#24:2","@version":1,"@class":"todos","list_name":"User 1 - List 2","tasks":[{"task":"User1 List2 task 1","done":false},{"task":"User1 List2 task 2","done":false}],"id":"7c99c877-d269-4281-8a22-ef72175085f4","_creation_date":"2016-04-05T20:46:14.338-0400","_author":"user1"}],"http_code":200}

以下是该输出的格式化版本:

{
  "result": "ok",
  "data": [
    {
      "@rid": "#24:1",
      "@version": 2,
      "@class": "todos",
      "list_name": "User 1 - List 1",
      "tasks": [
        {
          "task": "User1 List1 task 1",
          "done": false
        },
        {
          "task": "User1 List1 task 2",
          "done": false
        }
      ],
      "id": "c83309e7-cbbd-49c8-a76b-9e8fadc72d6f",
      "_creation_date": "2016-04-05T20:34:30.132-0400",
      "_author": "user1"
    },
    {
      "@rid": "#24:2",
      "@version": 1,
      "@class": "todos",
      "list_name": "User 1 - List 2",
      "tasks": [
        {
          "task": "User1 List2 task 1",
          "done": false
        },
        {
          "task": "User1 List2 task 2",
          "done": false
        }
      ],
      "id": "7c99c877-d269-4281-8a22-ef72175085f4",
      "_creation_date": "2016-04-05T20:46:14.338-0400",
      "_author": "user1"
    }
  ],
  "http_code": 200
}

正如你可以从输出看到的,只有这些文件user1接触到被退回。 如果您要执行使用属于会话ID相同的查询user2 ,你会看到一组不同的文件。

使用REST API更新文档

所述的一般格式curl用于更新一个文件的命令是:

curl -X PUT http://your_ip_address:9000/document/collection_name/document_id \
     -d 'new_json_formatted_document' \
     -H Content-type:application/json \
     -H X-BB-SESSION:session_id

尝试更新文档时,请注意以下两点:

  • 只有文档所有者可以修改文档
  • 更新不会合并旧的和新的文件 取代了旧文件与新的。 这意味着如果update命令包含一些文档,其中一些字段从原始版本中缺失,这些字段将丢失。

让我们使用这个命令来更新标识的文件user1_list1_id包含以下内容:

{
  "list_name": "User 1 - List 1 Updated",
  "tasks": [
    {
      "task": "New User1 List1 task 1",
      "done": false
    }
  ]
}

进行此更新的命令是:

curl -X PUT http://your_ip_address:9000/document/todos/user1_list1_id \
     -d '{"list_name":"User 1 - List 1 Updated","tasks":[{"task":"New User1 List1 task 1","done":false}]}' \
     -H Content-type:application/json \
     -H X-BB-SESSION:user1_session_id

执行此命令给我们一个类似以下的输出:

{"result":"ok","data":{"@rid":"#24:1","@version":4,"@class":"todos","list_name":"User 1 - List 1 Updated","tasks":[{"task":"New User1 List1 task 1","done":false}],"id":"c83309e7-cbbd-49c8-a76b-9e8fadc72d6f","_creation_date":"2016-04-05T20:34:30.132-0400","_author":"user1"},"http_code":200}

这里是同样的输出,格式:

{
  "result": "ok",
  "data": {
    "@rid": "#24:1",
    "@version": 4,
    "@class": "todos",
    "list_name": "User 1 - List 1 Updated",
    "tasks": [
      {
        "task": "New User1 List1 task 1",
        "done": false
      }
    ],
    "id": "c83309e7-cbbd-49c8-a76b-9e8fadc72d6f",
    "_creation_date": "2016-04-05T20:34:30.132-0400",
    "_author": "user1"
  },
  "http_code": 200
}

如您所见,文档已更新为新信息。

使用REST API删除文档

在的一般格式curl用于删除文件的命令是:

curl -X DELETE http://your_ip_address:9000/document/collection_name/document_id \
     -H X-BB-SESSION:session_id

只有文档所有者和使用者delete权限对文件可以删除的文件。

让我们用这个命令来删除ID为文档user1_list1_id如下:

curl -X DELETE http://your_ip_address:9000/document/todos/user1_list1_id \
     -H X-BB-SESSION:user1_session_id

执行此命令将提供以下输出:

{"result":"ok","data":"","http_code":200}

这表示文档已成功删除。 通过访问此文件的任何企图日后id现在将失败。

使用REST API授予对其他用户的访问权限

我们已经看到,默认情况下,BaasBox阻止用户访问非他们创建的文档。 但是,有时需要向多个用户授予访问文档的权限。 让我们给予user2与标识的文档访问user1_list1_id

在的一般格式curl命令用于授予访问文档:

curl -X PUT http://your_ip_address:9000/document/collection_name/document_id/access_type/user/username \
     -H X-BB-SESSION:session_id

此命令仅在具有对此文档的完全访问权的用户执行时才起作用。 access_type占位符可以有以下4个值中的一个:

  • 更新
  • 删除
  • 所有

要授予user2读取ID访问该文件user1_list1_id ,使用的会话ID执行以下命令user1

curl -X PUT http://your_ip_address:9000/document/todos/user1_list1_id/read/user/user2 \
     -H X-BB-SESSION:user1_session_id

执行此命令将提供以下输出:

{"result":"ok","data":"","http_code":200}

这表明, user2现在可以访问文件user1_list1_id 如果您尝试访问此文件为user2 ,你现在可以看到该文件的详细信息,而不是一个错误响应

第6步 - 使用Supervisor保持应用程序运行

每当你有一个长时间运行的应用程序,总是有风险,它可以停止运行。 这可能是由于各种原因,如应用程序错误,系统重新启动等。可以发生这种情况。配置应用程序以在意外关闭的情况下重新启动是一个很好的做法。 这最小化维护应用程序的管理开销。

对于这种应用,我们将使用监督员 ,这使得它易于管理的长时间运行的应用程序。 如果你不熟悉的主管,你可以阅读更多关于如何安装和在Ubuntu管理监督员在这里

首先,安装主管:

sudo apt-get install supervisor

要使Supervisor管理我们的应用程序,我们需要创建一个配置文件。 我们将命名该文件baasbox.conf并将其放置在/etc/supervisor/conf.d目录。

sudo nano /etc/supervisor/conf.d/baasbox.conf

在文件中输入以下内容,根据需要替换突出显示的部分。

/etc/supervisor/conf.d/baasbox.conf
[program:Baasbox]
directory = /home/sammy/baasbox-0.9.5
command = /home/sammy/baasbox-0.9.5/start
autostart = true
autorestart = true
startsecs = 5
user = sammy
stdout_logfile = /var/log/supervisor/baasbox.log

我们现在需要通知主管这些更改,并让它使用这些更改。 执行以下命令:

supervisorctl reread

然后运行以下命令:

supervisorctl update

现在每当您的应用程序因任何原因关闭时,Supervisor将确保它重新启动,而不需要任何手动干预。

结论

在本文中,我们看到了如何使用BaasBox来管理内容,用户和权限,使用管理控制台和使用REST API。 除了本文涵盖的主题之外,还有很多BaasBox提供的。 您可以进一步探索BaasBox管理控制台,以熟悉允许您管理文件,获取和恢复数据库备份以及配置API端点可用性的部分。 更重要的是,你现在已经很好地开始在下一个应用程序中使用BaasBox。