官网:https://shenyu.apache.org/zh/
github: https://github.com/apache/shenyu
shenyu-bootstrap在2.7.0后的版本就不支持将bootstrap注册到nacos上了,需要在pom文件中添加如下依赖后在重新打包
<!--shenyu instance start-->
<dependency>
<groupId>org.apache.shenyu</groupId>
<artifactId>shenyu-spring-boot-starter-registry</artifactId>
<version>${project.version}</version>
</dependency>
<!--shenyu registry end-->
需要注释掉,不然http也会进行注册,然后报错
<dependency>
<groupId>org.apache.shenyu</groupId>
<artifactId>shenyu-spring-boot-starter-client-beat</artifactId>
<version>${project.version}</version>
</dependency>
重新打包shenyu的时候,需要在centos上安装git和make
步骤 | 命令 |
---|---|
安装 Git | sudo yum install git -y 或 sudo dnf install git -y |
验证版本 | git --version |
设置用户名邮箱 | git config --global user.name "xxx" |
git clone https://github.com/apache/shenyu.git
cd shenyu
查看make的版本
make --version
CentOS 默认可能不安装 make 和编译工具链,你需要手动安装。
安装开发工具包(推荐方式)
运行以下命令安装完整的编译环境(包含 make, gcc, g++, automake, autoconf 等):
sudo yum groupinstall "Development Tools" -y
如果你只需要 make,可以单独安装:
sudo yum install make -y
shenyu-admin源码打包后需要使用mysql的驱动放到ext-lib目录中
把mysql驱动放到shenyu-admin-update(自己创建)
创建Dockerfile
# 使用源码打包 shenyu-admin 镜像作为基础镜像
FROM apache/shenyu-admin:latest
# 将本地的 MySQL 驱动复制到镜像的 ext-lib 目录
COPY mysql-connector-java-8.0.18.jar /opt/shenyu-admin/ext-lib/
构建镜像:
docker build -t apache/shenyu-admin-mysql:2.7.0.3 .
# ShenYu 项目打包指南
## 项目概述
ShenYu是一个高性能的API网关,采用微服务架构设计。本项目包含两个主要的可执行模块:
- **shenyu-bootstrap**: 网关核心服务,负责请求路由和插件处理
- **shenyu-admin**: 管理后台服务,提供Web界面进行配置管理
## 项目结构分析
### 核心模块
- `shenyu-bootstrap`: 网关服务模块
- `shenyu-admin`: 管理后台模块
- `shenyu-dist`: 分发打包模块
- `shenyu-admin-dist`: admin打包配置
- `shenyu-bootstrap-dist`: bootstrap打包配置
### 技术栈
- **Java版本**: 17
- **Spring Boot**: 3.3.1
- **构建工具**: Maven
- **打包方式**: Spring Boot Maven Plugin + Assembly Plugin
## 打包方式
### 方式一:使用Makefile(推荐)
项目提供了便捷的Makefile命令,支持多种打包方式:
#### 1. 构建所有模块
```bash
# 构建admin和bootstrap
make build-all
# 或者分别构建
make build-admin # 只构建admin
make build-bootstrap # 只构建bootstrap
```
#### 2. 构建Docker镜像
```bash
# 构建所有Docker镜像
make build-all-image
# 或者分别构建
make build-admin-image # 构建admin镜像
make build-bootstrap-image # 构建bootstrap镜像
```
#### 3. 发布镜像
```bash
# 构建并发布多平台镜像
make publish-all-images
```
### 方式二:使用Maven命令
#### 1. 构建shenyu-admin
```bash
# 进入项目根目录
cd /path/to/shenyu
# 构建admin
./mvnw -am -pl shenyu-dist/shenyu-admin-dist \
-Dmaven.javadoc.skip=true \
-Drat.skip=true \
-Djacoco.skip=true \
-DskipTests \
-Prelease \
clean package
```
#### 2. 构建shenyu-bootstrap
```bash
# 构建bootstrap
./mvnw -am -pl shenyu-dist/shenyu-bootstrap-dist \
-Dmaven.javadoc.skip=true \
-Drat.skip=true \
-Djacoco.skip=true \
-DskipTests \
-Prelease \
clean package
```
#### 3. 同时构建两个模块
```bash
# 构建所有分发包
./mvnw -am -pl shenyu-dist \
-Dmaven.javadoc.skip=true \
-Drat.skip=true \
-Djacoco.skip=true \
-DskipTests \
-Prelease \
clean package
```
## 打包输出
### 文件结构
打包完成后,会在对应的`target`目录下生成以下文件:
#### shenyu-admin-dist
```
shenyu-dist/shenyu-admin-dist/target/
├── apache-shenyu-2.7.0.2-SNAPSHOT-admin-bin.tar.gz # 压缩包
├── apache-shenyu-2.7.0.2-SNAPSHOT-admin-bin.tar.gz.md5 # MD5校验文件
└── apache-shenyu-2.7.0.2-SNAPSHOT-admin-bin.tar.gz.sha1 # SHA1校验文件
```
#### shenyu-bootstrap-dist
```
shenyu-dist/shenyu-bootstrap-dist/target/
├── apache-shenyu-2.7.0.2-SNAPSHOT-bootstrap-bin.tar.gz # 压缩包
├── apache-shenyu-2.7.0.2-SNAPSHOT-bootstrap-bin.tar.gz.md5 # MD5校验文件
└── apache-shenyu-2.7.0.2-SNAPSHOT-bootstrap-bin.tar.gz.sha1 # SHA1校验文件
```
### 解压后的目录结构
```
apache-shenyu-2.7.0.2-SNAPSHOT-admin-bin/
├── bin/ # 启动脚本
│ ├── shenyu-admin.sh # Linux启动脚本
│ └── shenyu-admin.bat # Windows启动脚本
├── conf/ # 配置文件
│ ├── application.yml # 应用配置
│ └── logback.xml # 日志配置
├── lib/ # 依赖jar包
│ ├── shenyu-admin-2.7.0.2-SNAPSHOT.jar
│ └── [其他依赖jar包...]
├── ext-lib/ # 扩展库目录
└── db/ # 数据库脚本
├── init/ # 初始化脚本
└── upgrade/ # 升级脚本
```
## 环境要求
### 系统要求
- **操作系统**: Linux/Windows/macOS
- **Java版本**: JDK 17+
- **内存**: 建议2GB以上
- **磁盘空间**: 建议1GB以上
### 构建环境要求
- **Maven**: 3.6+
- **Git**: 用于获取提交ID
- **Docker**: 如需构建镜像(可选)
## 配置说明
### Maven配置
项目使用以下Maven插件进行打包:
- `spring-boot-maven-plugin`: 创建可执行jar包
- `maven-assembly-plugin`: 创建分发包
- `checksum-maven-plugin`: 生成校验文件
### 打包配置
- **打包格式**: tar.gz
- **包含内容**:
- 可执行jar包
- 配置文件
- 启动脚本
- 数据库脚本
- 依赖库
## 启动方式
### 解压并启动
```bash
# 解压admin包
tar -xzf apache-shenyu-2.7.0.2-SNAPSHOT-admin-bin.tar.gz
cd apache-shenyu-2.7.0.2-SNAPSHOT-admin-bin
# 启动admin(Linux)
./bin/shenyu-admin.sh
# 启动admin(Windows)
bin\shenyu-admin.bat
```
### 直接运行jar包
```bash
# 运行admin
java -jar lib/shenyu-admin-2.7.0.2-SNAPSHOT.jar
# 运行bootstrap
java -jar lib/shenyu-bootstrap-2.7.0.2-SNAPSHOT.jar
```
## 常见问题
### 1. 构建失败
**问题**: Maven构建失败
**解决方案**:
- 检查Java版本是否为17+
- 检查Maven版本是否为3.6+
- 清理本地仓库:`mvn clean`
### 2. 内存不足
**问题**: 构建过程中内存不足
**解决方案**:
```bash
export MAVEN_OPTS="-Xmx2g -XX:MaxPermSize=512m"
```
### 3. 依赖下载失败
**问题**: 依赖包下载失败
**解决方案**:
- 检查网络连接
- 配置Maven镜像源
- 清理本地仓库重新下载
### 4. 权限问题
**问题**: 脚本无执行权限
**解决方案**:
```bash
chmod +x bin/*.sh
```
## 高级配置
### 自定义打包参数
```bash
# 指定版本号
make build-admin VERSION=2.7.1
# 指定Docker仓库
make build-admin-image REGISTRY=your-registry.com
```
### 跳过测试
```bash
# 使用Maven跳过测试
./mvnw clean package -DskipTests
```
### 生成源码包
```bash
# 生成源码jar包
./mvnw source:jar
```
## 总结
ShenYu项目提供了完整的打包解决方案,支持:
1. **快速打包**: 使用Makefile一键构建
2. **灵活配置**: 支持多种构建参数
3. **完整分发**: 包含所有运行时依赖
4. **Docker支持**: 支持容器化部署
5. **多平台**: 支持Linux/Windows/macOS
建议使用Makefile方式进行打包,简单高效。如需自定义配置,可使用Maven命令进行精细控制。