Day396.环境搭建 -谷粒商城

Posted 阿昌喜欢吃黄桃

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Day396.环境搭建 -谷粒商城相关的知识,希望对你有一定的参考价值。

一、环境搭建

这里可使用VMWare,也可以使用VirtualBox,以下以VirtualBox为例子:

1、安装 linux 虚拟机

  • 下载&安装 VirtualBox , 要开启CPU 虚拟化
  • https://www.virtualbox.org/ — 官方

  • 下载&安装 Vagrant

    • https://app.vagrantup.com/boxes/search Vagrant 官方镜像仓库
    • https://www.vagrantup.com/downloads.html Vagrant 下载
  • 打开 window cmd 窗口,运行 Vagrant init centos/7,即可初始化一个 centos7 系统

    Vagrant init centos/7
    
  • 运行 vagrant up 即可启动虚拟机。系统 root 用户的密码是 vagrant

    vagrant up
    
  • vagrant 其他常用命令

    • vagrant ssh

      自动使用 vagrant 用户连接虚拟机

    • vagrant upload source [destination] [name|id]:

      上传文件

    • https://www.vagrantup.com/docs/cli/init.html Vagrant 命令行

  • 默认虚拟机的 ip 地址不是固定 ip,开发不方便

    • Vagrantfile文件一般会生成在用户文件夹下如:C:\\Users\\PePe

    • 修改 Vagrantfile,ip的设定根据如何ipconfig来对应虚拟机的ip地址范围

      config.vm.network "private_network", ip: "192.168.56.10"
      

    • 这里的 ip 需要在物理机下使用 ipconfig 命令找到

    • 改为这个指定的子网地址

      重新使用 vagrant up 启动机器即可。然后再 vagrant ssh 连接机器

    • 默认只允许 ssh 登录方式,为了后来操作方便,文件上传等,我们可以配置允许账号密码登录

    Vagrant ssh # 进去系统之后
    vi /etc/ssh/sshd_config
    修改 PasswordAuthentication yes/no
    service sshd restart # 重启服务
    
    • 以后可以使用提供的 ssh 连接工具直接连接

    注意:VirtualBox 会与包括但不限于如下软件冲突,需要卸载这些软件,然后重启电脑;

    冲突的软件:红蜘蛛,360,净网大师(有可能)等

  • 修改 linux 的 yum 源

    • 备份原 yum 源

      mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
      
    • 使用新 yum 源

      curl -o /etc/yum.repos.d/CentOS-Base.repo
      http://mirrors.163.com/.help/CentOS7-Base-163.repo
      
    • 生成缓存

      yum makecache
      

2、安装 docker

Docker 安装文档

https://docs.docker.com/install/linux/docker-ce/centos/

  • 卸载系统之前的 docker

    sudo yum remove docker \\
                    docker-client \\
                    docker-client-latest \\
                    docker-common \\
                    docker-latest \\
                    docker-latest-logrotate \\
                    docker-logrotate \\
                    docker-engine
    
  • 安装 Docker-CE

    • 安装必须的依赖

      sudo yum install -y yum-utils \\
              device-mapper-persistent-data \\
              lvm2
      
    • 设置 docker repo 的 yum 位置

      sudo yum-config-manager \\
              --add-repo \\
              https://download.docker.com/linux/centos/docker-ce.repo
      
    • 安装 docker,以及 docker-cli

      sudo yum install docker-ce docker-ce-cli containerd.io
      
  • 启动 docker

    sudo systemctl start docker
    
  • 设置 docker 开机自启

    sudo systemctl enable docker
    
  • 测试 docker 常用命令,注意切换到 root 用户下

    https://docs.docker.com/engine/reference/commandline/docker/

  • 配置 docker 镜像加速

    • 阿里云,容器镜像服务

      针对 Docker 客户端版本大于 1.10.0 的用户

      可以通过修改 daemon 配置文件/etc/docker/daemon.json 来使用加速器

      sudo mkdir -p /etc/docker
      
      sudo tee /etc/docker/daemon.json <<-'EOF'
      {
      "registry-mirrors": ["https://82m9ar63.mirror.aliyuncs.com"]
      }
      EOF
      sudo systemctl daemon-reload
      sudo systemctl restart docker
      

  • 查询镜像

    docker images
    

  • 查询容器

    docker ps
    


3、docker 安装 mysql

  • 下载镜像文件

    docker pull mysql:5.7
    
  • 创建实例并启动

    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/conf:/etc/mysql:将配置文件夹挂载到主机

      -v /mydata/mysql/log:/var/log/mysql:将日志文件夹挂载到主机

      -v /mydata/mysql/data:/var/lib/mysql/:将配置文件夹挂载到主机

      -e MYSQL_ROOT_PASSWORD=root:初始化 root 用户的密码

    • MySQL 配置

      vi /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 #跳过域名解析
      
    • 解决 MySQL 连接慢的问题

      #在配置文件中加入如下,并重启 mysql
      [mysqld]
      skip-name-resolve
      
      #skip-name-resolve:跳过域名解析
      
    • 重启容器

      docker ps -a #查看所有的containners
      

      docker restart 容器id  #重启容器
      
  • 通过容器的 mysql 命令行工具连接

docker exec -it mysql mysql -uroot -proot
  • 通过sqlyog连接

  • 设置 root 远程访问
grant all privileges on *.* to 'root'@'%' identified by 'root' with grant option;

flush privileges;
  • 进入容器文件系统
docker exec -it mysql /bin/bash
  • 退出容器

exit

4、docker 安装 redis

  • 下载镜像文件
docker pull redis
  • 创建实例并启动
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 自描述文件:https://raw.githubusercontent.com/antirez/redis/4.0/redis.conf

  • 使用 redis 镜像执行 redis-cli 命令连接
docker exec -it redis redis-cli

  • 设置虚拟机重启后,会自动开启以上服务
sudo docker update mysql(服务名) --restart=always

---

## 5、开发环境统一

### ①Maven

apache-maven-3.3.9\\conf\\settings

​```xml
<!--配置阿里云镜像-->
<mirrors>
    <mirror>
        <id>nexus-aliyun</id>
        <mirrorOf>central</mirrorOf>
        <name>Nexus aliyun</name>
        <url>http://maven.aliyun.com/nexus/content/groups/public</url>
    </mirror>
</mirrors>

<!--配置 jdk1.8 编译项目-->
<profiles>
    <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>

②Idea&VsCode

  • idea 安装 lombokmybatisx插件

  • Vscode 安装开发必备插件

    • Vetur —— 语法高亮、智能感知、Emmet 等包含格式化功能, Alt+Shift+F (格式化全文),Ctrl+K Ctrl+F(格式化选中代码,两个 Ctrl需要同时按着)
    • EsLint —— 语法纠错
    • Auto Close Tag —— 自动闭合 HTML/XML 标签
    • Auto Rename Tag —— 自动完成另一侧标签的同步修改
    • javascript(ES6) code snippets — — ES6 语 法 智 能 提 示 以 及 快 速 输 入 , 除 js 外 还 支持.ts,.jsx,.tsx,.html,.vue,省去了配置其支持各种包含 js 代码文件的时间
    • HTML CSS Support —— 让 html 标签上写 class 智能提示当前项目所支持的样式
    • HTML Snippets —— html 快速自动补全
    • Open in browser —— 浏览器快速打开
    • Live Server —— 以内嵌服务器方式打开
    • Chinese (Simplified) Language Pack for Visual Studio Code —— 中文语言包

③ 安装配置 git

  • 下载 git https://git-scm.com

  • 配置 git,进入 git bash

    # 配置用户名
    git config --global user.name "username" #(名字)
    
    # 配置邮箱
    git config --global user.email "username@email.com" #(注册账号时用的邮箱)
    

  • 配置 ssh 免密登录

    https://gitee.com/help/articles/4181#article-header0

    进入 git bash;使用:ssh-keygen -t rsa -C "xxxxx@xxxxx.com"命令。

    连续三次回车。
    一般用户目录(C:\\Users\\PePe\\.ssh)下会有

    或者 cat ~/.ssh/id_rsa.pub
    登录进入 gitee,在设置里面找到 SSH KEY 将.pub文件的内容粘贴进去

    使用 ssh -T git@gitee.com 测试是否成功即可

    Git+码云教程 https://gitee.com/help/articles/4104



6、创建项目微服务

  • 从 gitee 初始化一个项目

商品服务、仓储服务、订单服务、优惠券服务、用户服务

  • 共同

    • web、openfeign
    • 每一个服务,包名 com.achang.achangmall.xxx(product/order/ware/coupon/member)
    • 模块名:achangmall-coupon
  • 创建各个微服务项目

    • 了解人人开源项目,快速搭建后台脚手架
    • 修改代码调整为我们的业务逻辑
    • 创建各个微服务以及数据库
  • 进行git提交忽略,在.gitignore文件中

**/mvnw.*
**/mvnw
**/mvnw.cmd
**/.mvn

**/target/
**/.gitignore
  • 进行提交上传操作后


7、初始化数据库

  • achangmall-oms.sql
drop table if exists oms_order;
drop table if exists oms_order_item;
drop table if exists oms_order_operate_history;
drop table if exists oms_order_return_apply;
drop table if exists oms_order_return_reason;
drop table if exists oms_order_setting;
drop table if exists oms_payment_info;
drop table if exists oms_refund_info;

/*==============================================================*/
/* Table: oms_order                                             */
/*==============================================================*/
create table oms_order
(
   id                   bigint not null auto_increment comment 'id',
   member_id            bigint comment 'member_id',
   order_sn             char(32) comment '订单号',
   coupon_id            bigint comment '使用的优惠券',
   create_time          datetime comment 'create_time',
   member_username      varchar(200) comment '用户名',
   total_amount         decimal(18,4) comment '订单总额',
   pay_amount           decimal(18,4) comment '应付总额',
   freight_amount       decimal(18,4) comment '运费金额',
   promotion_amount     decimal(18,4) comment '促销优化金额(促销价、满减、阶梯价)',
   integration_amount   decimal(18,4) comment '积分抵扣金额',
   coupon_amount        decimal(18,4) comment '优惠券抵扣金额',
   discount_amount      decimal(18,4) comment '后台调整订单使用的折扣金额',
   pay_type             tinyint comment '支付方式【1->支付宝;2->微信;3->银联; 4->货到付款;】',
   source_type          tinyint comment '订单来源[0->PC订单;1->app订单]',
   status               tinyint comment '订单状态【0->待付款;1->待发货;2->已发货;3->已完成;4->已关闭;5->无效订单】',
   delivery_company     varchar(64) comment '物流公司(配送方式)',
   delivery_sn          varchar(64) comment '物流单号',
   auto_confirm_day     int comment '自动确认时间(天)',
   integration          int comment '可以获得的积分',
   growth               int comment '可以获得的成长值',
   bill_type            tinyint comment '发票类型[0->不开发票;1->电子发票;2->纸质发票]',
   bill_header          varchar(255) comment '发票抬头',
   bill_content         varchar(255) comment '发票内容',
   bill_receiver_phone  varchar(32) comment '收票人电话',
   bill_receiver_email  varchar(64) comment '收票人邮箱',
   receiver_name        varchar(100) comment '收货人姓名',
   receiver_phone       varchar(32) comment '收货人电话',
   receiver_post_code   varchar(32) comment '收货人邮编',
   receiver_province    varchar(32) comment '省份/直辖市',
   receiver_city        varchar(32) comment '城市',
   receiver_region      varchar(32) comment '区',
   receiver_detail_address varchar(200) comment '详细地址',
   note                 varchar(500) comment '订单备注',
   confirm_status       tinyint comment '确认收货状态[0->未确认;1->已确认]',
   delete_status        tinyint comment '删除状态【0->未删除;1->已删除】',
   use_integration      int comment '下单时使用的积分',
   payment_time         datetime comment '支付时间',
   delivery_time        datetime comment '发货时间',
   receive_time         datetime comment '确认收货时间',
   comment_time         datetime comment '评价时间',
   modify_time          datetime comment '修改时间',
   primary key (id)
);

alter table oms_order comment '订单';

/*==============================================================*/
/* Table: oms_order_item                                        */
/*==============================================================*/
create table oms_order_item
(
   id                   bigint not null auto_increment comment 'id',
   order_id             bigint comment 'order_id',
   order_sn             char(32) comment 'order_sn',
   spu_id               bigint comment 'spu_id',
   spu_name             varchar(255) comment 'spu_name',
   spu_pic              varchar(500) comment 'spu_pic',
   spu_brand            varchar(200) comment '品牌',
   category_id          bigint comment '商品分类id',
   sku_id               bigint comment '商品sku编号',
   sku_name             varchar(255) comment '商品sku名字',
   sku_pic              varchar(500) comment '商品sku图片',
   sku_price            decimal(18,4) comment '商品sku价格',
   sku_quantity         int comment '商品购买的数量',
   sku_attrs_vals       varchar(500) comment '商品销售属性组合(JSON)',
   promotion_amount     decimal(18,4) comment '商品促销分解金额',
   coupon_amount        decimal(18,4) comment '优惠券优惠分解金额',
   integration_amount   decimal(18,4) comment '积分优惠分解金额',
   real_amount          decimal(18,4) comment '该商品经过优惠后的分解金额',
   gift_integration     int comment '赠送积分',
   gift_growth          int comment '赠送成长值',
   primary key (id)
);

alter table oms_order_item comment '订单项信息';

/*==============================================================*/
/* Table: oms_order_operate_history                             */
/*==============================================================*/
create table oms_order_operate_history
(
   id                   bigint not null auto_increment comment 'id',
   order_id             bigint comment '订单id',
   operate_man          varchar(100) comment '操作人[用户;系统;后台管理员]',
   create_time          datetime comment '操作时间',
   order_status         tinyint comment '订单状态【0->待付款;1->待发货;2->已发货;3->已完成;4->已关闭;5->无效订单】',
   note                 varchar(500) comment '备注',
   primary key (id)
);

alter table oms_order_operate_history comment '订单操作历史记录';

/*==============================================================*/
/* Table: oms_order_return_apply                                */
/*==============================================================*/
create table oms_order_return_apply
(
   id                   bigint not null auto_increment comment 'id',
   order_id             bigint comment 'order_id',
   sku_id               bigint comment '退货商品id',
   order_sn             char(32) comment '订单编号',
   create_time          datetime comment '申请时间',
   member_username      varchar(64) comment '会员用户名',
   return_amount        decimal(18,4) comment '退款金额',
   return_name          varchar(100) comment '退货人姓名',
   return_phone         varchar(20) comment '退货人电话',
   status               tinyint(1) comment '申请状态[0->待处理;1->退货中;2->已完成;3->已拒绝]',
   handle_time          datetime comment '处理时间',
   sku_img              varchar(500) comment '商品图片',
   sku_name             varchar(200) comment '商品名称',
   sku_brand            varchar(200) comment '商品品牌',
   sku_attrs_vals       varchar(500) comment '商品销售属性(JSON)',
   sku_count            int comment '退货数量',
   sku_price            decimal(18,4) comment '商品单价',
   sku_real_price       decimal(18,4) comment '商品实际支付单价',
   reason               varchar(200) comment '原因',
   description述         varchar(500) comment '描述',
   desc_pics            varchar(2000) comment '凭证图片,以逗号隔开',
   handle_note          varchar(500) comment '处理备注',
   handle_man           varchar(200) comment '处理人员',
   receive_man          varchar(100) comment '收货人',
   receive_time         datetime comment '收货时间',
   receive_note         varchar(500) comment '收货备注',
   receive_phone        varchar(20) comment '收货电话',
   company_address      varchar(500) comment '公司收货地址',
   primary key (id)
);

alter table oms_order_return_apply comment '订单退货申请';

/*==============================================================*/
/* Table: oms_order_return_reason                               */
/*==============================================================*/
create table oms_order_return_reason
(
   id                   bigint 以上是关于Day396.环境搭建 -谷粒商城的主要内容,如果未能解决你的问题,请参考以下文章

day01环境JAVA开发环境搭建

day01 计算机基础和环境搭建

Openstack Day1简介及虚拟环境搭建

day37 09-Struts2和Hibernate整合环境搭建

GIT学习day02 | git环境搭建并将项目进行本地管理

JAVA零基础入门系列Day1 开发环境搭建