1.环境搭建
1.1.安装 Linux 虚拟机
- 虚拟机:VMware、VirtualBox
- Linux:CentOS 7
注意:需要开启CPU虚拟化
1.2.安装 Docker
虚拟化容器技术,Docker基于镜像,可以秒级启动各种容器。每一种容器都是一个完成的运行环境,容
器之间互相隔离。
Docker架构:[https://docs.docker.com/get-started/overview/#docker-architecture]
Docker安装文档:https://docs.docker.com/engine/install/centos/
1.2.1.卸载系统之前的 Docker
$ sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
1.2.2.安装
$ sudo yum install -y yum-utils
$ sudo yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
$ sudo yum install docker-ce docker-ce-cli containerd.io
1.2.3.启动
$ sudo systemctl start docker
# 查看docker版本
docker -v
# 查看docker下载了哪些镜像
$ sudo docker images
# 设置docker开机自启动
$ sudo systemctl enable docker
1.2.4.配置Docker阿里云镜像加速
登录阿里云,在控制台容器镜像服务中找到镜像加速器
可以通过修改daemon配置文件/etc/docker/daemon.json来使用加速器
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["加速器地址"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
1.3.Docker安装MySQL
docker hub:https://hub.docker.com/ docker镜像仓库
查看 docker 下载的镜像
$ sudo docker images
1.3.1 下载镜像文件
$ sudo docker pull mysql:5.7
1.3.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,将容器的3306端口映射到主机的3306端口
- -v /mydata/mysql/log:/var/log/mysql,将日志文件挂载到主机
- -v /mydata/mysql/conf:/etc/mysql ,将配置文件夹挂载到主机
- -v /mydata/mysql/data:/var/lib/mysql,将配置文件夹挂载到主机
- -e MYSQL_ROOT_PASSWORD=root,初始化root用户的密码
查看 docker 启动的容器
$ sudo docker ps
进入到指定的 docker 容器内部
$ sudo docker exec -it mysql /bin/bash
#查看mysql目录
whereis mysql
#退出容器
exit;
MySQL配置
vim /mydata/mysql/conf/my.cnf
[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
collation-server=utf8_unicode_ci
skip-character-set-client-handshake
skip-name-resolve
重启docker 容器
$ sudo docker restart mysql
随容器自动启动
$ sudo docker update mysql --restart=always
1.4.Docker安装Redis
1.4.1 下载镜像文件
docker pull redis
1.4.2 创建实例并启动
#提前创建好配置文件
mkdir -p /mydata/redis/conf
touch /mydata/redis/conf/redis.conf
docker run -p 6379:6379 --name redis \
-v /mydata/redis/data:/data \
-v /mydata/redis/conf/redis.conf:/etc/redis/redis.conf \
-d redis redis-server /etc/redis/redis.conf
在redis容器内部执行 redis-cli
#进入到容器内部 redis 客户端
docker exec -it redis redis-cli
修改 Redis 配置
vim /mydata/redis/conf/redis.conf
#启动 redis 的 AOF 持久化模式
appendonly yes
Redis 配置文件参考
Redis configuration:https://redis.io/topics/config
随容器自动启动
$ sudo docker update redis --restart=always
2.项目开发环境
2.1.Maven
<mirrors>
<!--配置阿里云仓库 -->
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
<mirror>
</mirrors>
<profiles>
<!--配置JDK为1.8 -->
<profile>
<id>jdk-1.8</id>
<activation>
<activeByDefault>true</activeByDefault>
<jdk>1.8</jdk>
</activation>
<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
</properties>
</profile>
</profiles>
2.2.开发工具
2.2.1.IDEA
IDEA Plugins:
- Gitee
- Lombok
2.2.2.VSCode
VSCode Plugins:
2.3.Git仓库
2.3.1.安装配置Git
1)下载git:http://git-scm.com
2)配置git,进入 git bash
#配置用户名
git config --global user.name “username”
#配置邮箱
git config --global user.email “username@email.com”
3)配置ssh免密登录
进入 git bash
ssh-keygen -t rsa -C “xxx@xxx.com” (注册的邮箱地址) 三次回车即可
在当前用户目录下会产生一个 .ssh 文件夹,里面包括两个文件
- id_rsa
- id_rsa.pub
登录进入gitee,在设置里找到 SSH 公钥, 将 .pub 文件的内容粘贴进去
使用 ssh -T git@gitee.com 测试是否成功即可,输入 yes 确定
2.3.2.创建gitee仓库
2.3.3.克隆项目
从Git仓库克隆项目到本地
2.4、创建项目微服务
- 商品服务:gmall-product
- 仓储服务:gmall-ware
- 订单服务:gmall-order
- 优惠券服务:gmall-coupon
- 会员服务:gmall-member
2.4.1.共同
1)组织名(Group): com.atguigu.gmall
2)包名(Package): com.atguigu.gmall.xxx (product/order/ware/coupon/member)
3)模块名(Artifact): gmall-xxx (product/order/ware/coupon/member)
2.4.2.创建微服务
1)New Module
2)引入 Spring Web、Open Feign 两个依赖
3)完成商品服务创建
4)按照上面的步骤,依次创建完其它的四个服务
2.4.3.聚合模块
gmall工程中新建pom.xml文件,聚合所有的微服务
<?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
https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.atguigu.gmall</groupId>
<artifactId>gmall</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>gmall</name>
<description>聚合服务</description>
<packaging>pom</packaging>
<modules>
<module>gmall-ware</module>
<module>gmall-product</module>
<module>gmall-order</module>
<module>gmall-member</module>
<module>gmall-coupon</module>
</modules>
</project>
2.4.4.修改gitignore模板
push文件到gitee,需要忽略一些文件,修改 .gitignore 文件,加入以下内容到文件中
.idea
**/.gitignore
**/mvnw
**/mvnw.cmd
**/.mvn
**/target/
2.4.5.提交到Gitee仓库
1)在 IDEA 控制台 Version Control 中,使用 commit and push 提交并推送到 gitee 仓库
提交前在idea中登录 Gitee 账号
2)最终项目初始化结构如下:
3)gitee 效果如下:
3.数据库初始化
3.1.数据库设计原则
所有表之间不建立外键关系,在电商系统里,数据量大,建立外键关联是一个非常耗数据库性能的操
作!
3.2.创建数据库
创建每个微服务的数据库,执行对应的SQL脚本。
- gmall_oms:订单库
- gmall_pms:商品库
- gmall_sms:销售库
- gmall_ums:用户库
- gmall_wms:仓储库
最终效果如下图所示: