如何在Ubuntu14.04上安装和使用BaasBox
介绍
BaasBox 是一个结合了数据库服务器和应用程序服务器的应用程序。 BaasBox 开箱即用,提供用户注册、用户管理、角色管理、内容管理、文件管理和带有备份的数据库管理。 由于所有这些功能都是通过标准 HTTP REST API 公开的,因此 Web 和移动应用程序的开发人员可以使用 BaasBox 作为后端来存储数据。 开发人员还可以基于 BaasBox 创建微服务,供其应用程序的其他部分使用。
本文将引导您完成安装 BaasBox、创建用户、使用管理控制台以及在创建简单应用程序后端时探索 REST API。
先决条件
- 你有一个运行 Ubuntu 14.04 的 Droplet
- 您以具有管理权限的非 root 用户身份登录到您的服务器。 请参阅教程 Initial server setup guide for Ubuntu 14.04 进行设置。
- 您已经从 Oracle 安装了官方的 Java 8 JRE。 本教程解释了如何做到这一点。
第 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-X.Y.Z
的目录中,其中 X.Y.Z
将是最新版本,例如 0.9.5
。 输入新创建的目录。
cd baasbox-X.Y.Z
此目录包含一个名为 start
的文件,需要执行该文件才能启动 BaasBox。 为此,我们首先需要使用以下命令使其成为可执行文件:
chmod +x ./start
然后要启动 BaasBox,请执行以下命令:
./start
您将看到一些输出,其结尾应类似于:
Output2016-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:9000
和http://127.0.0.1:9000
来自安装它的服务器(或通过 SSH 隧道)http://your_internal_server_ip:9000
来自您的服务器所在的内部网络(如果它在内部网络上)- 如果
your_ip_address
是可公开访问的 IP 地址,则来自 Internet 的http://your_ip_address:9000
。
如果需要,您可以让 BaasBox 在特定的网络接口和不同的端口上进行侦听。 为此,请使用以下命令:
./start -Dhttp.port=target_port -Dhttp.address=target_interface
在浏览器中访问 http://your_ip_address:9000/console
访问 BaasBox 管理控制台,您会看到如下图所示的界面:
随着 BaasBox 的运行,让我们设置一个应用程序和一些用户。
第 2 步 — 使用 BaasBox 创建应用程序
在本文中,我们将创建一个简单的 Todo List Manager,它应该:
- 允许用户注册
- 允许用户登录
- 允许用户创建多个待办事项列表
- 允许用户检索他们自己的待办事项列表
- 允许用户修改他们的待办事项列表
- 允许用户删除他们的待办事项列表
- 允许用户与其他用户共享他们的待办事项列表
在跟随时,请注意以下几点:
- 我们将创建两个用户名为
user1
和user2
- 这些用户的密码将被称为
user1_password
和user2_password
- 这些用户的会话 ID 将被称为
user1_session_id
和user2_session_id
。
虽然您可以通过 REST API 管理 BaasBox,但有时使用管理控制台更方便,正如您在步骤 2 中看到的那样,该控制台位于 http://your_ip_address:9000/console
。 在浏览器中访问该链接。 由于这是您第一次使用它,请使用默认凭据登录:
- 默认用户名:
admin
- 默认密码:
admin
- 默认应用代码:
1234567890
登录后,您将看到 BaasBox 仪表板:
让我们使用管理控制台为我们的应用程序创建用户。
第三步——创建用户
用户管理是 BaasBox 最有用的功能之一。 BaasBox 有一些内置的用户是私有的,不能被编辑。 这包括您在登录管理控制台时使用的 admin
用户。
BaasBox 还允许您定义角色并将其分配给用户以实现细粒度的访问控制。 默认情况下,BaasBox 具有以下 3 个角色:
administrator
- 此角色具有完整的、不受限制的访问权限backoffice
- 此角色授予对注册用户创建的内容的访问权限registered
- 这是新注册用户的默认角色
除了这些预配置的角色之外,您还可以添加自己的角色。 创建新角色时,其权限与上述 registered
角色相同。
您可以通过管理控制台或 REST API 在 BaasBox 中创建用户。 通常,您将使用 REST API 以编程方式创建用户,例如通过应用程序的用户注册过程。
通过管理控制台添加用户时,您可以为他们设置自定义角色。 但是,当使用内置的 REST API 注册时,新创建的用户被分配了 registered
角色。
要从 BaasBox 的管理控制台创建新用户,请在管理控制台中打开 USERS > Users 菜单,然后单击 New User 按钮。
这将打开一个表单,您可以在其中填写您正在创建的用户的详细信息:
Username、Password、Retype Password 和 Role 字段是必需的,而其他所有字段都是可选的。 请注意,如果需要,您可以在此表格中向下滚动以填写其他详细信息。
将此用户的用户名设置为 user1
。 您可以选择任何角色,但最常用的是registered
。 输入所有详细信息后,单击保存更改按钮完成用户创建过程。
我们将在后续部分中使用 REST API 创建用户。 现在让我们为应用程序的内容配置一个位置。
第 4 步 - 创建一个集合
BaasBox 将您的内容组织成 collections
,类似于 MongoDB 等 NoSQL 数据库提供的集合。 集合包含相同类型的 documents
。 熟悉 SQL 数据库的用户可以认为 collection
与 table
大致相似。 类似地,document
有点像 record
。
集合只能由管理员创建。 虽然创建集合的最常用方法是通过管理控制台,但也可以使用 REST API 来实现。 在本节中,我们将了解如何从管理控制台创建集合。
所有内容管理功能都可以在管理控制台的 Collections
和 DATA
部分的 Documents
菜单中使用。
打开 数据 > 集合 菜单。 您将看到一个页面,其中列出了应用程序中的所有当前集合。
要创建新集合,请单击 New Collection 按钮。 这将显示一个表单,提示您输入集合名称。
输入todos
作为集合名称,点击保存更改,完成集合创建过程。 应用程序的用户现在可以使用 REST API 访问此集合及其在此集合中的文档。 让我们看看它是如何工作的。
第 5 步 — 使用 REST API
现在我们知道如何使用管理控制台执行各种任务,让我们看看如何使用 BaasBox 的 REST API 执行相同的任务。
REST API 可以被各种类型的应用程序使用,从 Web 和移动应用程序到控制台应用程序,我们将在下面的示例中使用 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
执行此命令的输出应类似于:
Output{"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}
这是上述输出的格式化版本:
Output{ "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
,它是需要在 user2
将进行的所有未来查询中出现的会话 ID。 我们将在后续部分中将此值称为 user2_session_id
。
使用 REST API 登录用户
现在我们有了 user2
的会话 ID,让我们为 user1
(我们之前在管理控制台中创建的用户)获取一个会话 ID。 我们将通过使用 REST API 以 user1
身份登录来完成此操作。 用于登录的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"
执行此命令的输出应类似于:
Output{"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}
这是上述输出的格式化版本:
Output{ "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 }
上面响应中突出显示的部分显示了 user1
的会话 ID,我们需要在 user1
将进行的所有未来查询中使用它。 从现在开始,我们将此值称为 user1_session_id
。
使用 REST API 创建文档
让我们在我们的应用程序中创建两个文档。 我们将一个文档分配给我们使用管理控制台创建的用户 user1
,并将另一个文档分配给我们通过 REST API 创建的用户 user2
。 我们将创建的文档的结构将类似于以下示例:
Sample Document Contents{ "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
,我们要插入的文档如下所示:
Document Contents{ "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
执行此命令会产生类似于以下内容的输出:
Output{"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}
这是上述输出的格式化版本:
Output{ "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
创建两个列表
完成这些步骤后,您将在 todos
集合中共有 4 个文档。 在随后的部分中,我们将这些文档的 ID 称为:
- user1_list1_id
- user1_list2_id
- user2_list1_id
- user2_list2_id
现在我们有了一些可以使用的数据,因此我们可以研究如何使用 REST API 查询数据。
使用 REST API 检索单个文档
通过 id
获取文档的 curl
命令的一般格式为:
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
执行此命令会为我们提供类似于以下内容的输出:
Output{"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}
这是响应的格式化版本:
Output{ "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
执行此命令会显示类似于以下内容的输出:
Output{"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}
这是相同的输出,为便于阅读而格式化:
Output{ "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
的形式执行命令,但使用由 user2
创建的文档的 id
,您将能够很好地获取该文档。
使用 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
执行此命令会为我们提供类似于以下内容的输出:
Output{"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}
这是该输出的格式化版本:
Output{ "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
有权访问的文档被返回。 如果您要使用属于 user2
的会话 ID 执行相同的查询,您将看到一组不同的文档。
使用 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
尝试更新文档时要记住两件事:
- 只有文档所有者可以修改文档
- 更新 不会合并旧文档和新文档 。 它 用新文档替换 旧文档。 这意味着如果更新命令包含原始版本中缺少某些字段的文档,则这些字段将丢失。
让我们使用这个命令来更新 id 为 user1_list1_id
的文档,内容如下:
New Document Contents{ "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
执行此命令会为我们提供类似于以下内容的输出:
Output{"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}
这是相同的输出,格式化:
Output{ "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
执行此命令会给出以下输出:
Output{"result":"ok","data":"","http_code":200}
这表明文档已成功删除。 id
将来访问此文档的任何尝试现在都将失败。
使用 REST API 向其他用户授予访问权限
我们已经看到,默认情况下,BaasBox 如何阻止用户访问不是由他们创建的文档。 但是,有时需要授予多个用户访问文档的权限。 让我们授予 user2
访问 ID 为 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
的文档的读取权限,请使用 user1
的会话 ID 执行以下命令:
curl -X PUT http://your_ip_address:9000/document/todos/user1_list1_id/read/user/user2 \ -H X-BB-SESSION:user1_session_id
执行此命令会给出以下输出:
Output{"result":"ok","data":"","http_code":200}
这表明 user2
现在可以访问文档 user1_list1_id
。 如果您尝试以 user2
身份访问此文档,您现在将看到文档详细信息而不是错误响应
第 6 步 — 使用 Supervisor 保持应用程序运行
每当您有一个长时间运行的应用程序时,它总是存在停止运行的风险。 这可能由于多种原因而发生,例如应用程序错误、系统重新启动等。 最好将应用程序配置为在意外关闭时重新启动。 这最大限度地减少了维护应用程序的管理开销。
对于这个应用程序,我们将使用 Supervisor,它可以轻松管理长时间运行的应用程序。 如果您对 Supervisor 不熟悉,可以在此处 阅读更多关于 如何在 Ubuntu 上安装和管理 Supervisor 的内容。
首先,安装主管:
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
我们现在需要将这些更改通知 Supervisor 并让它使用这些更改。 执行以下命令:
supervisorctl reread
然后运行这个命令:
supervisorctl update
现在,每当您的应用程序因任何原因关闭时,Supervisor 将确保它重新启动而无需任何手动干预。
结论
在本文中,我们了解了如何使用 BaasBox 通过管理控制台和 REST API 来管理内容、用户和权限。 除了本文涵盖的主题之外,BaasBox 还提供了更多内容。 您可以进一步探索 BaasBox 管理控制台,以熟悉允许您管理文件、获取和恢复数据库备份以及配置 API 端点可用性的部分。 更重要的是,您现在可以在下一个应用程序中开始使用 BaasBox。