谷粒商城-基礎篇筆記


尚硅谷谷粒商城

MAC環境搭建

1. 軟件准備

下載、安裝Virtual Box https://www.virtualbox.org/wiki/Downloads

下載、安裝Vagrant https://www.vagrantup.com/downloads.html

2. vagrant:查看是否安裝成功

img

3. vagrant init centos/7:初始化

這里有各種 Linux 鏡像 https://app.vagrantup.com/boxes/search,選擇自己需要的版本下載即可

初始化后,在當前用戶文件夾下會有一個 Vagrantfile 文件

img

4. vagrant up:啟動虛擬機

(第一次運行會下載)

vagrant 下載很慢

使用迅雷下載,然后執行

vagrant box add centos/7 /Users/taylor/personal/setups/CentOS-7-x86_64-Vagrant-1905_01.VirtualBox.box

然后再執行 vagrant up即可,啟動完成看到下面的內容,就可以愉快的vagrant ssh登錄了

image-20200404210510030

5.修改VB網絡地址

  1. 創建一個網卡

image-20200404210656606

  1. 修改Vagrantfile,使在一個網段,比如改成56.10

image-20200404210744952

然后宿主機和虛擬機互ping通即可

ping -c 3 xxx.xxx.xxx.xxx

6.docker 安裝mysql

sudo docker pull mysql:5.7

  docker run -p 3306:3306 --name mysql \
  -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 \
  -d mysql:5.7
[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

7.docker 安裝redis

docker pull redis

mkdir -p /mydata/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

開發環境

maven配置

搭建工程

添加模塊

配置.ignore

image-20200405141657464

數據庫設計

Mac上的數據庫設計工具

DBeaver

Docker上開機啟動

sudo docker update mysql --restart=always

renren-fast數據庫

前端環境准備

安裝nodejs

image-20200405161809174

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

image-20200405161858004

報錯

gyp: No Xcode or CLT version detected!
gyp ERR! configure error 
gyp ERR! stack Error: `gyp` failed with exit code: 1
gyp ERR! stack     at ChildProcess.onCpExit (/Users/arproject/renren-fast-vue/node_modules/node-gyp/lib/configure.js:345:16)
gyp ERR! stack     at ChildProcess.emit (events.js:311:20)
gyp ERR! stack     at Process.ChildProcess._handle.onexit (internal/child_process.js:275:12)
gyp ERR! System Darwin 19.3.0
gyp ERR! command "/usr/local/bin/node" "/Users/arproject/renren-fast-vue/node_modules/node-gyp/bin/node-gyp.js" "rebuild" "--verbose" "--libsass_ext=" "--libsass_cflags=" "--libsass_ldflags=" "--libsass_library="
gyp ERR! cwd /Users/arproject/renren-fast-vue/node_modules/node-sass
gyp ERR! node -v v12.16.1
gyp ERR! node-gyp -v v3.8.0
gyp ERR! not ok 

https://zhuanlan.zhihu.com/p/105526835

1.安裝xcode

2.刪除node_modules

3.刪除高版本nodejs,安裝10.X版本,10.19.0是沒問題的

sudo rm -rf /usr/local/{bin/{node,npm},lib/node_modules/npm,lib/node,share/man//node.}

4.npm install chromedriver --chromedriver_cdnurl=http://cdn.npm.taobao.org/dist/chromedriver

5.npm install

代碼生成器

80端口被占用

sudo lsof -n -P | grep :80

sudo apachectl stop

谷粒框架

image-20200406011419045

Nacos配置啟動

報錯

https://juejin.im/entry/5cd39b4de51d453a59418b8e

刪除報錯信息中的’/data/nacos/data/derby-data’目錄,重新啟動。

注冊中心 服務發現

1.添加pom依賴

放在gulimall-common中,作為公共服務

<!--服務注冊/發現-->
<dependency>
	<groupId>com.alibaba.cloud</groupId>
	<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
2.在application.yml中添加nacos配置

image-20200406172113014

3.將服務注冊的注冊中心

image-20200406172249856

配置中心

com.atguigu.gulimall.coupon.GulimallCouponApplication

 * 一、如何使用nacos作為配置中心統一管理配置
 * 1.在common中引入依賴
 *    <dependency>
*         <groupId>com.alibaba.cloud</groupId>
*         <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
 *    </dependency>
 * 2.創建配置文件 bootstrap.properties
 * 	spring.application.name=gulimall-coupon
 *  spring.cloud.nacos.config.server-addr=192.168.0.100:8848
 * 3.在nacos客戶端,給配置中心添加一個數據集
 *  gulimall-coupon.properties
 *  格式為 應用名稱.properties
 *
 * 4.在 應用名稱.properties中添加所需要的配置
 * 5.動態獲取配置
 * 	添加注解
 * 	@RefreshScope:動態刷新並獲取配置
 * 	@Value("${配置項名稱}")
 *
 * 	如果配置中心和當前應用的配置文件中配置了相同的配置項,優先使用配置中心的配置
 *
 * 二、細節
 * 1.命名空間:作用 做配置隔離
 *   默認:public(保留空間);默認新增的所有配置都在public空間內
 *   ①開發、測試、生產 分別配置
 *   在bootstrap.properties里配置想要使用的命名空間的配置項
 *   spring.cloud.nacos.config.namespace=8a4f21ba-3ef2-4754-8b2f-ef3b3c2ed8c8
 *   ②每一個微服務之間相互隔離,每一個微服務創建自己的命名空間,只加載自己命名空間下的所有配置
 * 2.配置集
 * 3.配置集ID
 * 4.配置分組
 *
 * 一般實踐:
 * 每個微服務創建自己的命名空間,使用配置分區區分環境:dev、test、prod
命名空間
  1. 在nacos界面添加新命名空間
  2. 默認使用public命名空間
  3. 修改使用命名空間

image-20200406181100706

image-20200406181128637

Feign遠程調用

com.atguigu.gulimall.member.GulimallMemberApplication

image-20200406175610142

調用方

com.atguigu.gulimall.member.controller.MemberController

image-20200406175658034

image-20200406172954644

image-20200406175250497

服務方

com.atguigu.gulimall.coupon.controller.CouponController

image-20200406175829343

網關

性能對比

image-20200406191638203

引入common時排除數據庫相關

@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class})

報錯

spring initializr error

取消代理即可

image-20200406221702649

包沖突

image-20200406221402005

網上查是gateway和web包沖突,解決方案:common的pom替換掉

<?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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <artifactId>gulimall</artifactId>
        <groupId>com.atguigu.gulimall</groupId>
        <version>0.0.1-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>gulimall-common</artifactId>
    <description>每一個微服務公共的依賴,bean,工具類等</description>

    <dependencies>
        <!--        mybatis-plus-->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.2.0</version>
        </dependency>

        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.8</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/org.apache.httpcomponents/httpcore -->
        <dependency>
            <groupId>org.apache.httpcomponents</groupId>
            <artifactId>httpcore</artifactId>
            <version>4.4.12</version>
        </dependency>


        <dependency>
            <groupId>commons-lang</groupId>
            <artifactId>commons-lang</artifactId>
            <version>2.6</version>
        </dependency>

        <!--    導入mysql驅動    -->
        <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.17</version>
        </dependency>

        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>servlet-api</artifactId>
            <version>2.5</version>
            <scope>provided</scope>
        </dependency>

        <!--        服務注冊/發現-->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>

        <!--        配置中心來做配置管理-->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
        </dependency>

        <dependency>
            <groupId>javax.validation</groupId>
            <artifactId>validation-api</artifactId>
            <version>2.0.1.Final</version>
        </dependency>


    </dependencies>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-alibaba-dependencies</artifactId>
                <version>2.1.0.RELEASE</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>


</project>

路由示例

image-20200407002155467

前端學習

image-20200407002329992

image-20200407002343508

image-20200407002421689

image-20200407002438242

image-20200407002507460

網關路由與路徑重寫

跨域問題

端口及之前的內容【協議、域名、端口】有任何不同,就不允許獲取數據

image-20200407003836180

解決方案

通過Nginx反向代理,轉化為同一個域

image-20200407004335000

通過gateway的filter

image-20200407005119095


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM