1.安装VBox 虚拟机 一直下一步
坑: 然后将安装目录去环境变量中配置后重启系统.否则vagrant 安装后识别不到vbox的话无法进行 vagrant up 操作
2.安装vagrant 可以快速创建虚拟机
- 首先一直下一步安装好 打开cmd 输入 vagrant 看有没有安装好
- 输入 vagrant init centos/7 初始化一个虚拟机镜像 此时会在当前的盘符出现一个Vagrantfile文件
- 然后需要执行 vagrant up操作 执行下载命令
- 下载完成之后会自动启动 我们可以使用命令 vagrant ssh 用户连接虚拟机
- 连接成功可以 使用命令 woami 查看 当前登录人
- exit 退出连接
-
初始化虚拟机后每次只需要 vagrant up操作就可以启动虚拟机 也可以在vbox中启动
效果图:
-
设置虚拟机和windows互通的ip : 找到Vagrantfile文件夹
解开注释,在cmd中找到IP地址
再修改Vagrantfile的ip地址,这样虚拟机就能和windows互通了 ,
如果不这样做虚拟机中增加一个软件就得修改端口和ip,修改了虚拟机的就不用修改内部软件的了
测试:
在虚拟机目录下输入ip addr ,已经变更为修改后的地址
在windows中 打开ipconfig 找到本机的地址
Docker安装
- 1.改成root权限登入
[chend@c9 ~]$ sudo su
- 2.删除旧版本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
$ sudo yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
- 安装docker的容器和客户端
$ sudo yum install docker-ce docker-ce-cli containerd.io
- 启动docker,设置开启自启
$ sudo systemctl start docker
$ sudo systemctl enable docker -- 自启
- 配置docker的镜像加速(阿里https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors)
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://n9t7riva.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
Docker中安装mysql(也是一个linux)
- 1.启动虚拟机 vagrant up
-
- 连接虚拟机 vagrant ssh
- 3.查看docker镜像 dcoker images
- 4.下载mysql镜像 docker pull mysql:5.7
- 5.启动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 \
-e MYSQL_ROOT_PASSWORD=root \
-d mysql:5.7
解释:
- docker run -p 3306:3306 意思是 linux容器3306 端口映射到mysql容器的3306端口
-
-v 什么的就是挂载点将在linux中生成一个文件夹目录 只要mysql的文件夹产生新的东西linux也有一份更方便查看日志什么的.
6.修改配置文件 修改mysql的字符编码
先在conf目录下 创建cnf目录
vim my.cnf
[client]
default-character-set=utf-8 [mysql]
default-character-set=utf-8 [mysgld] 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
docker restart mysql
Docker 安装redis
下载最新redis
docker pull redis
启动实例 : 这里有一个注意点,先在docker中创建好redis.conf 不然启动后不会自动生成这个文件,挂载完后不会生效
再执行命令
docker run -p 6379:6379 --name redis -v /mydata/redis/data:/data \
-v /mydata/redis/conf/redis.conf:/ect/redis/redis.conf \
-d redis redis-server /ect/redis/redis.conf
开启redis的aof持久化
vi redis.conf 中 设置 appendonly yes 保存 就开启了aof持久化
重启redis
docker restart redis
环境搭建
-
1.jdk版本1.8及以上 JAVA -version
-
2.安装vscode 和需要的插件
-
3.项目启动发现没有node_modules这个文件
执行使用npm cache clean --force 命令 清除这种缓存 再执行npm install
发现又报错什么 no such file or directory, scandir 'E:\XueXi\vue\renren-fast-vue\node_module
使用命令:npm rebuild node-sass
使用 springcloud alibaba的组件 :
文档 https://github.com/alibaba/spring-cloud-alibaba
为什么不使用springcloud自带的组件而使用spring cloud alibaba的组件
使用Nacos Discovery做为注册中心作为服务的注册与发现
步骤:
- 1.首先,修改 pom.xml 文件,引入 Nacos Discovery Starter。
com.alibaba.cloud
spring-cloud-starter-alibaba-nacos-discovery
- 2.在应用的 /src/main/resources/application.properties 配置文件中配置 Nacos Server 地址
spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848
3.在启动类上加注解 @EnableDiscoveryClient开启服务注册与发现功能
-
4.下载Nacos安装包,解压到bin目录的startup.cmd打开
使用Nacos Config做为配置中心统一管理配置
作用: 如果服务多了不需要去修改代码里的配置文件 太麻烦还要重启, 如果使用了阿里的Nacos的配置中心的话 配上自动刷新配置的注解就只需要在Nacos上面修改配置文件就可以了. 如果出现配置中内不一致的情况:
Nacos config的优先级(最高) > bootstrap.properties 配置 > application.properties 配置
- 步骤:
1.添加config依赖
com.alibaba.cloud
spring-cloud-starter-alibaba-nacos-config
- 在应用的 /src/main/resources/bootstrap.properties 配置文件中配置 Nacos Config 元数据
spring.application.name=nacos-config-example #这个名词写自己模块的名字
spring.cloud.nacos.config.server-addr=127.0.0.1:8848 #指向Nacos的地址
3.使用 @RefreshScope 开启 动态获取并刷新配置
- 使用 @Value注解, 拿配置文件的数据
@Value("${coupon.user}")
private String user;
@Value("${coupon.age}")
private Integer age;
5.在Nacos 上新增配置,
6.细节
-
命名空间:
配置隔离:默认public(保留空间), 我们可以配置读取其他指定的命名空间
(1). 开发, 生产,测试 :利用命名空间做环境隔离 例如dev就是测试环境
需要在bootstrap.properties中指定名空间id
#指定需要读取的命名空间ID
spring.cloud.nacos.config.namespace=28685594-a598-4609-af21-589ac2d33cde
(2).基于微服务进行隔离,每一个微服务对应一个命名空间进行隔离.
(3).可以设置配置组,默认是DEFAULT_GROUP组 ,可以在新建配置的时候修改配置组好处是可以在不同时候选择不同配置组进行环境使用
bootstrap.properties中使用
spring.cloud.nacos.config.group=1111 #组名
使用Feign做远程调用
使用springcloud getway做api网关
流程: 首先请求进来或访问我们的网关服务,网关利用断言判断是不是符合我们的路由规则,如果符合就放行,经过一系列的filter.
示例:
spring:
cloud:
gateway:
routes: #路由规则
- id: qq_routs #路由规则名字
uri: https://www.qq.com #成功路径
predicates:
- Query=url,qq
- id: baidu_routs1
uri: https://www.baidu.com
predicates:
- Query=url,baidu #条件断言成功路由到指定位置
解决跨域问题说明浏览器向后台服务器发送了一个预检请求,得到允许跨域才会再次发送真实请求
-
1,跨域问题流程 如果报options
- 2.解决方式
第一种使用nigux 的反向代理
第二种 使用 springboot中的CorsWebFilter 接口进行跨域配置
@Configuration //这是一个配置类
public class GulimallCorsfiguration {
//springboot自带的跨域filter
@Bean
public CorsWebFilter corsWebFilter(){
//使用响应式包下的类 reactive
UrlBasedCorsConfigurationSource Source = new UrlBasedCorsConfigurationSource();
CorsConfiguration configuration = new CorsConfiguration();
//配置跨域信息
configuration.addAllowedHeader("*"); //允许那些头
configuration.addAllowedMethod("*"); //允许那些请求方式
configuration.addAllowedOrigin("*"); //允许所有请求来源
configuration.setAllowCredentials(true); //是否允许携带cookie信息进行跨域,否则会丢失cookie信息
Source.registerCorsConfiguration("/**",configuration); //任意路径下都要跨域
return new CorsWebFilter(Source);
}
}