安装 AngusTester
注意
- 安装和运行AngusTester应用之前,需要先安装并运行AngusGM基础应用。
- 以下是针对
Enterprise
安装过程说明,如果需要安装其他版本,将版本类型标志Enterprise
替换成Community
或Datacenter
即可。
一、前置要求
系统要求
- 操作系统:支持 Linux / MacOS / Windows Server。
- 计算资源:最小配置要求
2核CPU、4GB内存
,推荐配置4核CPU、8GB内存
。 - 磁盘空间:最小 10GB 可用空间,推荐配置
100GB
。
运行环境
- 手动配置安装:需要配置
OpenJDK 17+
,默认会自己安装。 - Docker 和 Compose 部署:需要安装 Docker,推荐版本
V20.10+
。
- 手动配置安装:需要配置
中间件
- 数据库:需要 MySQL 5.7+。
- Redis 缓存:需要 Redis 7.0+。
应用版本
- 社区版本(Community):永久免费版本。
- 企业版本(Enterprise):收费版本,需要获取许可。支持更多高级功能,支持更多用户。
- 数据中心版本(Datacenter):收费版本,需要获取许可。支持更多高级功能,支持多租户和更多用户。
二、手动配置安装
1. 下载并解压
bash
# 下载安装包
curl -LO https://nexus.xcan.cloud/repository/release/package/AngusTester-Enterprise-1.0.0.zip
# 解压安装包至目标目录
mkdir -p /opt/AngusTester
unzip -qo AngusTester-Enterprise-1.0.0.zip -d /opt/AngusTester
# 进入到安装目录
cd /opt/AngusTester
2. 配置应用
bash
# 复制配置模版文件
cp conf/.priv-template.env conf/.priv.env
# 编辑配置文件
vi conf/.priv.env
修改下面选项为你的配置:
dotenv
# 初次安装或重新安装时需要设置成`AngusTester`,安装后会自动清除
INSTALL_APPS=AngusTester
# 指定安装数据库类型、必须参数
DATABASE_TYPE=MYSQL
# 应用程序IP(v4)或主机名。未配置时,自动获取运行环境的IPv4地址
# 注意:在docker环境中,必须指定为宿主机IP地址
TESTER_HOST=
# 应用程序端口,默认值为`8901`
TESTER_PORT=8901
# 配置Web站点访问地址,格式为:`http(s)://域名或IP+端口`,不指定会时会自动设置成:`http://GM_HOST:GM_PORT`
GM_WEBSITE=
# 管理员名称、可选参数
GM_ADMIN_FULL_NAME=
# 管理员邮箱地址、可选参数
GM_ADMIN_EMAIL=
# 管理员用户名,不指定时会自动设置成`admin`
GM_ADMIN_USERNAME=admin
# 管理员密码,不指定时会自动设置成`admin@123`
GM_ADMIN_PASSWORD=admin@123
# 数据库IP或主机名、必须参数
GM_DB_HOST=127.0.0.1
# 数据库端口、必须参数
GM_DB_PORT=3306
# 数据库名称、必须参数
GM_DB_NAME=angus
# 数据库用户名,该用户必须授权所有Angus数据库权限、必须参数
GM_DB_USER=Angus
# 数据库密码、必须参数
GM_DB_PASSWORD=Angus123
# Redis实例部署类型、必须参数
REDIS_DEPLOYMENT=SINGLE
# Redis实例IP或主机名、必须参数
REDIS_HOST=127.0.0.1
# Redis实例端口、必须参数
REDIS_PORT=6379
# Redis实例密码、必须参数
REDIS_PASSWORD=Angus123
# 配置angustester访问域名,可选参数
TESTER_WEBSITE=
# ------------------------
注意
- 以上配置除了
INSTALL_APPS
和TESTER_WEBSITE
,其他配置选项应该和配置AngusGM应用选项保持一致。 - 更多其他配置选项和说明请查看下面
配置参考->应用配置
。
3. 启动应用
bash
# 运行启动命令
./startup-tester.sh
# 查看启动日志
tail -f -n1000 logs/tester.log
注意
- 该脚本是以后台进程启用应用,自动安装和启动大约需要2分钟,具体执行信息请查看
logs
日志文件内容。 - 如果需要Nginx代理AngusTester应用,或通过Nginx虚拟服务器方式给应用配置域名,请查看下面
配置参考->Nginx代理配置
。
三、Docker方式安装
1. 准备安装目录与权限配置
bash
# 创建主安装目录(必需步骤,用于后续挂载)
mkdir -p /opt/AngusTester
# 进入安装目录进行操作
cd /opt/AngusTester
# 创建应用所需的子目录结构(配置文件、数据、日志等)
mkdir -p {data,logs,plugins,tmp}
# 设置目录权限(确保容器用户有读写权限)
# 注意:生产环境建议使用更精细的权限控制(如 chown 1000:1000)
chmod -R 777 /opt/AngusTester
2. 获取镜像与初始化配置
bash
# 从 Docker Hub 拉取官方企业版镜像
docker pull xcancloud/angustester-enterprise:1.0.0
# 临时运行容器,将默认配置文件导出到宿主机目录
# 此步骤仅需执行一次,用于初始化配置模板
docker create --name temp_container xcancloud/angustester-enterprise:1.0.0
docker cp temp_container:/opt/AngusTester/default-conf conf
docker rm -f temp_container
# 基于模板创建私有环境配置文件
cp conf/.priv-template.env conf/.priv.env
# 编辑配置文件,设置数据库连接、Redis等关键参数
# 配置内容与 "手动配置安装 -> 配置应用" 中相同
vi conf/.priv.env
3. 启动应用容器
bash
# 启动应用容器(后台守护进程模式)
# 重要前提条件:
# 1. 数据库服务已部署并正常运行
# 2. Redis 服务已部署并正常运行
# 3. conf/.priv.env 文件已正确配置上述服务连接信息
docker run \
--name angustester -d \
-p 8901:8901 \
-p 6806:6806 \
-v ./conf:/opt/AngusTester/conf \
-v ./data:/opt/AngusTester/data \
-v ./logs:/opt/AngusTester/logs \
-v ./plugins:/opt/AngusTester/plugins \
-v ./tmp:/opt/AngusTester/tmp \
xcancloud/angustester-enterprise:1.0.0
参数说明:
参数 | 作用 |
---|---|
-d | 以后台模式(detached)运行容器 |
--name angustester | 为容器指定名称 angustester (便于后续管理操作) |
-p 8901:8901 | 应用端口映射:将主机 8901 端口绑定到容器 8901 端口(格式:主机端口:容器端口 ) |
-p 6806:6806 | 内嵌请求代理服务(AngusProxy)端口映射:将主机 6806 端口绑定到容器 6806 端口(格式:主机端口:容器端口 ) |
-v ./conf:/opt/AngusTester/conf | 配置文件挂载:主机目录 ./conf → 容器目录 /opt/AngusTester/conf |
-v ./data:/opt/AngusTester/data | 应用数据挂载:主机目录 ./data → 容器目录 /opt/AngusTester/data |
-v ./logs:/opt/AngusTester/logs | 日志文件挂载:主机目录 ./logs → 容器目录 /opt/AngusTester/logs |
-v ./plugins:/opt/AngusTester/plugins | 插件目录挂载:主机目录 ./plugins → 容器目录 /opt/AngusTester/plugins |
-v ./tmp:/opt/AngusTester/tmp | 临时文件挂载:主机目录 ./tmp → 容器目录 /opt/AngusTester/tmp |
xcancloud/angustester-enterprise:1.0.0 | 指定要运行的镜像名称及标签(格式:仓库/镜像名:标签 ) |
四、Docker Compose方式安装
仅安装AngusGM应用
重要提示
- 此部署方案专为使用独立中间件(MySQL/Redis)的场景设计
- 应用启动前必须确保:
- MySQL/Redis 服务已部署完成
- 数据库服务处于正常运行状态
- AngusGM处于正常运行状态
- 网络连通性已验证(容器可访问中间件)
1)、准备安装目录与权限配置
配置过程和Docker方式安装 -> 准备安装目录与权限配置
相同。
2)、获取镜像与初始化配置
配置过程和Docker方式安装 -> 获取镜像与初始化配置
相同。
3)、创建并配置 tester.yml
文件
bash
cat << EOF > tester.yml
services:
angustester:
image: xcancloud/angustester-enterprise:1.0.0
container_name: angustester
restart: unless-stopped
volumes:
- ./conf:/opt/AngusTester/conf
- ./data:/opt/AngusTester/data
- ./logs:/opt/AngusTester/logs
- ./plugins:/opt/AngusTester/plugins
- ./tmp:/opt/AngusTester/tmp
ports:
- "8901:8901"
- "6806:6806"
environment:
TZ: ${TIMEZONE:-UTC}
EOF
4)、启动应用容器
bash
# 启动容器
docker compose -f tester.yml up -d
# 查看实时日志
docker compose -f tester.yml logs -f
安装完整应用和中间件
重要提示
- 完整安装包括:
Nginx、MySQL、Redis、AngusGM、AngusTester
- 此方案包含全套服务,使用
Nginx
配置虚拟主机,须提前配置好访问域名(如无域名可使用 IP) - 对于MySQL和Redis,为了安全,务必修改默认密码为高强度密码
- 如需 HTTPS 访问,准备有效证书,并修改SSL证书相关配置,配置文件路径为
./templates/nginx/gm.conf
和./templates/nginx/tester.conf
- 该安装方式下,AngusGM会自动初始化默认配置,如果需要修改默认参数,对应修改路径为
./templates/gm/.priv.env
和./templates/tester/.priv.env
1)、下载并解压
bash
# 下载安装包
curl -LO https://nexus.xcan.cloud/repository/release/compose/AngusTester-Enterprise-1.0.0.zip
# 解压安装包至目标目录
mkdir -p /opt/AngusTester
unzip -qo AngusTester-Enterprise-1.0.0.zip -d /opt/AngusTester
2)、配置应用参数
bash
# 进入到安装目录
cd /opt/AngusTester
# # 创建应用所需的子目录结构
mkdir -p {nginx/conf.d,nginx/logs,mysql/data,mysql/conf,redis/data}
mkdir -p gm/{data,logs,plugins,tmp}
mkdir -p tester/{data,logs,plugins,tmp}
# 编辑环境配置文件
vi .env
# 示例配置内容:
##############应用配置##############
# 应用服务器IP
APP_HOST=192.168.3.7
# 数据库名称
APP_DATABASE_NAME=angus
# 系统时区
TIMEZONE=Asia/Shanghai
# AngusGM 访问域名(或IP)
NGINX_GM_DOMAIN=my-gm.xcan.cloud
# AngusTester 访问域名(或IP)
NGINX_GM_DOMAIN=my-tester.xcan.cloud
##############安全凭证##############
# MySQL root密码(务必修改!)
MYSQL_ROOT_PASSWORD=Angus123
# Redis密码(务必修改!)
REDIS_PASSWORD=Angus123
3)、启动应用容器
bash
# 启动容器
docker compose -f tester-full.yml up -d
# 查看实时日志
docker compose -f tester-full.yml logs -f
五、部署验证
- 查看运行日志
bash
tail -f /opt/AngusTester/logs/tester.log
预期输出:Application started successfully [PID=21601] and Http(s) port 8901 is ready
,表示启动成功。
- 健康检查端点验证
bash
curl http://localhost:8901/actuator/health
预期输出:{"status":"UP"}
,表示启动成功。
- 登录验证
- 访问地址:
http://<部署IP>:8901
或http://<部署域名>
- 使用 AngusGM 中用户登录系统,在左侧顶部应用导航器中进入 angustester,表示安装部署成功。
六、应用管理
- Linux/MacOS
bash
# 启动应用
./startup-tester.sh
# 停止应用
./shutdown-tester.sh
# 查看应用日志
tail -f logs/tester.log
- Docker
bash
# 启动应用
docker start angustester
# 停止应用
docker stop angustester
# 查看应用日志
docker logs angustester
- Docker Compose
bash
# 启动应用
docker compose -f tester-full.yml up -d
# 停止应用
docker compose -f tester-full.yml stop
# 查看应用日志
docker compose -f tester-full.yml logs
七、故障排查
1. 常见问题
问题:端口冲突
- 错误示例:
Error: Port 8901 already in use
- 解决方案:修改
GM_PORT
参数或终止占用端口的进程。
- 错误示例:
问题:数据库连接失败
- 错误示例:
Connection refused to MySQL at 127.0.0.1:3306
- 解决方案:检查网络连通性、防火墙规则及数据库凭证。
- 错误示例:
2. 日志分析
- 日志路径
- 查看运行日志文件:
/opt/AngusTester/logs/tester.log
- 查看错误日志文件:
/opt/AngusTester/logs/tester-error.log
- 查看运行日志文件:
- 关键检索词:
ERROR
、Connection refused
3. 技术支持
- 联系邮箱:
technical_support@xcan.cloud
- 邮件要求:附错误日志截图及环境信息(如:部署方式、版本号等)。
八、配置参考
应用配置(.priv.env)
ini
#-----------------------------------------------------------------------------------
# 安装配置
#-----------------------------------------------------------------------------------
## 启用应用程序自动初始化安装选项,默认开启,成功安装后会自动关闭。
## 重要:启用重安装会导致数据库数据丢失
INSTALL_APPS=AngusTester
## 安装部署类型,默认为 SHARED,支持选项:
## - SHARED: 共享安装,所有应用共用同一数据库
## - STANDALONE: 独立安装,每个应用使用独立数据库
## 注意:共享安装时,其他应用将与全局管理应用共享数据库配置(即共用gm.env中的配置);
## 独立安装时,每个应用需单独配置独立数据库
INSTALL_TYPE=SHARED
## 数据库类型,默认 `MYSQL`,支持选项:MYSQL, POSTGRES
DATABASE_TYPE=MYSQL
## 应用部署运行环境,默认 `HOST`,支持选项:CONTAINER (Docker/Kubernetes), HOST(物理机/虚拟机)
RUNTIME=HOST
## 应用与数据库时区配置
TIMEZONE=Asia/Shanghai
## 最大上传文件大小,默认值 1000MB
MAX_UPLOAD_FILE_SIZE=1000MB
## 最大上传请求大小(限制批量上传多文件总大小),默认值 2000MB
MAX_UPLOAD_REQUEST_SIZE=2000MB
#-----------------------------------------------------------------------------------
# AngusGM 应用配置
#-----------------------------------------------------------------------------------
## 应用IP(v4)或主机名。未配置时自动获取运行环境IPv4地址
GM_HOST=
## 应用端口,默认值 `8802`
GM_PORT=8802
## 关联网站域名URL。若为空则设置为 http://GM_HOST:GM_PORT,示例值:https://gm.xcan.cloud
GM_WEBSITE=
## SaaS云服务API接口地址,用于从云端获取数据
GM_CLOUD_APIS_URL_PREFIX=https://bj-c1-prod-apis.xcan.cloud/gm
## 自托管服务API接口地址,用于读取当前托管服务数据。若为空则设置为 http://GM_HOST:GM_PORT
GM_APIS_URL_PREFIX=
#-----------------------------------------------------------------------------------
# AngusGM 数据库配置
#-----------------------------------------------------------------------------------
## 数据库IP或主机名,默认值 `127.0.0.1`
GM_DB_HOST=127.0.0.1
## 数据库端口,默认值 `3306`
GM_DB_PORT=3306
## 数据库名称,默认值 `Angus`
GM_DB_NAME=angus
## 数据库认证用户名,默认值 `root`
GM_DB_USER=root
## 数据库认证用户密码,默认值 `Angus123`
GM_DB_PASSWORD=Angus123
#-----------------------------------------------------------------------------------
# AngusTester 应用配置
#-----------------------------------------------------------------------------------
## 应用IP(v4)或主机名。未配置时自动获取运行环境IPv4地址
TESTER_HOST=
## 应用端口,默认值 `8901`
TESTER_PORT=8901
## 关联网站域名URL。若为空则设置为 http://TESTER_HOST:TESTER_PORT,示例值:https://tester.xcan.cloud
TESTER_WEBSITE=
## 应用Web静态资源目录,默认值 `classpath:/static/,file:./statics/`
TESTER_WEB_STATICS=classpath:/static/,file:./statics/
## 指定加载插件(配置时仅加载指定插件,未配置时加载所有插件)
TESTER_PLUGIN_LOADED=import-openapi-plugin
## 指定忽略插件(配置时忽略指定插件,未配置时加载所有插件,设为 * 时忽略所有插件)
TESTER_PLUGIN_IGNORED=
## 指定Mock服务连接AngusTester服务地址。若为空则设置为 http://TESTER_HOST:TESTER_PORT
TESTER_APIS_SERVER_URL=
#-----------------------------------------------------------------------------------
# AngusTester 数据库配置
#-----------------------------------------------------------------------------------
## 注意:共享安装(INSTALL_TYPE=SHARED)时,AngusTester将使用AngusGM应用的数据库配置
## 数据库IP或主机名,默认值 `127.0.0.1`
TESTER_DB_HOST=127.0.0.1
## 数据库端口,默认值 `3306`
TESTER_DB_PORT=3306
## 数据库名称,默认值 `Angus`
TESTER_DB_NAME=angus
## 数据库认证用户名,默认值 `root`
TESTER_DB_USER=root
## 数据库认证用户密码,默认值 `Angus123`
TESTER_DB_PASSWORD=Angus123
#-----------------------------------------------------------------------------------
# AngusTester 节点代理(AngusAgent)服务配置
#-----------------------------------------------------------------------------------
## Agent服务端口,默认值 `5036`
AGENT_REMOTING_SERVER_PORT=5035
## Agent向节点代理客户端发送消息超时时间,默认 `60s`
AGENT_REMOTING_SEND_TIMEOUT=60000
## Agent服务连接检查心跳间隔,默认 `30s`
AGENT_REMOTING_ALLOW_MAX_HEARTBEAT_INTERVAL=30000
#-----------------------------------------------------------------------------------
# AngusTester 节点代理(AngusAgent)安装脚本配置
#-----------------------------------------------------------------------------------
## Agent包与安装脚本下载URL前缀,用于界面自动化安装
AGENT_CLOUD_STORAGE_APIS_PREFIX=https://bj-c1-prod-files.xcan.cloud
## 要安装的Agent版本
AGENT_VERSION=1.0.0
## Agent安装包文件ID
AGENT_FILE_ID=297761877096661000
## Linux Agent自动安装脚本ID
AGENT_LINUX_INSTALL_SCRIPT_ID=297761877096660998
## Windows Agent自动安装脚本ID
AGENT_WINDOWS_INSTALL_SCRIPT_ID=245588291569582089
#-----------------------------------------------------------------------------------
# AngusTester 请求代理(AngusProxy)配置
#-----------------------------------------------------------------------------------
## 启动AngusTester时是否同时启动嵌入API请求代理服务
## 默认开启,独立部署时应禁用
PROXY_STARTUP_IN_TESTER=true
#-----------------------------------------------------------------------------------
# Redis 配置
#-----------------------------------------------------------------------------------
## Redis部署模式,默认为 SINGLE,支持选项:SINGLE (单实例), SENTINEL (哨兵模式), CLUSTER (集群模式)
REDIS_DEPLOYMENT=SINGLE
## 单实例模式Redis的IP或主机名,默认值 `127.0.0.1`
REDIS_HOST=localhost
## 单实例模式Redis端口,默认值 `6379`
REDIS_PORT=6379
## Redis认证密码,默认值 `Angus123`(启用Redis安全认证时必需)
REDIS_PASSWORD=Angus123
## 哨兵模式主节点名称,配置示例:mymaster
REDIS_SENTINEL_MASTER=
## 哨兵/集群模式Redis实例列表,配置示例:192.168.0.100:6379,192.168.0.101:6379,192.168.0.102:6379
REDIS_NODES=
#-----------------------------------------------------------------------------------
# Eureka 配置
#-----------------------------------------------------------------------------------
## 配置Eureka服务器和仪表盘用户名密码,默认仪表盘地址 http://GM_HOST:GM_PORT/eureka-dashboard
EUREKA_USER_NAME=eureka
EUREKA_USER_PASSWORD=eureka
#-----------------------------------------------------------------------------------
# OAuth2.0 客户端配置
#-----------------------------------------------------------------------------------
OAUTH2_INTROSPECT_CLIENT_ID=client-credentials-introspect-client
OAUTH2_INTROSPECT_CLIENT_SECRET=secret
#-----------------------------------------------------------------------------------
# 关闭不受信自签SSL证书验证
#-----------------------------------------------------------------------------------
DISABLE_SSL_VERIFICATION=false
Nginx虚拟主机配置
- nginx.conf
nginx
worker_processes auto;
error_log /var/log/nginx/error.log;
events {
worker_connections 1024;
multi_accept on;
use epoll;
}
http {
include mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
tcp_nopush on;
keepalive_timeout 65;
# Set security header
add_header X-Frame-Options "SAMEORIGIN";
add_header X-Content-Type-Options "nosniff";
add_header X-XSS-Protection "1; mode=block";
limit_conn_zone $binary_remote_addr zone=conn_limit:10m;
limit_conn conn_limit 100;
gzip on;
gzip_min_length 100k;
gzip_vary on;
gzip_proxied any;
gzip_comp_level 6;
gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
include /etc/nginx/conf.d/*.conf;
}
- gm.conf
nginx
server {
listen 80;
server_name my-gm.xcan.cloud;
# Health check endpoint
location = /health {
access_log off;
return 200 "OK";
}
# Caching static files
location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ {
proxy_pass http://192.168.3.7:8802;
expires 1d;
add_header Cache-Control "public, max-age=86400, immutable";
access_log off;
}
location /ws/ {
proxy_pass http://192.168.3.7:8802;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_read_timeout 86400s;
proxy_send_timeout 86400s;
}
location / {
proxy_pass http://192.168.3.7:8802;
proxy_set_header Priority "";
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_connect_timeout 10s;
proxy_read_timeout 300s;
proxy_send_timeout 300s;
}
}
- tester.conf
nginx
server {
listen 80;
server_name my-tester.xcan.cloud;
# Health check endpoint
location = /health {
access_log off;
return 200 "OK";
}
# Caching static files
location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ {
proxy_pass http://192.168.3.7:8901;
expires 1d;
add_header Cache-Control "public, max-age=86400, immutable";
access_log off;
}
location /angusProxy {
if ($request_method = OPTIONS){
access_log off;
return 200;
}
proxy_pass http://192.168.3.7:6806/angusProxy;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Referer $http_referer;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_connect_timeout 3d;
proxy_read_timeout 3d;
proxy_send_timeout 3d;
proxy_socket_keepalive on;
proxy_hide_header Vary;
add_header 'Access-Control-Allow-Origin' * always;
add_header 'Access-Control-Allow-Credentials' 'true' always;
add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS, PUT, PATCH, DELETE' always;
add_header 'Access-Control-Allow-Headers' * always;
}
location / {
proxy_pass http://192.168.3.7:8901;
proxy_set_header Priority "";
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_connect_timeout 10s;
proxy_read_timeout 300s;
proxy_send_timeout 300s;
}
}