HM-SpringCloud微服务系列11.1.2【案例导入】


启动docker服务:systemctl start docker

2.1 导入商品管理案例

2.1.1 安装MySQL

后期做数据同步需要用到MySQL的主从功能,所以需要大家在虚拟机中,利用Docker来运行一个MySQL容器(新的,防止与其他环境干扰)。
CentOS虚拟机Docker安装MySQL
本地Navicat远程连接虚拟机中的MySQL数据库

  1. 为了方便后期配置MySQL,我们先准备两个目录,用于挂载容器的数据和配置文件目录:
    # 进入/tmp目录
    cd /tmp
    # 创建文件夹
    mkdir mysql
    # 进入mysql目录
    cd mysql
    
  2. 进入mysql目录后,执行下面的Docker命令
    docker run \
     -p 3306:3306 \
     --name mysql \
     -v $PWD/conf:/etc/mysql/conf.d \
     -v $PWD/logs:/logs \
     -v $PWD/data:/var/lib/mysql \
     -e MYSQL_ROOT_PASSWORD=123 \
     --privileged \
     -d \
     mysql:5.7.25
    
  3. 在/tmp/mysql/conf目录添加一个my.cnf文件,作为mysql的配置文件:
    # 创建文件
    touch /tmp/mysql/conf/my.cnf
    
    文件内容:
    [mysqld]
    skip-name-resolve
    character_set_server=utf8
    datadir=/var/lib/mysql
    server-id=1000
    
  4. 配置修改后,必须重启容器:
    docker restart mysql
    







2.1.2 导入SQL

  1. 导入课前资料提供的item.sql文件:
  2. 其中包含两张表:
    • tb_item:商品表,包含商品的基本信息
    • tb_item_stock:商品库存表,包含商品的库存信息
  3. 之所以将库存分离出来,是因为库存是更新比较频繁的信息,写操作较多。而其他信息修改的频率非常低。





2.1.3 导入Demo工程

  1. 导入课前资料提供的工程item-service

  2. 其中的业务包括(在com.heima.item.web包的ItemController中可以看到以下接口):
    • 分页查询商品
    • 新增商品
    • 修改商品
    • 修改库存
    • 删除商品(这里是采用了逻辑删除,将商品状态修改为3)
    • 根据id查询商品(这里只返回了商品信息,不包含库存)
    • 根据id查询库存
  3. 业务全部使用mybatis-plus来实现,如有需要请自行修改业务逻辑。
  4. 修改配置,启动测试


    访问http://localhost:8081/item/10001查询数据

2.1.4 导入商品查询页面

  1. 商品查询是购物页面,与商品管理的页面是分离的。部署方式如图:
  2. 我们需要准备一个反向代理的nginx服务器,如上图红框所示,将静态的商品页面放到nginx目录中。
  3. 页面需要的数据通过ajax向服务端(nginx业务集群)查询。

【第一步:运行nginx服务】
找到课前资料的nginx目录,将其拷贝到一个非中文目录下,start nginx.exe运行这个nginx服务
访问http://localhost/item.html?id=10001测试




【第二步:配置反向代理】
现在,页面是假数据展示的。我们需要向服务器发送ajax请求,查询商品数据。
打开控制台,可以看到页面有发起ajax查询数据:

而这个请求地址同样是80端口,所以被当前的nginx反向代理了。
查看nginx的conf目录下的nginx.conf文件:


#user  nobody;
worker_processes  1;

events {
    worker_connections  1024;
}

http {
    include       mime.types;
    default_type  application/octet-stream;

    sendfile        on;
    #tcp_nopush     on;
    keepalive_timeout  65;
	
	# nginx的业务集群
    upstream nginx-cluster{
        server 10.193.193.141:8081;
		# server 10.193.193.141:8082;
    }
    server {
        listen       80;
        server_name  localhost;

	location /api {
            proxy_pass http://nginx-cluster;
        }

        location / {
            root   html;
            index  index.html index.htm;
        }

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
}