1 环境搭建

1.1 安装Linux虚拟机

  • 下载安装VirtualBox虚拟机https://www.virtualbox.org/(这里老师用的6.0.12版本,开发过程中尽量保持版本一致,避免给自己挖坑,傻瓜式安装),要开启cpu虚拟化(自己百度)

image.png

  • 下载&安装Vagrant(学习版本2.2.5)

    1. 1.[https://www.vagrantup.com/](https://www.vagrantup.com/),下载(傻瓜式安装)<br /> 2.检验是否安装,在cmd命令窗口中输入`vagrant `,出现下面场景即为安装成功<br />![image.png](https://cdn.nlark.com/yuque/0/2021/png/22333404/1633010338034-6c9928e1-5c46-48f7-b66a-818b107d098c.png#clientId=uc91e4e65-24bc-4&from=paste&height=328&id=ua4b71e8e&margin=%5Bobject%20Object%5D&name=image.png&originHeight=656&originWidth=1461&originalType=binary&ratio=1&size=99482&status=done&style=none&taskId=ub7732ed1-37d9-4eea-8365-b97c6265b24&width=730.5)
  • 打开windows cmd窗口,输入vagrant init centos/7,即可初始化一个centos7系统

  • 运行vagrant up即可启动虚拟机。系统root的用户密码是vagrant(第一次启动下载虚拟机较慢,查看博客跳坑,下载的时候还是得搭梯子,毕竟国外的网址 https://blog.csdn.net/padawan75/article/details/107520914
  • vagrant常用其他命令
  1. vagrant ssh:自动使用vagrant用户连接虚拟机
  2. exit:退出虚拟机
  3. image.png

ps:每次需要使用虚拟机时,先在windows cmd窗口运行vagrant up运行虚拟机,再用vagrant ssh使用vagrant用户连接虚拟机

  • 虚拟机网络设置
  1. 端口转发:vatural box采用端口转发的方式,来访问虚拟机的端口的,如图:

image.png
用户要想访问虚拟机的3306端口,就必须要先访问windows(主机)的3333端口,主机的3333端口和子虚拟机的3306形成端口映射,这样才能访问到子虚拟机的3306端口,也就是说我们要想在虚拟机中添加一个软件时,就必须要先去vatural box配置端口转发
image.png
image.png

  • 解决思路:我们可以给虚拟机一个ip地址,这个ip地址可以和主机ping通,这样我们就能通过ip地址+端口来访问虚拟机里面的mysql或者reids服务了
  • 实现:
  1. 修改Vagrantfile(通常文件地址在c盘的用户目录下)

image.png

  1. 在35行找到这行配置IP地址的信息进行修改

image.png

  1. 查看虚拟机端口号

image.png

  1. 修改配置文件中的ip地址为192.168.56.xx(xx随便写个地址,不是真的是xx,这样可以保证主子机之间ping通)

1.2 安装docker

image.png
docker简述

  1. 基本上就是按照官方文档一步一步命令执行下来就安装成功了
  2. 我们虚拟机上登录的用户是vagrent,不是root用户,而sudo命令是采用超级管理员的权限进行安装

官方安装实在太慢了,臣妾顶不住啊(https://blog.csdn.net/weixin_45007916/article/details/107659766

  • 安装docker => 安装docker引擎 => 启动docker => docker images列出本地的docker镜像 => sudo systemctl enable docker开机自动启动docker

    配置docker加速服务

  • 登录阿里云

  • 控制台搜索容器镜像
  • image.png

1.3 docker安装mysql

1.3.1 下载docker镜像

sudo docker pull mysql:5.7:使用超级管理员的权限sudo下载mysql的镜像
ps:切换到root可用,不然每次使用sudo命令很麻烦
su root
需要登录密码,我们用的vagrant所以root用户的默认密码就是vagrant
image.png

1.3.2 创建实例并启动

  1. docker run -p 3306:3306 --name mysql \
  2. -v /mydata/mysql/log:/var/log/mysql \
  3. -v /mydata/mysql/data:/var/lib/mysql \
  4. -v /mydata/mysql/conf:/etc/mysql \
  5. -e MYSQL_ROOT_PASSWORD=root \
  6. -d mysql:5.7

image.png
补充:\是换行标志
image.png
docker里面的容器文件与linux文件映射图

1.3.3 配置mysql

  • 进入linux的my.cnf文件vi /mydata/mysql/conf/my.cnf
  • 把下面内容复制到文件中 ```bash [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

  1. - 然后重启mysql`docker restart mysql`
  2. - docker交互式命令进入dockermysql中查看配置文件是否配置成功
  3. `docker exec -it mysql /bin/bash`<br />`cd /etc/mysql`<br />`cat my.cnf`<br />![image.png](https://cdn.nlark.com/yuque/0/2021/png/22333404/1633254309633-a6c49dca-7869-4996-8cb7-871e8541550c.png#clientId=uf996c3c1-a32d-4&from=paste&height=221&id=u94a68184&margin=%5Bobject%20Object%5D&name=image.png&originHeight=442&originWidth=680&originalType=binary&ratio=1&size=38300&status=done&style=none&taskId=u0433fe0c-19b0-404b-82b2-488cc4efacf&width=340)
  4. <a name="q1R4T"></a>
  5. ## 1.4 docker安装redis
  6. - 下载redis镜像文件
  7. ```bash
  8. //下载最新的redis
  9. sudo docker pull redis
  • 创建实例并启动

    1. // 创建实例前先创建redis.conf文件
    2. mkdir -p /mydata/redis/conf
    3. touch /mydata/redis/conf/redis.conf
    1. docker run -p 6379:6379 --name redis \
    2. -v /mydata/redis/data:/data \
    3. -v /mydata/redis/conf/redis.conf:/etc/redis/redis.conf \
    4. -d redis redis-server /etc/redis/redis.conf
  • 持久化redis

    1. // 打开redis.conf文件
    2. vi /mydata/redis/conf/redis.conf

    把下面内容复制到文件中

    1. appendonly yes
  • 重启redis

    1. docker restart redis
  • 测试reids重启后是否能够持久化数据

    1. // 以交互式命令进入redis
    2. docker exec -it redis redis-cli
    3. // 存入aa-bb
    4. set aa bb
    5. get aa
    6. exit
    7. // 重启redis
    8. docker restart redis
    9. // 以交互式命令进入redis
    10. docker exec -it redis redis-cli
    11. get aa
    12. // 这里能取到aa的值的话持久化就配置成功了

    1.5 开发工具&环境安装配置

    1.5.1 jdk版本

    image.png

    1.5.2 maven配置

  • maven的配置文件中修改配置

    1. <mirror>
    2. <id>alimaven</id>
    3. <mirrorOf>central</mirrorOf>
    4. <name>aliyun maven</name>
    5. <url>https://maven.aliyun.com/nexus/content/groups/public</url>
    6. </mirror>
    7. </mirrors>
  • 指定jdk版本

    1. <profile>
    2. <id>jdk-1.8</id>
    3. <activation>
    4. <activeByDefault>true</activeByDefault>
    5. <jdk>1.8</jdk>
    6. </activation>
    7. <properties>
    8. <maven.compiler.source>1.8</maven.compiler.source>
    9. <maven.compiler.target>1.8</maven.compiler.target>
    10. <maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
    11. </properties>
    12. </profile>

    1.5.3 IDEA设置

  • maven地址指定到上面的配置文件上

  • 下载插件【lombok】【mybatisX】

    1.5.4 vscode安装(傻瓜式安装)

  • 安装下面插件

image.png
image.png

1.5.5 配置git-ssh

ps:配置好 以后每次提交代码的时候就不用填写密码了

  1. // 配置git全局提交的用户名和邮箱
  2. git config --global user.name "yangfanbin"
  3. git config --global user.email "510195171@qq.com"
  4. // 配置git-ssh公匙
  5. ssh-keygen -t rsa -C "510195171@qq.com"
  6. // 查看公匙
  7. cat ~/.ssh/id_rsa.pub
  8. // 复制公匙

image.png

  • 测试配置的ssh公匙是否可用

ssh -T git@gitee.com
image.png

1.5.6 项目结构创建&提交到码云

  • 码云上创建项目

image.png

  • 使用idea从gitee上get项目
  • 创建微服务package
  • 修改pom引入依赖的版本号
  • 在聚合包下新设置一个pom文件,并把其他的服务全部聚合进来
  • 修改聚合包下的gitigrone
  • 上传初始化的项目到码云

详细操作可以参考博客:https://www.jianshu.com/p/1b8369059ece
创建完成后:
image.png

image.png

1.5.7 数据库初始化

1.5.7.1 设置mysql和redis在虚拟机启动时自启(前提是docker在虚拟机启动时也需要自启)

docker update redis --restart=always
docker update mysql --restart=always

1.5.7.2 了解PowerDesigner

1.5.7.3 创建数据库并执行sql

image.png字符编码用utf8mb4

  1. drop table if exists oms_order;
  2. drop table if exists oms_order_item;
  3. drop table if exists oms_order_operate_history;
  4. drop table if exists oms_order_return_apply;
  5. drop table if exists oms_order_return_reason;
  6. drop table if exists oms_order_setting;
  7. drop table if exists oms_payment_info;
  8. drop table if exists oms_refund_info;
  9. /*==============================================================*/
  10. /* Table: oms_order */
  11. /*==============================================================*/
  12. create table oms_order
  13. (
  14. id bigint not null auto_increment comment 'id',
  15. member_id bigint comment 'member_id',
  16. order_sn char(32) comment '订单号',
  17. coupon_id bigint comment '使用的优惠券',
  18. create_time datetime comment 'create_time',
  19. member_username varchar(200) comment '用户名',
  20. total_amount decimal(18,4) comment '订单总额',
  21. pay_amount decimal(18,4) comment '应付总额',
  22. freight_amount decimal(18,4) comment '运费金额',
  23. promotion_amount decimal(18,4) comment '促销优化金额(促销价、满减、阶梯价)',
  24. integration_amount decimal(18,4) comment '积分抵扣金额',
  25. coupon_amount decimal(18,4) comment '优惠券抵扣金额',
  26. discount_amount decimal(18,4) comment '后台调整订单使用的折扣金额',
  27. pay_type tinyint comment '支付方式【1->支付宝;2->微信;3->银联; 4->货到付款;】',
  28. source_type tinyint comment '订单来源[0->PC订单;1->app订单]',
  29. status tinyint comment '订单状态【0->待付款;1->待发货;2->已发货;3->已完成;4->已关闭;5->无效订单】',
  30. delivery_company varchar(64) comment '物流公司(配送方式)',
  31. delivery_sn varchar(64) comment '物流单号',
  32. auto_confirm_day int comment '自动确认时间(天)',
  33. integration int comment '可以获得的积分',
  34. growth int comment '可以获得的成长值',
  35. bill_type tinyint comment '发票类型[0->不开发票;1->电子发票;2->纸质发票]',
  36. bill_header varchar(255) comment '发票抬头',
  37. bill_content varchar(255) comment '发票内容',
  38. bill_receiver_phone varchar(32) comment '收票人电话',
  39. bill_receiver_email varchar(64) comment '收票人邮箱',
  40. receiver_name varchar(100) comment '收货人姓名',
  41. receiver_phone varchar(32) comment '收货人电话',
  42. receiver_post_code varchar(32) comment '收货人邮编',
  43. receiver_province varchar(32) comment '省份/直辖市',
  44. receiver_city varchar(32) comment '城市',
  45. receiver_region varchar(32) comment '区',
  46. receiver_detail_address varchar(200) comment '详细地址',
  47. note varchar(500) comment '订单备注',
  48. confirm_status tinyint comment '确认收货状态[0->未确认;1->已确认]',
  49. delete_status tinyint comment '删除状态【0->未删除;1->已删除】',
  50. use_integration int comment '下单时使用的积分',
  51. payment_time datetime comment '支付时间',
  52. delivery_time datetime comment '发货时间',
  53. receive_time datetime comment '确认收货时间',
  54. comment_time datetime comment '评价时间',
  55. modify_time datetime comment '修改时间',
  56. primary key (id)
  57. );
  58. alter table oms_order comment '订单';
  59. /*==============================================================*/
  60. /* Table: oms_order_item */
  61. /*==============================================================*/
  62. create table oms_order_item
  63. (
  64. id bigint not null auto_increment comment 'id',
  65. order_id bigint comment 'order_id',
  66. order_sn char(32) comment 'order_sn',
  67. spu_id bigint comment 'spu_id',
  68. spu_name varchar(255) comment 'spu_name',
  69. spu_pic varchar(500) comment 'spu_pic',
  70. spu_brand varchar(200) comment '品牌',
  71. category_id bigint comment '商品分类id',
  72. sku_id bigint comment '商品sku编号',
  73. sku_name varchar(255) comment '商品sku名字',
  74. sku_pic varchar(500) comment '商品sku图片',
  75. sku_price decimal(18,4) comment '商品sku价格',
  76. sku_quantity int comment '商品购买的数量',
  77. sku_attrs_vals varchar(500) comment '商品销售属性组合(JSON)',
  78. promotion_amount decimal(18,4) comment '商品促销分解金额',
  79. coupon_amount decimal(18,4) comment '优惠券优惠分解金额',
  80. integration_amount decimal(18,4) comment '积分优惠分解金额',
  81. real_amount decimal(18,4) comment '该商品经过优惠后的分解金额',
  82. gift_integration int comment '赠送积分',
  83. gift_growth int comment '赠送成长值',
  84. primary key (id)
  85. );
  86. alter table oms_order_item comment '订单项信息';
  87. /*==============================================================*/
  88. /* Table: oms_order_operate_history */
  89. /*==============================================================*/
  90. create table oms_order_operate_history
  91. (
  92. id bigint not null auto_increment comment 'id',
  93. order_id bigint comment '订单id',
  94. operate_man varchar(100) comment '操作人[用户;系统;后台管理员]',
  95. create_time datetime comment '操作时间',
  96. order_status tinyint comment '订单状态【0->待付款;1->待发货;2->已发货;3->已完成;4->已关闭;5->无效订单】',
  97. note varchar(500) comment '备注',
  98. primary key (id)
  99. );
  100. alter table oms_order_operate_history comment '订单操作历史记录';
  101. /*==============================================================*/
  102. /* Table: oms_order_return_apply */
  103. /*==============================================================*/
  104. create table oms_order_return_apply
  105. (
  106. id bigint not null auto_increment comment 'id',
  107. order_id bigint comment 'order_id',
  108. sku_id bigint comment '退货商品id',
  109. order_sn char(32) comment '订单编号',
  110. create_time datetime comment '申请时间',
  111. member_username varchar(64) comment '会员用户名',
  112. return_amount decimal(18,4) comment '退款金额',
  113. return_name varchar(100) comment '退货人姓名',
  114. return_phone varchar(20) comment '退货人电话',
  115. status tinyint(1) comment '申请状态[0->待处理;1->退货中;2->已完成;3->已拒绝]',
  116. handle_time datetime comment '处理时间',
  117. sku_img varchar(500) comment '商品图片',
  118. sku_name varchar(200) comment '商品名称',
  119. sku_brand varchar(200) comment '商品品牌',
  120. sku_attrs_vals varchar(500) comment '商品销售属性(JSON)',
  121. sku_count int comment '退货数量',
  122. sku_price decimal(18,4) comment '商品单价',
  123. sku_real_price decimal(18,4) comment '商品实际支付单价',
  124. reason varchar(200) comment '原因',
  125. description varchar(500) comment '描述',
  126. desc_pics varchar(2000) comment '凭证图片,以逗号隔开',
  127. handle_note varchar(500) comment '处理备注',
  128. handle_man varchar(200) comment '处理人员',
  129. receive_man varchar(100) comment '收货人',
  130. receive_time datetime comment '收货时间',
  131. receive_note varchar(500) comment '收货备注',
  132. receive_phone varchar(20) comment '收货电话',
  133. company_address varchar(500) comment '公司收货地址',
  134. primary key (id)
  135. );
  136. alter table oms_order_return_apply comment '订单退货申请';
  137. /*==============================================================*/
  138. /* Table: oms_order_return_reason */
  139. /*==============================================================*/
  140. create table oms_order_return_reason
  141. (
  142. id bigint not null auto_increment comment 'id',
  143. name varchar(200) comment '退货原因名',
  144. sort int comment '排序',
  145. status tinyint(1) comment '启用状态',
  146. create_time datetime comment 'create_time',
  147. primary key (id)
  148. );
  149. alter table oms_order_return_reason comment '退货原因';
  150. /*==============================================================*/
  151. /* Table: oms_order_setting */
  152. /*==============================================================*/
  153. create table oms_order_setting
  154. (
  155. id bigint not null auto_increment comment 'id',
  156. flash_order_overtime int comment '秒杀订单超时关闭时间(分)',
  157. normal_order_overtime int comment '正常订单超时时间(分)',
  158. confirm_overtime int comment '发货后自动确认收货时间(天)',
  159. finish_overtime int comment '自动完成交易时间,不能申请退货(天)',
  160. comment_overtime int comment '订单完成后自动好评时间(天)',
  161. member_level tinyint(2) comment '会员等级【0-不限会员等级,全部通用;其他-对应的其他会员等级】',
  162. primary key (id)
  163. );
  164. alter table oms_order_setting comment '订单配置信息';
  165. /*==============================================================*/
  166. /* Table: oms_payment_info */
  167. /*==============================================================*/
  168. create table oms_payment_info
  169. (
  170. id bigint not null auto_increment comment 'id',
  171. order_sn char(32) comment '订单号(对外业务号)',
  172. order_id bigint comment '订单id',
  173. alipay_trade_no varchar(50) comment '支付宝交易流水号',
  174. total_amount decimal(18,4) comment '支付总金额',
  175. subject varchar(200) comment '交易内容',
  176. payment_status varchar(20) comment '支付状态',
  177. create_time datetime comment '创建时间',
  178. confirm_time datetime comment '确认时间',
  179. callback_content varchar(4000) comment '回调内容',
  180. callback_time datetime comment '回调时间',
  181. primary key (id)
  182. );
  183. alter table oms_payment_info comment '支付信息表';
  184. /*==============================================================*/
  185. /* Table: oms_refund_info */
  186. /*==============================================================*/
  187. create table oms_refund_info
  188. (
  189. id bigint not null auto_increment comment 'id',
  190. order_return_id bigint comment '退款的订单',
  191. refund decimal(18,4) comment '退款金额',
  192. refund_sn varchar(64) comment '退款交易流水号',
  193. refund_status tinyint(1) comment '退款状态',
  194. refund_channel tinyint comment '退款渠道[1-支付宝,2-微信,3-银联,4-汇款]',
  195. refund_content varchar(5000),
  196. primary key (id)
  197. );
  198. alter table oms_refund_info comment '退款信息';