在 ServBay 中配置和运行 LoopBack 项目
什么是 LoopBack?
LoopBack 是一个由 IBM 开发的高度可扩展的开源 Node.js 框架,专为快速构建 API 和微服务而设计。它采用模型驱动的开发(MDD)方式,能够帮助开发者高效地定义数据模型,并自动生成功能强大的 RESTful API。LoopBack 框架内置了丰富的功能,包括数据源连接、用户认证和授权、API 探索器等,并支持多种数据库和协议。
LoopBack 的主要特性和优势
- 模型驱动开发 (MDD):通过直观的方式定义数据模型,框架自动生成相应的 API 端点和数据验证逻辑。
- 多数据源支持:轻松连接各种主流数据库(如 MongoDB, MySQL, PostgreSQL, MariaDB 等)以及 RESTful 服务、SOAP 服务等。
- 强大的 CLI 工具:LoopBack CLI (Command Line Interface) 提供了丰富的命令,极大地简化了项目初始化、模型定义、数据源配置等开发任务。
- 模块化和可扩展性:框架设计灵活,支持通过组件和扩展来集成第三方库和服务,满足特定业务需求。
- 内置安全特性:提供开箱即用的用户认证(Authentication)和授权(Authorization)机制,帮助开发者快速构建安全的 API。
使用 LoopBack,开发者可以大幅提升构建 Web 应用后端和 API 的效率,创建高性能且易于维护的应用程序。
使用 ServBay 设置和运行 LoopBack 项目
本文将指导您如何利用 ServBay 提供的 Node.js 环境来创建并运行一个 LoopBack 项目。我们将利用 ServBay 的『网站』功能来配置本地 Web 服务器,并通过反向代理的方式,将外部请求转发到 LoopBack 应用运行的端口,实现便捷的本地访问和开发调试。
创建 LoopBack 项目
安装 LoopBack CLI
在开始之前,请确保您已经在 ServBay 中安装并启用了 Node.js 软件包。然后,打开终端,使用 npm 全局安装 LoopBack CLI 工具:
bashnpm install -g @loopback/cli
1初始化项目
导航到 ServBay 建议的网站根目录
/Applications/ServBay/www
,并使用 LoopBack CLI 初始化一个新的应用项目。建议项目名称使用小写字母和连字符,例如servbay-loopback-app
:bashcd /Applications/ServBay/www lb4 app servbay-loopback-app
1
2CLI 将会引导您完成项目设置,包括选择特性(如 REST API、序列化、认证等)和配置项目结构。请根据您的需求进行选择。
安装项目依赖
进入新创建的项目目录,并安装项目所需的 Node.js 依赖包:
bashcd servbay-loopback-app npm install
1
2
修改 LoopBack 项目输出内容(可选)
为了演示如何通过 ServBay 访问您的应用,我们可以修改默认的 /ping
接口,让它返回一个定制化的响应。
修改
src/controllers/ping.controller.ts
文件找到项目中的
src/controllers/ping.controller.ts
文件,将其内容修改为如下所示,使/ping
接口返回字符串 "Hello ServBay!":typescriptimport {get} from '@loopback/rest'; export class PingController { constructor() {} @get('/ping') ping(): string { // 修改返回内容为 "Hello ServBay!" return 'Hello ServBay!'; } }
1
2
3
4
5
6
7
8
9
10
11
在开发模式下运行项目
在开发阶段,您通常会运行 LoopBack 应用自带的开发服务器,以便快速迭代和调试。我们将通过 ServBay 的反向代理访问这个开发服务器。
运行开发服务器
在项目根目录下,通过终端启动 LoopBack 应用。LoopBack 应用通常会在一个指定的端口监听请求。您可以设置
PORT
环境变量来指定端口号,例如使用端口8585
:bashcd /Applications/ServBay/www/servbay-loopback-app PORT=8585 npm start
1
2应用启动后,您会在终端看到类似 "Server is running at http://[::1]:8585" 的输出。
配置 ServBay 网站(反向代理)
打开 ServBay 控制面板,导航到『网站』功能区。点击添加按钮,创建一个新的反向代理网站,将外部域名和端口的请求转发到 LoopBack 应用监听的内部地址和端口:
- 名字 (Name):例如
My first LoopBack dev site
(用于在 ServBay 中标识) - 域名 (Domain):例如
servbay-loopback-dev.servbay.demo
(您将在浏览器中访问的本地域名) - 网站类型 (Type):选择
反向代理 (Reverse Proxy)
- IP (IP Address):输入
127.0.0.1
(LoopBack 应用在本机运行) - 端口 (Port):输入
8585
(LoopBack 应用监听的端口)
完成配置后,保存设置并在 ServBay 中应用更改。ServBay 会自动配置本地 DNS (通过修改
/etc/hosts
文件或使用 ServBay Helper Tool) 和 Web 服务器 (Caddy 或 Nginx),使您可以通过配置的域名访问。关于如何在 ServBay 中添加反向代理网站,可以参考文档:添加 Node.js 开发网站。
- 名字 (Name):例如
访问开发模式的应用
打开您的 Web 浏览器,访问您配置的域名和 LoopBack 应用的接口路径,例如
https://servbay-loopback-dev.servbay.demo/ping
。由于 ServBay 默认支持为本地网站自动配置 SSL 证书 (通过 ServBay User CA 或 ServBay Public CA),您可以直接通过 HTTPS 安全地访问您的本地开发网站,这模拟了生产环境的访问方式,有助于提前发现潜在的 SSL 相关问题。更多关于 ServBay SSL 功能的信息,请参考:使用 SSL 保护网站。
部署生产版本(可选)
当您的 LoopBack 项目准备好部署时,您可能需要以生产模式运行它。生产模式下,LoopBack 应用通常会有更好的性能和更少的调试输出。
运行生产服务器
在项目根目录下,通过终端以生产模式启动 LoopBack 应用。同样,指定一个端口,例如
8586
,并设置NODE_ENV
环境变量为production
:bashcd /Applications/ServBay/www/servbay-loopback-app PORT=8586 NODE_ENV=production npm start
1
2配置 ServBay 网站(反向代理)
回到 ServBay 控制面板的『网站』功能区,添加或修改一个反向代理网站,指向生产模式下运行的 LoopBack 应用:
- 名字 (Name):例如
My first LoopBack production site
- 域名 (Domain):例如
servbay-loopback-prod.servbay.demo
- 网站类型 (Type):选择
反向代理 (Reverse Proxy)
- IP (IP Address):输入
127.0.0.1
- 端口 (Port):输入
8586
(生产模式应用监听的端口)
保存设置并应用更改。
- 名字 (Name):例如
访问生产模式的应用
打开您的 Web 浏览器,访问生产模式的域名,例如
https://servbay-loopback-prod.servbay.demo/ping
,查看生产版本的运行情况。同样,ServBay 会自动提供 HTTPS 支持。
连接数据库
LoopBack 框架通过数据源连接器支持多种数据库。ServBay 提供了 MySQL, MariaDB, PostgreSQL, MongoDB 和 Redis 等多种数据库软件包,您可以轻松地在 ServBay 中启动这些数据库服务,并在您的 LoopBack 项目中进行配置连接。
以下是连接 ServBay 提供的几种常见数据库的示例配置。请根据您的实际需求选择并修改配置。
重要提示: 下面示例中的数据库用户名和密码是占位符。在实际使用中,请务必使用您在 ServBay 中为相应数据库设置的实际 root 用户密码或其他用户的凭据。您可以在 ServBay 控制面板中管理数据库用户和密码。
连接 MongoDB
首先,确保您已在 ServBay 中安装并启动了 MongoDB 软件包。 安装 LoopBack 的 MongoDB 连接器:
bashnpm install --save @loopback/connector-mongodb
1然后在项目中配置数据源(通常在
src/datasources/mongodb.datasource.ts
或类似文件中):typescript// src/datasources/mongodb.datasource.ts import {juggler} from '@loopback/repository'; const config = { name: 'mongodb', connector: 'mongodb', // ServBay MongoDB 默认运行在 localhost:27017 url: 'mongodb://localhost:27017/servbay-loopback-app', // 替换为您的数据库名 host: 'localhost', port: 27017, user: '', // 如果设置了用户认证,填写用户名 password: '', // 如果设置了用户认证,填写密码 database: 'servbay-loopback-app', // 替换为您的数据库名 // 其他可选配置... }; export class MongodbDataSource extends juggler.DataSource { static dataSourceName = 'mongodb'; constructor() { super(config); } }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22连接 Redis
首先,确保您已在 ServBay 中安装并启动了 Redis 软件包。 安装 LoopBack 的 Redis 连接器(注意:LoopBack 官方没有直接的
@loopback/connector-redis
,常用的是社区提供的loopback-connector-redis
或直接使用 Node.js 的redis
库结合 LoopBack 的服务概念):bashnpm install --save loopback-connector-redis # 或其他兼容的 Redis 库
1然后在项目中配置数据源(示例使用
loopback-connector-redis
的风格):typescript// src/datasources/redis.datasource.ts import {juggler} from '@loopback/repository'; const config = { name: 'redis', connector: 'redis', // ServBay Redis 默认运行在 localhost:6379 url: 'redis://localhost:6379', // 其他可选配置... }; export class RedisDataSource extends juggler.DataSource { static dataSourceName = 'redis'; constructor() { super(config); } }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17注意:LoopBack 4 对数据源的使用方式与 LoopBack 3 有所不同。上述示例是基于 LoopBack 3 连接器风格的简化表示,在 LoopBack 4 中推荐使用
@loopback/repository
提供的@datasource
装饰器和更现代的配置方式。请参考 LoopBack 4 官方文档获取最新的数据源配置指南。然而,连接参数host
,port
,user
,password
,database
等仍然是通用的。连接 MariaDB (或 MySQL)
首先,确保您已在 ServBay 中安装并启动了 MariaDB 或 MySQL 软件包。ServBay 同时支持这两种数据库。LoopBack 的 MySQL 连接器通常也兼容 MariaDB。 安装 LoopBack 的 MySQL 连接器:
bashnpm install --save @loopback/connector-mysql
1然后在项目中配置数据源:
typescript// src/datasources/mariadb.datasource.ts 或 mysql.datasource.ts import {juggler} from '@loopback/repository'; const config = { name: 'mariadb', // 或 'mysql' connector: 'mysql', // 使用 mysql 连接器 // url: '', // 可以使用 url 格式,或单独配置 host, port, database host: 'localhost', // ServBay 数据库默认运行在 localhost port: 3306, // MariaDB/MySQL 默认端口 user: 'root', // ServBay MariaDB/MySQL 默认用户通常是 root password: 'password', // << 请替换为 ServBay 中设置的实际数据库密码 >> database: 'servbay_loopback_app', // 替换为您的数据库名 // 其他可选配置... }; export class MariaDbDataSource extends juggler.DataSource { static dataSourceName = 'mariadb'; // 或 'mysql' constructor() { super(config); } }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21请注意:示例中的
password: 'password'
是一个占位符。请务必在 ServBay 控制面板的数据库管理界面查找或设置您的 MariaDB/MySQL root 用户密码,并将其填入配置中。连接 PostgreSQL
首先,确保您已在 ServBay 中安装并启动了 PostgreSQL 软件包。 安装 LoopBack 的 PostgreSQL 连接器:
bashnpm install --save @loopback/connector-postgresql
1然后在项目中配置数据源:
typescript// src/datasources/postgresql.datasource.ts import {juggler} from '@loopback/repository'; const config = { name: 'postgresql', connector: 'postgresql', // url: '', // 可以使用 url 格式,或单独配置 host, port, database host: 'localhost', // ServBay PostgreSQL 默认运行在 localhost port: 5432, // PostgreSQL 默认端口 user: 'user', // << 请替换为 ServBay 中设置的 PostgreSQL 用户名 >> password: 'password', // << 请替换为 ServBay 中设置的实际密码 >> database: 'servbay_loopback_app', // 替换为您的数据库名 // 其他可选配置... }; export class PostgresqlDataSource extends juggler.DataSource { static dataSourceName = 'postgresql'; constructor() { super(config); } }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21请注意:示例中的
user: 'user'
和password: 'password'
是占位符。请务必在 ServBay 控制面板的数据库管理界面查找或创建 PostgreSQL 用户和密码,并将其填入配置中。
总结
通过以上步骤,您已经成功地在 ServBay 本地开发环境中创建、配置并运行了一个 LoopBack Node.js 项目。您学会了如何利用 ServBay 的『网站』功能通过反向代理访问您的应用,以及如何配置 LoopBack 项目连接到 ServBay 提供的各种数据库服务。
ServBay 为 LoopBack 等 Node.js 框架提供了稳定、便捷的本地开发环境,集成了 Web 服务器、数据库和多种语言运行时,极大地简化了开发者的工作流程。利用 ServBay 的网站管理、SSL 支持和数据库集成,您可以更高效、安全地进行本地开发和测试。