Mall4j商城实战 - 部署指南 (一篇文章带你玩转各种技术)

本文提供了Mall4j商城的部署指南,涵盖从克隆项目到配置中间件的全过程。重点讲解了部署数据库、消息队列、分布式事务和缓存等环节,并介绍了项目的目录结构、技术选型和微服务架构。同时,文章还详细阐述了商城的三端展示(平台管理、商家管理、H5端)及其功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


📘 Mall4j商城实战:部署指南


🦑 gitee地址



🚄 部署环节



🧩 中间件部署须知


在文件编辑器上,使用全局替换的方式,将整个项目文件夹下的所有 192.168.0.105 替换为 自己的服务器的 IP

  1. mysql 配置文件必须授权为 755 ,或是 644,不然会报错。
  2. canal 的配置必须在 canal-admin 界面中重新配置方能生效(包括 serverinstance)。
  3. rocketmq 的组件部署必须在同一网络下。
  4. es 查询必须在 es 界面上配置 productorder 的索引,不然服务查询会报错。
  5. nacos 启动之后,必须在线更改配置,方能保证服务的正常运行。
  6. redis 需要设置密码以提高安全性。
  7. minio 必须设置 mall4jcloud 的存储桶,并设置为可读写,为了端口不冲突,端口更改:9000——> 9001

名称链接账号密码
Miniohttp://127.0.0.1:9001/minio/loginadmin/admin123456
Elasticsearchhttp://127.0.0.1:5601/app/home#/
RocketMQhttp://127.0.0.1:8180/#/
Nacoshttp://127.0.0.1:8848/nacos/index.html#/loginnacos/nacos
Seatahttp://127.0.0.1:7091/#/loginseata/seata
Canalhttp://127.0.0.1:8089/#/login?redirect=%2Fdashboardadmin/123456
Swaggerhttp://localhost:8000/doc.html#/home

📢 前言

  • mall4jcloud 是一个很简单的分布式电商系统,虽然有些bug,但是总体的电商结构还算清晰,适合用于学习使用,商业版的肯定要找他们公司了。
  • 部署的最低要求应该是16G的电脑,肯定巨卡的,笔者是24G的电脑部署的

📚 目录结构


Mall4cloud商城目录结构


🏗️ 目录结构规范


Mall4cloud商城目录结构规范

mall4cloud
├─mall4cloud-api -- 内网接口
│  ├─mall4cloud-api-auth  -- 授权对内接口
│  ├─mall4cloud-api-biz  -- biz对内接口
│  ├─mall4cloud-api-leaf  -- 美团分布式id生成接口
│  ├─mall4cloud-api-multishop  -- 店铺对内接口
│  ├─mall4cloud-api-order  -- 订单对内接口
│  ├─mall4cloud-api-platform  -- 平台对内接口
│  ├─mall4cloud-api-product  -- 商品对内接口
│  ├─mall4cloud-api-rbac  -- 用户角色权限对内接口
│  ├─mall4cloud-api-search  -- 搜索对内接口
│  └─mall4cloud-api-user  -- 用户对内接口
├─mall4cloud-auth  -- 授权校验模块
├─mall4cloud-biz  -- mall4cloud 业务代码。如图片上传/短信等
├─mall4cloud-common -- 一些公共的方法
│  ├─mall4cloud-common-cache  -- 缓存相关公共代码
│  ├─mall4cloud-common-core  -- 公共模块核心(公共中的公共代码)
│  ├─mall4cloud-common-database  -- 数据库连接相关公共代码
│  ├─mall4cloud-common-order  -- 订单相关公共代码
│  ├─mall4cloud-common-product  -- 商品相关公共代码
│  ├─mall4cloud-common-rocketmq  -- rocketmq相关公共代码
│  └─mall4cloud-common-security  -- 安全相关公共代码
├─mall4cloud-gateway  -- 网关
├─mall4cloud-leaf  -- 基于美团leaf的生成id服务
├─mall4cloud-multishop  -- 商家端
├─mall4cloud-order  -- 订单服务
├─mall4cloud-payment  -- 支付服务
├─mall4cloud-platform  -- 平台端
├─mall4cloud-product  -- 商品服务
├─mall4cloud-rbac  -- 用户角色权限模块
├─mall4cloud-search  -- 搜索模块
└─mall4cloud-user  -- 用户服务

🚀 项目架构组件


  1. 🌌 VO(View Object

    • 描述:显示层对象,通常是 Web 向模板渲染引擎层传输的对象。
  2. 🌌 DTO(Data Transfer Object

    • 描述:数据传输对象,前端像后台进行传输的对象,类似于param。
  3. 🌌 BO(Business Object

    • 描述:业务对象,内部业务对象,只在内部传递,不对外进行传递。
  4. 🌌 Model

    • 描述:模型层,此对象与数据库表结构一一对应,通过 Mapper 层向上传输数据源对象。
  5. 🌌 Controller

    • 描述:主要是对外部访问控制进行转发,各类基本参数校验,或者不复用的业务简单处理等。为了简单起见,一些与事务无关的代码也在这里编写。
  6. 🌌 FeignClient

    • 描述:由于微服务之间存在互相调用,这里是内部请求的接口。
  7. 🌌 Service 层

    • 描述:相对具体的业务逻辑服务层。
  8. 🌌 Manager 层

    • 特征
      • 🔗 对第三方平台封装的层,预处理返回结果及转化异常信息,适配上层接口。
      • 🔗 对 Service 层通用能力的下沉,如缓存方案、中间件通用处理。
      • 🔗 与 DAO 层交互,对多个 DAO 的组合复用。
  9. 🌌 Mapper 持久层

    • 描述:数据访问层,与底层 MySQL 进行数据交互。
  10. 🌌 Task 层

    • 描述:由于每个服务之间会存在定时任务,比如定时确认收货,定时将活动失效等情况,这里面的Task实际上连接的是 xxl-job 进行任务调度。
  11. 🌌 Listener

    • 描述:监听 RocketMQ 进行处理,有时候会监听 easyexcel 相关数据。

🧐 关于 FeignClient

由于微服务之间存在互相调用,Feign 是http协议,理论上是为了解耦,而实际上提供方接口进行修改,调用方却没有进行修改的时候,会造成异常,所以我们抽取出来。还有就是对内暴露的接口,是很多地方都公用的,所以我们还将接口抽取了出了一个模块,方便引用。可以看到 mall4cloud-api 这个模块下是所有对内 feign 接口的信息。


💻 技术选型


Mall4cloud商城技术选型


🏛️ 系统架构图


Mall4cloud商城系统架构图


🌐 商城部署后 API 地址


在这里插入图片描述
在这里插入图片描述

服务地址
mall4cloud-gatway 网关服务http://127.0.0.1:8000
mall4cloud-auth 授权校验服务http://127.0.0.1:9101
mall4cloud-biz 业务代码服务(如图片上传/短信等)http://127.0.0.1:9000
mall4cloud-leaf 基于美团leaf的生成id服务http://127.0.0.1:9100
mall4cloud-multishop 商家服务http://127.0.0.1:9103
mall4cloud-order 订单服务http://127.0.0.1:9106
mall4cloud-payment 支付服务http://127.0.0.1:9113
mall4cloud-product 商品服务http://127.0.0.1:9114
mall4cloud-rbac 用户角色服务http://127.0.0.1:9102
mall4cloud-search 搜索服务http://127.0.0.1:9108
mall4cloud-user 用户服务http://127.0.0.1:9105

🖥️ 三端展示


🌌 电商平台的三端概述

  1. 平台管理端

    • 用途:为平台的管理员或运营团队提供管理工具。
    • 功能
      • 用户管理
      • 订单处理
      • 商品审核
      • 财务报告
      • 数据分析
    • 权限:平台管理员拥有最高权限,能够访问和修改所有数据。
  2. 商家管理端

    • 用途:专为入驻平台的商家设计。
    • 功能
      • 上传商品信息
      • 管理库存
      • 处理订单
      • 查看销售数据和财务报告
    • 权限:商家的权限通常被限制在管理自己的店铺和商品范围内。
  3. H5端

    • 用途:面向最终用户,即购物者。
    • 功能
      • 浏览商品
      • 下订单
      • 付款
      • 跟踪订单状态
      • 与商家互动

🌌 平台管理端

🌌 商家管理端

🌌 H5端


🖼️ 界面功能使用介绍(顺序读)


🌌 平台端

  • 图片管理

    • 平台端图片管理
  • 分类管理

    • 平台端分类管理1
    • 平台端分类管理2
  • 属性管理

    • 平台端属性管理
  • 品牌管理

    • 平台端品牌管理

🌌 商家端

  • 轮播图管理

    • 商家端轮播图管理
  • 热搜管理

    • 商家端热搜管理
  • 图片管理

    • 商家端图片管理
  • 分类管理

    • 商家端分类管理
  • 商品发布

    • 商家端商品发布1
    • 商家端商品发布2

🌌 H5端

  • 首页

    • H5端首页
  • 账号注册

    • H5端账号注册
  • 地址设置

    • H5端地址设置
  • 商品分类预览

    • H5端商品分类预览1
    • H5端商品分类预览2
  • 加入购物车结算

    • H5端加入购物车结算
  • 支付

    • H5端支付

🌌 商家端 - 订单管理

  • 商家端订单管理

👤 常用的命令


# 清理并复制新的配置文件
rm -rf /root/mall4cloud/

# 创建后端日志存放文件夹
mkdir -p /root/mall4cloud/back-end/log/gateway-logs
mkdir -p /root/mall4cloud/back-end/log/auth-logs
mkdir -p /root/mall4cloud/back-end/log/biz-logs
mkdir -p /root/mall4cloud/back-end/log/leaf-logs
mkdir -p /root/mall4cloud/back-end/log/multishop-logs
mkdir -p /root/mall4cloud/back-end/log/order-logs
mkdir -p /root/mall4cloud/back-end/log/payment-logs
mkdir -p /root/mall4cloud/back-end/log/product-logs
mkdir -p /root/mall4cloud/back-end/log/rbac-logs
mkdir -p /root/mall4cloud/back-end/log/search-logs
mkdir -p /root/mall4cloud/back-end/log/user-logs
chmod -R 777 /root/mall4cloud/back-end/

# 创建前端文件夹
mkdir -p /root/mall4cloud/front-end/
chmod -R 777 /root/mall4cloud/front-end/

# 创建中间件文件夹
mkdir -p /root/mall4cloud/middleware/
cp -R /mnt/d/WORKSPACE/mall4cloud/middleware/  /root/mall4cloud/middleware/
chmod -R 777 /root/mall4cloud/middleware/
chmod -R 755 /root/mall4cloud/middleware/mysql/conf.d/

# 发现树
find /mnt/d/WORKSPACE/mall4cloud -type f \( -name "docker-compose.yml" -o -name "Dockerfile" -o -name "*.bat" \)


# 启动所有 Docker Compose 服务
docker-compose up -d --build
# 启动一个 Docker Compose 服务
docker-compose up -d mall4cloud-canal

# 停止并移除所有容器
docker-compose down
# 停止并移除特定容器
docker-compose stop mall4cloud-canal-admin
docker-compose rm mall4cloud-canal-admin

# 重新启动一个容器
docker-compose restart mall4cloud-mysql
docker-compose restart mall4cloud-canal
docker-compose restart mall4cloud-canal-admin

# 查看容器日志
docker-compose logs -f
docker-compose logs -f mall4cloud-mysql
docker-compose logs -f mall4cloud-canal
docker-compose logs -f mall4cloud-canal-admin

# 查看容器目录
docker exec -it mall4cloud-mysql bash
docker exec -it mall4cloud-canal bash
docker exec -it mall4cloud-canal-admin bash

# 查看docker 内存情况
docker stats

# 专注清理悬挂镜像
docker image prune
docker image prune -a
# 容器清理
docker container prune
# 清理卷和网络资源
docker volume prune
docker network prune
# 清理所有未使用的容器、网络和镜像,包括悬挂和中间层镜像,以综合优化 Docker 系统
docker system prune


# mysql 相关命令

# 进入mysql命令行
mysql -u root -p

# 创建新用户 canal,并设置其密码
CREATE USER canal IDENTIFIED BY 'canal';

# 授予用户 canal 对所有数据库和表的 SELECT、REPLICATION SLAVE 和 REPLICATION CLIENT 权限
GRANT SELECT, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'canal'@'%';

# 刷新权限,使之前的 GRANT 操作立即生效
FLUSH PRIVILEGES;

# 显示当前的二进制日志格式
SHOW VARIABLES LIKE 'binlog_format';

# 显示是否启用了二进制日志以及其名称的模式
SHOW VARIABLES LIKE 'log_bin';

# 显示主服务器的二进制日志文件名称和位置,用于配置复制
SHOW MASTER STATUS;

# 显示为用户 canal 设置的权限
SHOW GRANTS FOR 'canal'@'%%';

# 登录到 MySQL 并检查用户的身份验证插件:
SELECT user, host, plugin FROM mysql.user;

# 使用以下 SQL 命令来更新用户:
ALTER USER 'username'@'hostname' IDENTIFIED WITH 'mysql_native_password' BY 'password';

# 当创建新用户时,可以显式指定使用 mysql_native_password:
CREATE USER 'username'@'hostname' IDENTIFIED WITH 'mysql_native_password' BY 'password';

# 您可以通过运行以下命令检查 MySQL 启动时读取了哪些配置文件:
mysqld --verbose --help | grep -A 1 "Default options"

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yueerba126

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值