部署
相关源文件
本节介绍了mall电商系统的部署选项、环境设置和配置。它将指导您在不同的环境,从本地开发到生产环境,完成系统的部署。有关系统架构的信息,请参阅系统架构。
部署架构概述
mall电商系统设计为容器化部署,具有多个可以独立部署的服务。部署架构包括应用模块、数据库和支持的基础设施服务。
部署架构图
来源
- README.md
- document/docker/docker-compose-env.yml
- document/docker/docker-compose-app.yml
开发环境设置
对于本地开发,您需要设置所需的工具和依赖项。
| 工具 | 版本 | 目的 |
|---|
| JDK | 1.8 | Java开发环境 |
| IDEA/Eclipse | 最新版 | 开发IDE |
| MySQL | 5.7 | 主数据库 |
| Redis | 7.0 | 缓存 |
| MongoDB | 5.0 | 文档存储 |
| RabbitMQ | 3.10.5 | 消息队列 |
| Elasticsearch | 7.17.3 | 搜索引擎 |
| Logstash | 7.17.3 | 日志收集 |
| Kibana | 7.17.3 | 日志可视化 |
Windows安装步骤
- 安装JDK 1.8并设置环境变量
- 安装IDE(IDEA或Eclipse),并安装Lombok插件
- 设置MySQL 5.7:
- 从document/sql/mall.sql导入SQL脚本
- 安装Redis:
- 使用
redis-server.exe redis.windows.conf启动Redis服务器
- 安装Elasticsearch:
- 安装MongoDB:
- 创建data/db和data/log目录
- 配置MongoDB服务
- 设置RabbitMQ:
- 先安装Erlang,然后安装RabbitMQ
- 启用管理插件:
rabbitmq-plugins enable rabbitmq_management
- 为应用创建用户和虚拟主机
来源
- document/reference/deploy-windows.md
- README.md
启动应用模块
启动每个模块以进行开发
- mall-admin:运行
com.macro.mall.MallAdminApplication.main()
- mall-search:运行
com.macro.mall.search.MallSearchApplication.main()
- mall-portal:运行
com.macro.mall.portal.MallPortalApplication.main()
来源
- document/reference/deploy-windows.md
- README.md
Docker 部署
Docker是开发和生产环境的推荐方法,可以在不同环境中提供一致的部署。
基础设施服务部署
基础设施服务在docker-compose-env.yml中定义,并包含mall系统所有必需的依赖项。
部署基础设施服务
这将创建所有基础设施服务的Docker容器,并具有适当的卷映射以实现持久数据存储。
来源
- document/docker/docker-compose-env.yml
- README.md
应用程序部署
应用程序服务在docker-compose-app.yml中定义,并包含mall-admin、mall-portal和mall-search模块。
部署应用程序服务
docker-compose文件中的external_links允许应用程序容器使用服务名作为主机名连接到基础设施服务。
来源
- document/docker/docker-compose-app.yml
- README.md
Docker容器配置详情
基础设施服务
docker-compose-env.yml的关键配置
MySQL:
- 镜像:mysql:5.7
- 字符集:utf8mb4
- root密码:root
- 端口:3306:3306
- 卷
- /mydata/mysql/data:/var/lib/mysql
- /mydata/mysql/conf:/etc/mysql
- /mydata/mysql/log:/var/log/mysql
Redis:
- 镜像:redis:7
- 持久化:启用appendonly
- 端口:6379:6379
- 卷
Elasticsearch:
- 镜像:elasticsearch:7.17.3
- 集群名称:elasticsearch
- 模式:单节点
- JVM选项:-Xms512m -Xmx1024m
- 端口:9200:9200, 9300:9300
- 卷
- /mydata/elasticsearch/plugins:/usr/share/elasticsearch/plugins
- /mydata/elasticsearch/data:/usr/share/elasticsearch/data
MongoDB:
- 镜像:mongo:4
- 端口:27017:27017
- 卷
- /mydata/mongo/db:/data/db
MinIO:
- 镜像:minio/minio
- 命令:server /data --console-address ":9001"
- 凭据:minioadmin/minioadmin
- 端口:9090:9000, 9001:9001
- 卷
应用服务
docker-compose-app.yml的关键配置
mall-admin:
- 镜像:mall/mall-admin:1.0-SNAPSHOT
- 端口:8080:8080
- 卷
- /mydata/app/mall-admin/logs:/var/logs
- /etc/localtime:/etc/localtime
- 时区:Asia/Shanghai
- 外部链接:mysql:db
mall-search:
- 镜像:mall/mall-search:1.0-SNAPSHOT
- 端口:8081:8081
- 卷
- /mydata/app/mall-search/logs:/var/logs
- /etc/localtime:/etc/localtime
- 时区:Asia/Shanghai
- 外部链接:elasticsearch:es, mysql:db
mall-portal:
- 镜像:mall/mall-portal:1.0-SNAPSHOT
- 端口:8085:8085
- 卷
- /mydata/app/mall-portal/logs:/var/logs
- /etc/localtime:/etc/localtime
- 时区:Asia/Shanghai
- 外部链接:redis:redis, mongo:mongo, mysql:db, rabbitmq:rabbit
来源
- document/docker/docker-compose-env.yml
- document/docker/docker-compose-app.yml
Linux 部署
对于Linux部署,您可以使用Docker或传统方法。
Linux上的Docker
-
安装Docker和Docker Compose:
-
克隆仓库:
-
部署基础设施服务:
-
构建并部署应用程序服务:
使用Maven构建Docker镜像
构建应用程序模块的Docker镜像
对于远程Docker守护进程
- 通过修改/usr/lib/systemd/system/docker.service启用Docker远程API
- 更改为:ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock
来源
- README.md
- document/reference/docker.md
- document/reference/linux.md
CI/CD集成
mall系统可以集成到CI/CD管道中,以实现自动化测试和部署。
Jenkins Pipeline
- 源代码被推送到Git仓库
- Jenkins通过webhook检测更改并触发构建
- Maven构建应用程序并运行测试
- Docker为每个模块构建容器镜像
- Docker Compose将更新的服务部署到目标环境
这种自动化确保了部署的一致性并减少了手动错误。
来源
环境配置
mall系统为不同的环境使用不同的配置属性。
应用程序属性
每个模块都可以通过application.properties文件或环境变量进行配置
数据库配置
Redis 配置
Elasticsearch 配置
环境特定配置
对于不同的环境,请使用Spring profiles
- 开发:application-dev.properties
- 测试:application-test.properties
- 生产:application-prod.properties
要激活特定配置文件,请使用Spring active profile
或者在Docker Compose中
来源
Nginx配置
Nginx作为应用程序服务的反向代理,并处理静态内容。
仓库中提供了一个基本的Nginx配置。对于生产环境,您应该在此基础上进行扩展,包括
- SSL证书配置
- 后端服务的反向代理设置
- 缓存规则
- 安全标头
来源
- document/docker/nginx.conf
监控和维护
mall系统包含用于监控和维护已部署服务的工具。
日志架构
ELK(Elasticsearch, Logstash, Kibana)堆栈管理系统日志
容器管理
用于管理已部署容器的常用Docker命令
来源
- document/docker/docker-compose-env.yml
- document/reference/docker.md
结论
mall电商系统提供灵活的部署选项,以适应不同的环境和需求。无论是在Windows上使用开发环境设置,在Linux上使用Docker容器,还是使用CI/CD管道进行自动化部署,您都可以遵循本文档中的指南成功部署该系统。
有关Docker部署的更多详细信息,请参阅Docker部署,有关环境配置信息,请参阅环境配置。