谷粒商城环境搭建

谷粒商城项目环境配置

1.安装Docker

----> 安装命令

$ sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
$ sudo yum install -y yum-utils

---->官网yum源

$ sudo yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo

---->阿里云yum源(推荐)

$ sudo yum-config-manager \
    --add-repo \
  http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

将软件包信息提前在本地缓存一份,用来提高搜索安装软件的速度

yum makecache fast
$ sudo yum install docker-ce docker-ce-cli containerd.io
$ sudo systemctl start docker

---->查看docker信息

docker -v
docker images

---->设置开机自启动

systemctl enable docker  

---->修改docker源为阿里云

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

sudo systemctl daemon-reload     
sudo systemctl restart docker  

---->docker镜像自动启动

举例:redus、mysql

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

2.安装docker–>mysql

----> 从远程拉取mysql的5.7 Tag镜像

docker pull mysql:5.7

---->配置mysql

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 \(本地和docker关联)   
-e MYSQL_ROOT_PASSWORD=123456(自己mysql密码) \
-d mysql:5.7(版本)

进入mysql

docker exec -it mysql /bin/bash    

配置 config文件

/mydata/mysql/conf/my.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   

3.安装docker–>redis

----> 从远程拉取redis镜像文件

docker pull redis   

----> 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持久化

vim /mydata/redis/conf/redis.conf    
填入:
appendonly yes

4.Maven配置

---->下载Linux的maven安装包

官网地址

上传到Linux

cd /usr/local    
tar -zxvf apache-maven-3.6.3-bin.tar.gz //注意版本号

---->配置环境变量

vi /etc/profile     
export MAVEN_HOME=/usr/local/apache-maven-3.6.3     
export PATH=$MAVEN_HOME/bin:$PATH  

刷新变量

source /etc/profile

查看是否安装成功

mvn -v

进入setting.xml文件


          
        alimaven
        aliyun maven
      http://maven.aliyun.com/nexus/content/groups/public/
        central        
    
    jdk-1.8
    
        true
        1.8
    
    
        1.8
        1.8                               
        1.8
    

5.git配置

----> 安装下载git

下载地址

----> 配置用户名和邮箱

git config -global user.name "username"
git config -global user.email "[email protected]"

----> 配置git免密登录在git bash中:

ssh-keygen -t rsa -C "[email protected]:

三次回车

查看密钥

cat ~/.ssh/id_rsa.pub

进入gitee找到公钥页面,将查看到的密钥填入进去

测试是否成功

ssh -T [email protected]

6.创建项目微服务

gitee新建仓库建立以下服务:**

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

共同点:

1.导入spring web,openfeign

2.每一个服务的包名:

com.xxx.gulimall.xxx(product/order/ware/coupon/member)

3.模块名:

gulimall-product/order/ware/coupon/member

7.获取gitee的renren开源前后端项目

1.进入Gitee搜索人人开源

2.复制renren-fast(后端)和renren-fast-vue(前端)项目的地址

3.在本地git clone 地址,拉取项目到本地

4.在idea中配置renren-fast项目,在总pom中导入renren-fast的model(删除自带的.git文件)

8.安装配置node.js

---->官网下载安装node.js

检查版本

node -v

---->配置npm使用淘宝镜像

npm config set registry http://registry.npm.taobao.org/

9.前端项目renren-fast-vue配置

---->在VS Code中安装插件

Auto Close Tag,Auto Rename Tag
Chinese(Simplified) Language
ESLint
HTML CSS Support
HTML Snippets
JavaScript(ES6) code snippets
Live Server
open in browser
TSLint(deprecated)
Vetur

将reneren-fast-vue项目导入到VS Code中

在VS Code的终端输入npm install下载依赖组件

启动前端项目

npm run dev

10.后端逆向工程搭建

---->下载gitee上的人人开源的renren-generator项目

---->项目导入总工程并修改application.yml和application.properties中对应的数据库的参数

---->运行generator项目,反向生成工程

---->对生成的每个微服务yml进行配置

server:
  port: xxxxx

spring:
  datasource:
    driverClassName: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://xxxxx:3306/gulimall_*ms?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai
    username: root
    password: 123456

mybatis-plus:
  mapper-locations: classpath:/mapper/**/*.xml
  global-config:
    db-config:
      id-type: auto

11.配置nacos

---->修改common中的pom文件,引入Nacos


    
        com.alibaba.cloud
        spring-cloud-starter-alibaba-nacos-discovery
    



    
        
            com.alibaba.cloud
            spring-cloud-alibaba-dependencies
            2.2.0.RELEASE
            pom
            import
        
    

---->在每个微服务配置application.yml

spring:
  datasource:
    driverClassName: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://39.99.217.20:3306/gulimall_ums?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai
    username: root
    password: 123456
  cloud:
    nacos:
      discovery:
        server-addr: ******:8848(nacos地址)
  application:
    name: gulimall-member(微服务名字)

---->在主程序使用@EnableDiscoveryClient开启服务注册发现功能

12.open-feign远程调用

---->引入open-feign的gav坐标


    org.springframework.cloud
    spring-cloud-starter-openfeign

---->编写一个接口,告诉springcloud这个接口需要调用远程服务。

1).声明接口的每一个方法都是调用哪个远程服务的哪个请求。

2).创建一个feign文件夹,在此文件夹内创建CouponFeign接口远程调用gulimall-coupon服务

@FeignClient("gulimall-coupon")
public interface CouponFeign {
    @RequestMapping("/coupon/coupon/test")
    public R test();
}

---->在启动类加入@EnableFeignClients(basePackages = “{ 接口所在的包全类名}”)开启远程调用功能.

13.nacos-config配置

---->导入nacos-config的pom


     com.alibaba.cloud
     spring-cloud-starter-alibaba-nacos-config

---->创建一个bootstrap.properties

spring.application.name=nacos-config-example
spring.cloud.nacos.config.server-addr=*****:8848

---->给配置中心默认添加一个数据集(Data Id)---->默认规则:应用名.properties

---->给应用名.properties添加任何配置

---->动态获取配置

@RefreshScope:添加在Controller层,动态获取并刷新配置

@Value:获取到配置信息

如果配置中心和当前应用的配置文件中都配置了相同的项,优先调用配置中心的配置。

---->细节

1、命名空间:配置隔离

​ 默认:public(保留空间),默认新增的所有配置都在public空间。

  1. –>开发,测试,生产:利用命名空间来做环境隔离 ​
    注意:在bootstrap.properties配置上是,需要使用哪个命名空间下的配置 ​
    spring.cloud.nacos.config.namespace=页面上命名空间的ID.
  2. –>每一个微服务之间相互配置隔离,每一个微服务都创建自己的命名空间,只加载自己命名空间下的所有配置。

默认:public(保留空间),默认新增的所有配置都在public空间。

2、配置集:所有的配置的集合

3、配置集ID:类似文件名。 Data Id:类似文件名

4、配置分组:

  1. 默认所有的配置集都属于:DEFAULT_GROUP
  2. 每个微服务创建自己的命名空间,使用配置分组区分环境,dev,test,prod…

----> 7.配置多个yml、properties

在nacos-config中配置后,在项目的bootstrap.properties中加入:

spring.cloud.nacos.config.extension-configs[0].data-id=***
spring.cloud.nacos.config.extension-configs[0].group=***
spring.cloud.nacos.config.extension-configs[0].refresh=true

14.Gateway网关API配置

---->网关配置example

  1. 创建一个网关微服务gulimall-gateway
  2. 添加gateway依赖

    org.springframework.cloud
    spring-cloud-starter-gateway

  1. 如果公共pom内有数据源依赖,需要在启动类排除数据源自动配置
@EnableDiscoveryClient
@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class})
public class GulimallGatewayApplication {
    public static void main(String[] args) {
        SpringApplication.run(GulimallGatewayApplication.class, args);
    }
}
  1. 在配置中心创建bootstrapt.properties
spring.application.name=gulimall-gateway
spring.cloud.nacos.config.server-addr=****:8848
spring.cloud.nacos.config.namespace=****(nacos的config配置中心的命名空间ID)
  1. 在配置中心创建application.yml
spring:
  cloud:
    gateway:
      routes:
        - id: test_route
          uri: https://www.baidu.com
          predicates:
            - Query=url,baidu
        - id: qq_route
          uri: https://www.qq.com
          predicates:
            - Query=url,qq
  1. 启动gulimall-gateway访问http://****:88/hello?url=baidu,跳转至百度
  2. 启动gulimall-gateway访问http://****:88/hello?url=qq,跳转至腾讯

---->项目网关配置

  1. 登录renren-fast项目,在菜单管理–>新建目录
  2. 新增菜单
  3. 创建前端vue的category.vue文件
  4. 修改static\config\index.js的api接口请求地址为网关地址
  5. renren-fast加入common的pom配置

    com.atguigu.gulimall
    gulimall-common
    0.0.1-SNAPSHOT

  1. 修改renren-fast的renren-fast\src\main\resources\application.yml
spring:
  application:
    name: renren-fast
  cloud:
    nacos:
      discovery:
        server-addr: ****:8848
  1. 修改gulimall-gateway\src\main\resources\application.yml将路由转发至renren-fast微服务

  2. 访问地址:http://localhost:8001/#/login

  3. 统一配置跨域
    ---->
    创建gulimall-gateway\src\main\java\com\atguigu\gulimall\gateway\config\GulimallCorsConfiguration.java
    ---->

package com.**.gulimall.gateway.config;

import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.web.cors.CorsConfiguration;import org.springframework.web.cors.reactive.UrlBasedCorsConfigurationSource;import org.springframework.web.cors.reactive.CorsWebFilter;

@Configurationpublic class GulimallCorsConfiguration {

@Bean
public CorsWebFilter corsWebFilter(){
    UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
    CorsConfiguration corsConfiguration = new CorsConfiguration();

    corsConfiguration.addAllowedHeader("*");
    corsConfiguration.addAllowedMethod("*");
    corsConfiguration.addAllowedOrigin("*");
    corsConfiguration.setAllowCredentials(true);
    source.registerCorsConfiguration("/**",corsConfiguration);
    return new CorsWebFilter(source);
	 	}
}

---->禁用默认跨域

renren-fast\src\main\java\io\renren\config\CorsConfig.java

----> 修改gulimall-gateway\src\main\resources\application.yml将路由转发至gulimall-product微服务

spring:
  cloud:
    gateway:
      routes:
        - id: product_route
        uri: lb://gulimall-product
        predicates:
        - Path=/api/product/**
        filters:
        - RewritePath=/api/(?.*),/$\{segment}

----> 添加配置gulimall-product\src\main\resources\bootstrap.properties

spring.application.name=gulimall-product
spring.cloud.nacos.config.server-addr=***:8848

---->product添加注册发现

server:
  port: 10000


spring:
  datasource:
    driverClassName: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://****:3306/gulimall_pms?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai
    username: root
    password: 123456
  cloud:
    nacos:
      discovery:
        server-addr: ****:8848
  application:
    name: gulimall-product
mybatis-plus:
  mapper-locations: classpath:/mapper/**/*.xml
  global-config:
    db-config:
      id-type: auto

---->启动注册功能

// 添加注册发现功能
@EnableDiscoveryClient
@SpringBootApplication
public class GulimallProductApplication {
    public static void main(String[] args) {
        SpringApplication.run(GulimallProductApplication.class, args);
    }
}

你可能感兴趣的:(谷粒商城,java)