源码地址(git clone即用):
gulimall商城前端源码:https://github.com/liuwen766/renren-fast-vue
gulimall商城后端源码:https://github.com/liuwen766/gulimall
nacos本地源码服务安装:https://github.com/liuwen766/nacos
项目架构
本项目来自尚硅谷,资源链接:https://www.bilibili.com/video/BV1np4y1C7Yf
谷粒商城简介
前言
gulimall 项目致力于打造一个完整的电商系统,采用现阶段流行技术来实现,采用前后端分离继续编写。
项目API接口文档
项目介绍
gulimall(谷粒商城) 项目是一套电商项目,包括前台商城系统以及后台管理系统,基于 SpringCloud + SpringCloudAlibaba + MyBatis-Plus实现,采用 Docker 容器化部署。前台商城系统包括:用户登录、注册、商品搜索、商品详情、购物车、下订单流程、秒杀活动等模块。后台管理系统包括:系统管理、商品系统、优惠营销、库存系统、订单系统、用户系统、内容管理等七大模块。
项目演示
前台部分功能演示效果
后端登录界面
主页面
后台部分功能
组织结构
gulimall
├── gulimall-common -- 工具类及通用代码
├── renren-generator -- 人人开源项目的代码生成器
├── gulimall-auth-server -- 认证中心(社交登录、OAuth2.0、单点登录)
├── gulimall-cart -- 购物车服务
├── gulimall-coupon -- 优惠卷服务
├── gulimall-gateway -- 统一配置网关
├── gulimall-order -- 订单服务
├── gulimall-product -- 商品服务
├── gulimall-search -- 检索服务
├── gulimall-seckill -- 秒杀服务
├── gulimall-third-party -- 第三方服务
├── gulimall-ware -- 仓储服务
└── gulimall-member -- 会员服务
技术选型
后端技术
技术 | 说明 | 官网 |
---|---|---|
SpringBoot | 容器+MVC框架 | https://spring.io/projects/spring-boot |
SpringCloud | 微服务架构 | https://spring.io/projects/spring-cloud |
SpringCloudAlibaba | 一系列组件 | https://spring.io/projects/spring-cloud-alibaba |
MyBatis-Plus | ORM框架 | https://mp.baomidou.com |
renren-generator | 人人开源项目的代码生成器 | https://gitee.com/renrenio/renren-generator |
Elasticsearch | 搜索引擎 | https://github.com/elastic/elasticsearch |
RabbitMQ | 消息队列 | https://www.rabbitmq.com |
Springsession | 分布式缓存 | https://projects.spring.io/spring-session |
Redisson | 分布式锁 | https://github.com/redisson/redisson |
Docker | 应用容器引擎 | https://www.docker.com |
OSS | 对象云存储 | https://github.com/aliyun/aliyun-oss-java-sdk |
前端技术
技术 | 说明 | 官网 |
---|---|---|
Vue | 前端框架 | https://vuejs.org |
Element | 前端UI框架 | https://element.eleme.io |
thymeleaf | 模板引擎 | https://www.thymeleaf.org |
node.js | 服务端的js | https://nodejs.org/en |
架构图
系统架构图
业务架构图
环境搭建
开发工具
工具 | 说明 | 官网 |
---|---|---|
IDEA | 开发Java程序 | https://www.jetbrains.com/idea/download |
RedisDesktop | redis客户端连接工具 | https://redisdesktop.com/download |
SwitchHosts | 本地host管理 | https://oldj.github.io/SwitchHosts |
X-shell | Linux远程连接工具 | http://www.netsarang.com/download/software.html |
Navicat | 数据库连接工具 | http://www.formysql.com/xiazai.html |
PowerDesigner | 数据库设计工具 | http://powerdesigner.de |
Postman | API接口调试工具 | https://www.postman.com |
Jmeter | 性能压测工具 | https://jmeter.apache.org |
Typora | Markdown编辑器 | https://typora.io |
开发环境
工具 | 版本号 | 下载 |
---|---|---|
JDK | 1.8 | https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html |
Mysql | 5.7 | https://www.mysql.com |
Redis | Redis | https://redis.io/download |
Elasticsearch | 7.6.2 | https://www.elastic.co/downloads |
Kibana | 7.6.2 | https://www.elastic.co/cn/kibana |
RabbitMQ | 3.8.5 | http://www.rabbitmq.com/download.html |
Nginx | 1.1.6 | http://nginx.org/en/download.html |
注意:以上的除了jdk都是采用docker方式进行安装,详细安装步骤可参考百度!!!
搭建步骤
Windows环境部署
- 修改本机的host文件,映射域名端口
192.168.77.130 gulimall.com
192.168.77.130 search.gulimall.com
192.168.77.130 item.gulimall.com
192.168.77.130 auth.gulimall.com
192.168.77.130 cart.gulimall.com
192.168.77.130 order.gulimall.com
192.168.77.130 member.gulimall.com
192.168.77.130 seckill.gulimall.com
以上端口换成自己Linux的ip地址
- 修改Linux中Nginx的配置文件
1、在nginx.conf中添加负载均衡的配置
upstream gulimall {
server 192.168.43.182:88;
}
2、在gulimall.conf中添加如下配置
server {
listen 80;
server_name gulimall.com *.gulimall.com hjl.mynatapp.cc;
#charset koi8-r;
#access_log /var/log/nginx/log/host.access.log main;
#配置静态资源的动态分离
location /static/ {
root /usr/share/nginx/html;
}
#支付异步回调的一个配置
location /payed/ {
proxy_set_header Host order.gulimall.com; #不让请求头丢失
proxy_pass http://gulimall;
}
location / {
#root /usr/share/nginx/html;
#index index.html index.htm;
proxy_set_header Host $host; #不让请求头丢失
proxy_pass http://gulimall;
}
- 克隆前端项目
renren-fast-vue
以npm run dev
方式去运行 - 克隆整个后端项目
gulimall
,并导入 IDEA 中完成编译
如果你喜欢,要是觉得对你有帮助的话,请点个赞是对我最大的支持!
项目技术栈
基础篇
1.分布式基础概念
- 微服务、注册中心、配置中心、远程调用、Feign、网关
2.基础开发
- spingboot2.0、springcloud、mybatis-plus、vue组件化、对象存储
3.环境
- Vagrant、Linux、Docker、Mysql、Redis、逆向工程&人人开源
4.开发规范
- 数据校验JSR303、全局异常处理、全局统一返回、全局跨域处理等;
- 枚举状态、业务状态码、VO/TO、逻辑删除;
- Lombok、@Data、@Slf4j。
高级篇
集群篇
项目启动顺序
step1:启动项目依赖的sql数据库服务器。【若未进行数据库的初始化,则进行sql文档的初始化】。
step2:启动nacos服务【我用的的是本地源码安装的nacos】,在nacos上按需配置后端服务的各种配置
step3:启动所有的后端服务。【所有的服务会自动注册在nacos中,并在nacos上发现所有注册在nacos上的服务,这就是[服务注册]与[服务发现]】
step4:启动前端服务。前端服务基于VUE框架。【前后端的通信统一会经过网关gateway服务,网关会重写路径,将请求路由到指定的后端服务】
step5:登录页面。登录账号admin/admin。
sql文档
项目原始sql在./tools/sql初始化/;补充的sql在./tools/sql初始化/sql2更改表;
naco源码 服务本地安装步骤
step1:
从github上,下载nacos最新的源码到本地:
git clone https://github.com/alibaba/nacos.git
step2:
本地编译(建议用阿里云的maven仓库):
mvn -Prelease-nacos -Dmaven.test.skip=true clean install -U
step3:
源码运行时,通常使用的是单机模式,因此需要在启动参数中进行设置,在jvm的启动参数中,添加
-Dnacos.standalone=true
step4:
编译完成的nacos源码导入到idea开发工具中;进入到nacos-console模块下,启动该模块下的com.alibaba.nacos.Nacos类
启动成功,请享用。
http://localhost:8848/nacos/index.html
登录名/密码 nacos/nacos
跨域
不同源的请求会引发跨域问题。
跨域问题可以简单理解为页面请求的url字符串对比。
——2021.2.27
解决跨域问题的办法:
方法一:使用nginx服务器,将前后端项目都部署在nginx服务器上,这样页面请求就会一致,不会引发跨域问题。
方法二:通过配置,允许可以跨域的请求。(全局配置或者注解配置)