菜单

部署

相关源文件

本节介绍了mall电商系统的部署选项、环境设置和配置。它将指导您在不同的环境,从本地开发到生产环境,完成系统的部署。有关系统架构的信息,请参阅系统架构

部署架构概述

mall电商系统设计为容器化部署,具有多个可以独立部署的服务。部署架构包括应用模块、数据库和支持的基础设施服务。

部署架构图

来源

  • README.md
  • document/docker/docker-compose-env.yml
  • document/docker/docker-compose-app.yml

开发环境设置

对于本地开发,您需要设置所需的工具和依赖项。

所需工具

工具版本目的
JDK1.8Java开发环境
IDEA/Eclipse最新版开发IDE
MySQL5.7主数据库
Redis7.0缓存
MongoDB5.0文档存储
RabbitMQ3.10.5消息队列
Elasticsearch7.17.3搜索引擎
Logstash7.17.3日志收集
Kibana7.17.3日志可视化

Windows安装步骤

  1. 安装JDK 1.8并设置环境变量
  2. 安装IDE(IDEA或Eclipse),并安装Lombok插件
  3. 设置MySQL 5.7:
    • 从document/sql/mall.sql导入SQL脚本
  4. 安装Redis:
    • 使用redis-server.exe redis.windows.conf启动Redis服务器
  5. 安装Elasticsearch:
    • 安装7.17.3版本
    • 为Elasticsearch安装中文分词插件
      elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.17.3/elasticsearch-analysis-ik-7.17.3.zip
      
  6. 安装MongoDB:
    • 创建data/db和data/log目录
    • 配置MongoDB服务
  7. 设置RabbitMQ:
    • 先安装Erlang,然后安装RabbitMQ
    • 启用管理插件:rabbitmq-plugins enable rabbitmq_management
    • 为应用创建用户和虚拟主机

来源

  • document/reference/deploy-windows.md
  • README.md

启动应用模块

启动每个模块以进行开发

  1. mall-admin:运行com.macro.mall.MallAdminApplication.main()
  2. mall-search:运行com.macro.mall.search.MallSearchApplication.main()
  3. 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
    • /mydata/redis/data:/data

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
    • /mydata/minio/data:/data

应用服务

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

  1. 安装Docker和Docker Compose:

  2. 克隆仓库:

  3. 部署基础设施服务:

  4. 构建并部署应用程序服务:

使用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

  1. 源代码被推送到Git仓库
  2. Jenkins通过webhook检测更改并触发构建
  3. Maven构建应用程序并运行测试
  4. Docker为每个模块构建容器镜像
  5. Docker Compose将更新的服务部署到目标环境

这种自动化确保了部署的一致性并减少了手动错误。

来源

  • README.md

环境配置

mall系统为不同的环境使用不同的配置属性。

应用程序属性

每个模块都可以通过application.properties文件或环境变量进行配置

数据库配置

Redis 配置

Elasticsearch 配置

环境特定配置

对于不同的环境,请使用Spring profiles

  • 开发:application-dev.properties
  • 测试:application-test.properties
  • 生产:application-prod.properties

要激活特定配置文件,请使用Spring active profile

或者在Docker Compose中

来源

  • README.md

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部署,有关环境配置信息,请参阅环境配置