应用配置参考
配置文件
默认配置文件
GAPP 应用的 “默认配置文件” 位于后端模块项目的默认资源目录下,路径为:<ROOT_PROJ_DIR>/server/src/main/resources/conf/server.conf
。
运行时配置文件
运行时配置文件” 是 GAPP 应用在 IDE 中运行/调试时的实际生效的配置文件,位于后端模块 server 项目下的 target 目录下,路径为:<ROOT_PROJ_DIR>/server/target/conf/server.conf
。
当首次启动运行 GAPP 应用时,会以后端模块 server 项目下的 target 目录(<ROOT_PROJ_DIR>/server/target/
)作为应用运行的主目录GAPP_HOME
,此时,“默认配置文件” 将会被复制到 <GAPP_HOME>/conf/
目录下,作为运行时配置文件”。
当再次运行应用时,如果 运行时配置文件” 不存在,则再次复制 “默认配置文件” ;否则,直接采用已存在的 运行时配置文件” 。
配置概述
GAPP 应用开发在设计时采用了 “约定大于配置” 的原则,配置文件模板针对最常见的情形定义了绝大部分的默认值,开发者可以在此基础上根据实际需要调整小部分配置即可。
初始运行应用时,首要关注的配置主要包括以下几个方面:
- 服务器的网络接入:设置绑定的主机地址和端口
- 安全管理:设置根账户的初始密码
- MongoDB 数据库: 设置应用核心数据库的连接
通常,在最简单的情形中,必须提供配置的只有 “MongoDB数据库 -> 应用核心库 MongoDB 的连接配置” 部分,需要设置 MongoDB 数据库地址、用户、密码。
指定的数据库用户要求必须有 “读写权限”。
当应用首次运行时,系统将在指定的数据库中自动初始化根账号和系统元数据等内容。
#######################################
# 服务器的网络接入
#######################################
# ......
# 声明应用服务绑定的本地网络地址;
server.address=0.0.0.0
# HTTP 服务的本地网络端口;
server.port=8080
# HTTP 服务的上下文路径;
server.servlet.context-path=/
# ......
#######################################
# 安全管理
#######################################
# 初始化根账户;
# 如果不指定根用户名,则不自动初始化根用户;
galaxyplatform.security.account.root.username=root
# 初始化根账户的登录口令;如果不设置,则会在首次启动初始化的时候生成一个随机口令输出到日志文件中;
#galaxyplatform.security.account.root.password=root@123
# ......
#######################################
# MongoDB 数据库
#######################################
#-------------------------------------------------
# 应用核心库 MongoDB 的连接配置;
#-------------------------------------------------
# spring.data.mongodb.auto-index-creation=true
# spring.data.mongodb.host=127.0.0.1
# spring.data.mongodb.port=27017
# spring.data.mongodb.database=dataDB
# spring.data.mongodb.authenticationDatabase=authDB
# spring.data.mongodb.username=usernameOfDb
# spring.data.mongodb.password=passwordOfDb
# ......
- 目前 GAPP 应用核心库只支持 MongoDB 数据库。核心库对 MySQL 等其它数据库的支持特性还处于开发中,敬请期待。
- 应用自身可以有独立的业务数据库和数据持久化实现,并不必须采用核心数据库。 GAPP 应用集成了 Spring/Spring Boot ,应用自身可以自行引入任意类型的数据库和数据持久化框架。
最小可运行配置
在最简单的情形中,可运行的最小配置项中,必须提供配置的只有 “MongoDB数据库 -> 应用核心库 MongoDB 的连接配置” 部分。
创建 MongoDB 数据库
- 通过 MongoDB 客户端连接到服务器
sudo ./mongo --host 127.0.0.1 --port 27017 -u root
- 在 MongoDB 控制台中创建数据库
myappdb
use myappdb
- 在 MongoDB 控制台中,在
admin
数据库下创建用户gapper
,分配 “读写” 权限
use admin
db.createUser(
{
user: "gapper",
pwd: "gapper#123",
roles: [ { role: "readWrite", db: "myappdb" } ]
}
)
- 通常情况下,建议只授予该用户
readWrite
角色使其只有数据的读写权限,因为该用户在接下来的步骤中会绑定到应用中,读写权限已经足够,应避免过多授权带来的安全风险。- GAPP 对 MongoDB 数据库的配置没有特殊要求。关于 MongoDB 的更多操作可参考《管理 MongoDB》,或者访问官方的 《MongoDB操作手册》。
配置应用的核心数据库
将上一步创建的 MongoDB 数据库名称和用户信息,更新到应用的默认配置文件。
#######################################
# MongoDB 数据库
#######################################
#-------------------------------------------------
# 应用核心库 MongoDB 的连接配置;
#-------------------------------------------------
spring.data.mongodb.auto-index-creation=true
spring.data.mongodb.host=127.0.0.1
spring.data.mongodb.port=27017
spring.data.mongodb.database=myappdb
spring.data.mongodb.authenticationDatabase=admin
spring.data.mongodb.username=gapper
spring.data.mongodb.password=gapper#123
- 执行结果
在创建应用生成的默认配置基础上,当完成了 应用核心库 MongoDB 的设置之后,就可以开始启动运行了。
配置根账号
# 初始化根账户;
# 如果不指定根用户名,则不自动初始化根用户;
galaxyplatform.security.account.root.username=root
# 初始化根账户的登录口令;如果不设置,则会在首次启动初始化的时候生成一个随机口令输出到日志文件中;
galaxyplatform.security.account.root.password=root@123
# 根账户的授权;
# 注:根账号会默认地授予根角色 ROLE:SYSTEM://ROOT/ROOT 权限,不需要显式声明;
#galaxyplatform.security.account.root.authorities=
配置角色权限
#------------------------
# 定义角色;(角色名称大小不敏感)
#------------------------
# 1. 系统预定义角色;
# 系统有 3 个预定义的默认角色 ROOT 、 ADMIN 、 EVERYONE ,不需要显式地声明:
# ROOT 系统根账号角色,默认授予根账号;
# ADMIN 组织管理员角色,默认授予任意组织的管理员,当账号被解除组织管理员身份后,该权限自动失效;
# EVERYONE 普通账号角色,默认授予任意账号;
#
# 2. 配置预定义角色;
# 按以下设置可声明预定义角色;
# galaxyplatform.security.rbac.roles=GUEST
#
#------------------------
# 定义角色的预定义权限列表;
#------------------------
# 根账号角色的授权;
# 注:此角色的授权会直接合并到根账号的权限列表;
galaxyplatform.security.rbac.authorities.ROOT=FEATURE://CONSOLE/MENU/ORG-MANAGEMENT/ORG-REGISTER,\
FEATURE://CONSOLE/MENU/ORG-MANAGEMENT/ORG-AUTHORIZE,\
FEATURE://CONSOLE/MENU/SECURITY/SECURITY-ACCOUNT,\
FEATURE://CONSOLE/MENU/SECURITY/SECURITY-ROLE,\
FEATURE://CONSOLE/MENU/SECURITY/SECURITY-AUTHORIZE-ACCOUNT,\
FEATURE://CONSOLE/MENU/SYSTEM-CONFIG/EMAIL-SERVER-CONFIG
# 组织管理员角色的授权;
# 注:对机构管理员角色最终获得的权限会受到所在机构的权限范围约束,不能超出机构获得的权限列表;
galaxyplatform.security.rbac.authorities.ADMIN=FEATURE://CONSOLE/MENU/ORG-MANAGEMENT/ORG-SETTINGS,\
FEATURE://CONSOLE/MENU/ORG-MANAGEMENT/JOB-MANAGEMENT,\
FEATURE://CONSOLE/MENU/ORG-MANAGEMENT/EMPLOYEE-MANAGEMEMT,\
FEATURE://CONSOLE/MENU/ORG-MANAGEMENT/ORG-MEMBER-REGISTER,\
FEATURE://CONSOLE/MENU/ORG-MANAGEMENT/ORG-MEMBER-AUTHORIZE,\
FEATURE://CONSOLE/MENU/BUSI/BUSI-REGISTER,\
FEATURE://CONSOLE/MENU/FILE-SERVICE-MNGMT/FILE-ACCESS-AUTHORIZE
# 普通账号角色的授权;
# 注:此角色会直接合并到所有用户的权限列表;
galaxyplatform.security.rbac.authorities.EVERYONE=FEATURE://PLATFORM/TOOLBAR/TBAR-LOGOUT,\
FEATURE://PLATFORM/TOOLBAR/TBAR-ACCOUNT-PROFILE
配置扩展 Web 服务
首页
# 设置首页 URL;
# 默认值:/index.html ;
galaxyplatform.web.index-page=index.html
默认值为
/index.html
,如果不需要更改为其它值,则不需要做任何配置。
API URL 前缀格式
# 以 @HttpService 标注的服务 URL 的路径前缀;
# 默认值:/api
galaxyplatform.web.http-service.path-prefix=/api
跨源资源共享(CORS)
# 设置跨源资源共享(CORS: Cross Origin Resource Share);
galaxyplatform.web.cors.allows[/api/ffs/secure/**].headers=*
galaxyplatform.web.cors.allows[/api/ffs/secure/**].methods=*
galaxyplatform.web.cors.allows[/api/ffs/secure/**].origins=http://site1-host:8081, https://site2-host:8082
URL匿名访问规则
# 设置可匿名访问 URL 规则;多项规则以英文逗点“,”分隔;
galaxyplatform.security.web.anonymous-urls=/,/index.html
登录认证
提供选项控制登录以后的“HTTP跳转”方式,用于和其它系统通过接口集成“登录”功能,能提供不同的控制选项。
#登录操作后不强制自动重定向,由客户端通过 HTTP 头部 No-Redirect 指示是否自动跳转;
galaxyplatform.security.web.redirect.required=false
#galaxyplatform.security.web.redirect.no-redirect-header-name=No-Redirect
配置服务器的网络
此部分采用的是 Spring 框架定义的 Web 服务器配置选项。
#######################################
# 服务器的网络接入
#######################################
# 声明应用服务的名称;
server.name=GAPP-DEMO
# 声明应用服务绑定的本地网络地址;
server.address=0.0.0.0
# HTTP 服务的本地网络端口;
server.port=8080
# HTTP 服务的上下文路径;
server.servlet.context-path=/
# 声明应用服务的公网地址;
server.public-address=
# HTTP 服务的公共网络端口;
server.public-port=
Web 参数
Tomcat 服务器
配置 SSL 安全证书
当没有采用反向代理服务器(如 nginx),独立部署应用时,可以通过以下方式配置应用服务器的证书,实现支持 HTTPS 协议。