前言

参考视频:https://www.bilibili.com/video/BV1np4y1C7Yf

相关资料源码:https://shimo.im/docs/8xgTjWvDh6P6tkdx/

环境搭建

一、安装 Linux 虚拟机

这里我使用了自己购买的阿里云服务器上安装的CentOS 7,所以跳过这一步

没有云服务器的使用 VMWare 或者 VirtualBox 都可

相关知识点可以参考下面的连接,就不再赘述

二、安装 docker

参考docker官网https://docs.docker.com/engine/install/centos/

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
# 1.卸载旧版本
yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine

# 2.需要的安装包
yum install -y yum-utils

# 3.设置镜像仓库
# 国外的仓库,下载缓慢,不推荐
yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo

# 阿里云的仓库,推荐!
yum-config-manager \
--add-repo \
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

# 3.5.更新yum软件包索引
yum makecache fast

# 4.安装 docker 相关的内容 docker-ce:社区版 docker-ee:企业版
yum install docker-ce docker-ce-cli containerd.io

# 5.启动docker
systemctl start docker

# 6.查看docker是否安装成功
docker version

# 7.设置开机自启
systemctl enable docker

三、安装mysql、redis

1. 安装配置 mysql

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
# 1.下载镜像文件
docker pull mysql:5.7

# 2.创建实例并启动
docker run -p 3306:3306 --name mysql \
-v /mydata/mysql/log:/var/log/mysql \
-v /mydata/mysql/data:/var/lib/mysql \
-v /mydata/mysql/conf:/etc/mysql \
-e MYSQL_ROOT_PASSWORD=root \
-d mysql:5.7

# 参数说明
# -p 3306:3306 --name mysql:将容器的3306端口映射到主机的3306端口
# -v /mydata/mysql/conf:/etc/mysql:将配置文件挂载到主机
# -v /mydata/mysql/log:/var/log/mysql:将日志文件挂载到主机
# -v /mydata/mysql/data:/var/lib/mysql:将数据文件挂载到主机
# -e MYSQL_ROOT_PASSWORD=root:初始化root用户密码

# 可以进入 mysql 容器内查看
docker exec -it mysql /bin/bash

# 3.mysql配置(主要是修改字符编码)
vim /mydata/mysql/conf/mysql.conf
# 添加以下配置
【client】
default-character-set=utf8
【mysql】
default-character-set=utf8
【mysqld】
init_connect='SET collation_connection = utf8_unicode_ci'
init_connect='SET NAMES utf8'
character-set-server=utf8
collection-server=utf8_unicode_ci
skip-character-set-client-handshake
skip-name-resolve

# 4.设置自启
docker update mysql --restart=always

# 5.重启mysql
docker restart mysql

2. 安装配置redis

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# 1.安装 redis
docker pull redis

# 2.配置 redis
mkdir -p /mydata/redis/conf
touch /mydata/redis/conf/redis.conf

docker run -p 6379:6379 --name redis --privileged=true \
-v /mydata/redis/data:/data \
-v/mydata/redis/conf/redis.conf:/etc/redis/redis.conf \
-d redis redis-server /etc/redis/redis.conf

# 连向 redis-cli
docker exec -it redis redis-cli

# 3.redis 启用 aof 的持久化方式

vim /mydata/redis/conf/redis.conf
# 添加以下配置
appendonly yes

# 4.设置自启
docker update redis --restart=always

四、开发环境统一

前端:VSCode

需要插件:

  • Auto Close Tag
  • Auto Rename Tag
  • Chinese (Simplified) Language Pack for Visual Studio
  • ESLint
  • HTML CSS Support
  • HTML Snippets
  • JavaScript (ES6) code snippets
  • open in browser
  • Vetur

后端:IDEA

需要插件:

  • LomBok

  • MyBatisX

  • gitee

Git

  1. 下载git

  2. 配置信息

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    # 配置作者信息
    $ git config --global user.name "wxshhh"
    $ git config --global user,email "993012459@qq.com"

    # 配置 ssh 免密登录
    $ ssh-keygen -t rsa -C "993012459@qq.com" #三次回车
    $ cat ~/.ssh/id_rsa.pub #获得密钥
    # 打开码云——》设置——》安全设置——》SSH公钥
    # 填入获取到的密钥
    # 进行测试:填 yes 确认
    $ ssh -T git@gitee.com

image-20200526140401407

  1. 码云中创建仓库

image-20200526140532746

  1. IDEA中创建项目:

image-20200526141034206

image-20200526141208082

五、创建项目微服务

  • 商品服务
  • 仓库服务
  • 订单服务
  • 优惠券服务
  • 用户服务

共同点:

  1. 导入 web、openfeign
  2. 每一个服务,com.wxshh.gulimall.xxx
  3. 模块名:gulimall-xxx
image-20200526141435743 image-20200526141435743 image-20200526141448810
  1. 项目结构

    image-20200527114221039

六、数据库初始化

image-20200527120620510

image-20200527120640829

快速开发

一、搭建后台管理系统

由于自己手写整个项目的前后端费时费力,所以我们使用写好的现成的开源项目来搭建后台管理系统

这里我们选择使用码云上的人人开源项目

image-20200527121259658

后端

  1. 将项目 renren-fastrenren-fast-vue 克隆到本地,删除项目中的 .git 文件夹,然后将 renren-fast 整个文件夹复制到 guilimall项目中
image-20200529134847559
  1. renren-fast 添加到项目 pom 标签中
image-20200529140210916
  1. 新建数据库,导入 sql

    image-20200529140558226

    image-20200529140343348
    1. 修改配置文件

      进入类目录下的 application-dev.yml ,修改数据源的相关配置

    2. 启动项目 renren-fast

      image-20200530083735885

前端

  1. 使用 VSCode 打开项目 renren-fast-vue

    image-20200530084148217
  2. 安装 Node.js,安装好的可以跳过这一步 https://nodejs.org/en/ (不要下载最新版本!!!)

  3. 控制台执行语句 cnpm install 下载相关依赖包

  4. 控制台执行 cnpm run dev 运行项目

    image-20200530084556220
  5. 后台搭建完成!!

一些需要注意的坑:

  1. 如果导入 renren-fast 后 springboot 各种爆红,无法运行,建议将项目中的 pom.xml 替换为 《项目资料源码》(见文章前言部分)中 renren-fast 模块的 pox.xml
  2. Node.js 不要下载最新版本!最好使用视频中的版本 10.16.3
  3. 使用 Node.js 时,建议使用语句 cnpm 而不是 npm (国内镜像下载起来快)

二、逆向工程搭建与使用

逆向工程搭建

使用人人开源提供的代码生成器来为项目每一个微服务提供代码生成!

image-20200530085652596

  1. 下载项目并复制粘贴到总项目中

  2. 总项目 pom.xml 中添加

    如果爆红,建议直接将项目中的 pom.xml 换成 《项目资料源码》(见文章前言部分) 中的 pom.xml,还是不行就直接将整个 renren-generator 项目替换

  3. 修改 renren-generarot 中的数据源配置

  4. 修改文件 generator.properties 中的包名、模块名、作者名等

    image-20200530093158746
  5. 运行 renren-generator 项目,进入 localhost 的 80 端口

    image-20200530093305005
  6. 进入 renren-fast

    image-20200530093513064

    点击生成代码以后,会跳出下载页面,下载压缩包,将压缩包中的 main 文件夹复制粘贴入相应的微服务即可!

    依次生成其他微服务的代码

逆行工程完善

  1. 创建 gulimall-common(普通的maven项目)

    image-20200530094006415
  2. 添加 pom 依赖

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
    <artifactId>gulimall</artifactId>
    <groupId>com.wxshhh.gulimall</groupId>
    <version>0.0.1-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>gulimall-common</artifactId>
    <description>每一个微服务公共的依赖、工具类等都放在这</description>

    <dependencies>
    <!-- mybatis-plus-->
    <dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-boot-starter</artifactId>
    <version>3.2.0</version>
    </dependency>

    <dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <version>1.18.8</version>
    </dependency>

    <!-- https://mvnrepository.com/artifact/org.apache.httpcomponents/httpcore -->
    <dependency>
    <groupId>org.apache.httpcomponents</groupId>
    <artifactId>httpcore</artifactId>
    <version>4.4.13</version>
    </dependency>


    <dependency>
    <groupId>commons-lang</groupId>
    <artifactId>commons-lang</artifactId>
    <version>2.6</version>
    </dependency>

    <!-- 导入mysql驱动 -->
    <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
    <dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.17</version>
    </dependency>

    </dependencies>

    </project>
  3. 添加相关工具类

    一般都是直接将 renren-fast 中的类拷贝过来 (具体请参考《资料文档》)

    image-20200530101059509

三、配置与测试微服务基本CRUD

配置

1
2
3
4
5
6
7
8
9
10
11
12
spring:
datasource:
#MySQL配置
driverClassName: com.mysql.jdbc.Driver
url: jdbc:mysql://47.103.199.131/gulimall_pms?useUnicode=true&characterEncoding=UTF-8&useSSL=false
username: root
password: root
mybatis-plus:
mapper-locations: classpath:/mapper/**/*.xml
global-config:
db-config:
id-type: auto

测试

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
@SpringBootTest
class GulimallProductApplicationTests {

@Autowired
BrandService brandService;

@Test
void contextLoads() {
BrandEntity brandEntity = new BrandEntity();
brandEntity.setName("华为");
brandService.save(brandEntity);
System.out.println("保存成功!!!");
}

}
image-20200530103918344