mall4j-bbc:j代表java,java项目,这里面包含了小程序/uniapp/pc/后台vue连接需要的接口。
以下版本是最低要求的!!! 提问问题前请注意生产环境!!请安装好对应的依赖。
| 工具 | 版本 |
|---|---|
| jdk | 17 |
| mysql | 8.0 |
| redis | 5.0+ |
| ElasticSearch | 7.xx |
| xxl-job | 3.0.0 |
具体安装方式在window开发环境搭建
修改配置文件my.cnf
[mysqld]
# 默认使用“mysql_native_password”插件认证
# 如果使用的是mysql 8.0 需要设置 mysql_native_password,不然有些工具连不上
default_authentication_plugin=mysql_native_password
# 关闭 only_full_group_by
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
修改完毕之后,重启mysql服务。
启动idea,右上角选择open,找到mall4j-bbc的文件夹

在项目中会有一个 db 文件夹 如图所示:
里面会有很多的数据库文件,按照0、1、2、3的顺序将0schema.sql、1yami_bbc.sql、2area.sql、3xxl_job.sql 导入mysql中。
问:那其他的数据库文件是干嘛的?
答:是更新过了某个时间更新代码时,更新的sql补丁,总数据都在上面四个文件中,所以初始化的时候,只要将四个文件按顺序导入数据库即可。
对于无法找到文件的用户,推荐使用idea快捷键 ctrl + shift + n 进行文件搜索
分别修改yami-shop-multishop、yami-shop-platform、yami-shop-api 下的 \src\main\resources\application-prod.yml 更改为生产环境的数据库账号密码,端口号等
分别修改yami-shop-multishop、yami-shop-platform、yami-shop-api 修改yami-shop-admin\src\main\resources\logback-prod.xml 修改里面的PROJECT_PATH 将/opt/projects/yami-b2b2c 改为自己生产环境的项目路径 (路径中使用反斜杠 \ 可能会导致配置失效,请使用斜杠/,例:C://bbc-shop)
根据需要,修改yami-shop-multishop、yami-shop-platform、yami-shop-api 下的\src\main\resources\application-prod.yml线程数量
使用maven进行项目构建可以使用maven build相关命令,也可以直接在idea右侧 单击maven,点击clean,再点击build

mvn clean package -DskipTests 命令进行打包,最终会生成很多的jar,我们需要其中三个。yami-shop-multishop\target\yami-shop-multishop-0.0.1-SNAPSHOT.jaryami-shop-platform\target\yami-shop-platform-0.0.1-SNAPSHOT.jaryami-shop-api\target\yami-shop-api-0.0.1-SNAPSHOT.jar不使用docker部署,需要将xxl-job也打包上传到服务器,同时启动
如果步骤” 配置环境信息准备开始打包“ 中修改了
PROJECT_PATH那么对应的路径也要跟着修改
c盘下创建一个 bbc-shop 文件夹
将4个jar上传至 C://bbc-shop 目录中(自定义目录需要更改启动命令中的 C://bbc-shop 为自定义的路径)
启动jar
注意:windows服务器不加-Dfile.encoding=utf-8可能会导致中文乱码
# 启动api,1g内存,可以根据服务器内存调整大小,推荐最低1G
javaw -jar -Xmx1024m -Xss256k -Dspring.profiles.active=prod -Dfile.encoding=utf-8 D:\bbc-shop\java\yami-shop-api-0.0.1-SNAPSHOT.jar > " D:\bbc-shop\java\log\api-console.log" &
# 启动商家端,512M内存,可以根据服务器内存调整大小,推荐最低512M
javaw -jar -Xmx512m -Xss256k -Dspring.profiles.active=prod -Dfile.encoding=utf-8 D://bbc-shop/java/yami-shop-multishop-0.0.1-SNAPSHOT.jar > " D://bbc-shop/java/log/multishop-console.log" &
# 启动平台端服务,512M内存,可以根据服务器内存调整大小,推荐最低512M
javaw -jar -Xmx512m -Xss256k -Dspring.profiles.active=prod -Dfile.encoding=utf-8 D://bbc-shop/java/yami-shop-platform-0.0.1-SNAPSHOT.jar > " D://bbc-shop/java/log/platform-console.log" &
如果不了解怎么安装nginx的,可以参考 window上安装nginx
nginx配置可以参考 本文件所在的目录下有个yami-shop/nginx/conf.d 文件夹,有3个配置文件,内有详细的配置文件 ,可以参考:
参考文档配置机器人安装WuKongIm
redis: 商城数据、登录(token)缓存,该redis中的数据可以随时删除。我们称为普通redis。
aof-redis: 持久化redis,存储商品sku库存、订单锁定记录、退款、秒杀等数据,数据不可删除,用于提高订单性能。
这里建议用两个redis:
持久化的aof,需要参考这个 linux环境(生产环境搭建)/mall4j-shop/redis/redis.conf 里面的 appendfsync always,否则aof redis是无意义的。
只做缓存的普通redis是不需要开启这个的,而且最好不要开启,毕竟会影响性能。做库存需要持久化的需要开启这个。也就是说普通的redis只要用默认的配置就行。
如果真的用不了两个redis,一定要用同一个redis,那么这个redis要开启aof,并且分开redis的数据库,比如一个放在0,一个放在10(为什么不用1,因为怕不记得0和1了),并且千万不要删掉这里的数据。
持久化的库存如论如何都有可能认为失误,或者极小概率会丢失,可以通过定时任务找回来。因为数据库存了出入库记录,通过出入库记录可以找回来。不过如果你们代码修改多了,不确定会不会影响定时任务,所以做aof是非常有必要的。
为什么要用将库存放在redis当中,因为下单的时候,提交订单会涉及很多表操作,会变成一个大事务,而库存是行锁,严重的时候对同一个商品(不是下单,同时购买同一个商品)可能每秒只能十几的并发,所以放在redis是有必要的。
如果测试环境、开发环境、生产环境用的都是同一套支付系统,那么会面临一个问题:
测试环境中的支付单号1,会与生产环境中的支付单号1重复。所以需要在不同的环境增加一个需要,比如加多个序号测试环境的1会变成11,开发环境的1会变成21
需要在application.yml 修改这个配置,请配置10-99。请手动在不同的环境加上不同的id
application:
workerId: 21
关于跨域,目前已经在java后台实现了跨域的配置,修改CorsConfig 将里面*的域名改为自己需要的域名即可。
部署WuKongIm,用于客服im连接,具体安装参考安装WuKongIm
如果希望系统报错的时候能够及时查到通知,而不是自己慢慢查询日志。可以配置异常通知的邮箱。
可以参考:https://jingyan.baidu.com/article/fedf0737af2b4035ac8977ea.html 获取授权码
spring:
mail:
# 企微邮箱为:smtp.exmail.qq.com,qq邮箱为:smtp.qq.com,163邮箱为:smtp.163.com,其他的请自行查找相关资料
host: smtp.exmail.qq.com
# 进行发送通知的邮箱账户名
username:
# 进行发送通知的邮箱密码,这个不是密码,而是自己邮箱-账户-开启POP3/SMTP时的客户端授权码
password:
logging:
# 接受异常通知的邮箱,可以配置多个用逗号隔开
log-error-email:
# 当前环境,比如测试环境,生产环境
log-env: