目录
- 一、环境搭建
- 1、安装linux虚拟机
- 1)下载&安装 VirtualBox https://www.virtualbox.org/,要开启 CPU 虚拟化
- 2)虚拟机的网络设置
- 3)虚拟机允许使用账号密码登录
- 4)VirtualBox冲突
- 5)修改 linux 的 yum 源
- 2、安装docker
- 1、卸载系统之前的 docker
- 2、安装 Docker-CE(社区版)
- 3、启动docker
- 4、设置docker开机自启
- 5、测试 docker 常用命令,注意切换到 root 用户下
- 6、配置 docker 镜像加速
- 3、docker 安装 mysql
- 1、下载镜像文件
- 2、创建实例并启动
- 3、通过容器的 mysql 命令行工具连接
- 4、设置 root 远程访问
- 5、进入容器文件系统
- 4、docker 安装 redis
- 1、下载镜像文件
- 2、创建实例并启动(需先在linux中创建redis.conf文件,使可以映射,保证挂载的时候有配置文件)
- 3、使用 redis 镜像执行 redis-cli 命令连接
- 5、开发环境统一
- 1、Maven(修改maven的setting.xml文件)
- 2、Idea&VsCode&webstorm
- 3、安装配置 git
- 6、创建微服务项目
- 1、从 gitee 初始化一个项目
- 2、商品服务、仓储服务、订单服务、优惠券服务、用户服务
- 3、将zhenyanmall作为总项目,随便从子项目里面拷贝一个pom.xml到外面,修改配置
- 4、添加.gitignore忽略版本管理文件
- 5、idea安装gitee插件可以将代码提交到gitee。
- 7、数据库初始化
- 8、人人开源搭建后台管理系统
- 1、将renren-fast、renren-fast-vue 克隆下来
- 2、将renren-fast-vue中的.git文件删掉,用webstorm打开。
- 1、安装node.js和下载依赖
- 2、启动前端项目
- 3、使用人人开源的代码生成器为每一个微服务生成增删改查代码
- 4、为每个微服务生成代码和配置并解决报错
- 1.启动时no active profile set, falling back to default profiles: default
- 2.多profile文件形式:
- 3.多profile配置激活
- 3.1通过properties文件指定
- 3.2通过yml文档块指定
- 3.3通过configuration中的Program agruments指定
- 3.4通过configuration中的VM options指定
- 3.5通过configuration中的Enviroment variables指定
- 4.配置优先顺序
一、环境搭建
1、安装linux虚拟机
1)下载&安装 VirtualBox https://www.virtualbox.org/,要开启 CPU 虚拟化
下载&安装 Vagrant
https://app.vagrantup.com/boxes/search Vagrant 官方镜像仓库
https://www.vagrantup.com/downloads.html Vagrant 下载
在安装的目录下,打开 window cmd 窗口,运行 Vagrant init centos/7,即可初始化一个 centos7 系统
运行 vagrant up 即可启动虚拟机。系统 root 用户的密码是 vagrant
vagrant 其他常用命令
vagrant ssh:自动使用 vagrant 用户连接虚拟机。
vagrant upload source [destination] [name|id]:上传文件
https://www.vagrantup.com/docs/cli/init.html Vagrant 命令行
2)虚拟机的网络设置
默认虚拟机的 ip 地址不是固定 ip,开发不方便
修改 Vagrantfile文件
config.vm.network “private_network”, ip: “192.168.56.10”
改为这个指定的子网地址(使用windows的网段,不改变windows的网段,比较熟悉的可以自己改网段,也要改windows的网段)
重新使用 vagrant up 启动机器即可。然后再 vagrant ssh 连接机器
3)虚拟机允许使用账号密码登录
默认只允许 ssh 登录方式,为了后来操作方便,文件上传等,我们可以配置允许账
号密码登录
Vagrant ssh 进去系统之后 (切换root账户)
vi /etc/ssh/sshd_config
修改 PasswordAuthentication yes/no
重启服务 service sshd restart
以后可以使用提供的 ssh 连接工具直接连接
4)VirtualBox冲突
注意:VirtualBox 会与包括但不限于如下软件冲突,需要卸载这些软件,然后重启电脑;
冲突的软件:红蜘蛛,360,净网大师(有可能)等
5)修改 linux 的 yum 源
修改 linux 的 yum 源(可不修改,网速较慢,如果禁用,需要修改yum源)
1)、备份原 yum 源
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
2)、使用新 yum 源
curl -o /etc/yum.repos.d/CentOS-Base.repo
http://mirrors.163.com/.help/CentOS7-Base-163.repo
3)、生成缓存
yum makecache
2、安装docker
Docker 安装文档:https://docs.docker.com/install/linux/docker-ce/centos/
docker 镜像网站:docker hub
目前是:https://hub-stage.docker.com/
以下是从docker官网文档拷贝的安装流程,安装社区版即可,公司可使用企业版。
1、卸载系统之前的 docker
sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
2、安装 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
3、启动docker
sudo systemctl start docker
4、设置docker开机自启
sudo systemctl enable docker
5、测试 docker 常用命令,注意切换到 root 用户下
https://docs.docker.com/engine/reference/commandline/docker/
查看docker目前镜像
sudo docker images
6、配置 docker 镜像加速
去阿里云官方网站去查找:阿里云官网-》登录-》控制台-》左侧导航栏-》搜索镜像-》进入容器镜像服务 ACR-》镜像加速器-》centos
阿里云,容器镜像服务
针对 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 重启docker的后台线程
sudo systemctl restart docker 重启docker的服务
3、docker 安装 mysql
1、下载镜像文件
sudo docker pull mysql:5.7
2、创建实例并启动
虚拟机root的密码也是vagrant,在root的账号下启动:
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 用户的密码
-d 以后台方式运行,以哪个镜像启动容器
docker ps 查看正在运行的容器
容器与容器之间是相互隔离的,每一个容器都是一个完整的运行环境。
为了不每次查看容器中的日志,因此将容器中的日志挂载linux中
进入mysql容器进行验证:
docker exec -it container ID/Names /bin/bash
docker exec -it mysql /bin/bash
发现就是一个完整的linux目录结构。
whereis mysql
MySQL 配置(将以下内容拷贝到my.cnf中即可,拷贝之后注意一下,配置换行和空格,要不然重启不成功)
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:跳过域名解析
重启mysql,进入容器内部,看下配置文件是否在容器内部生效:
3、通过容器的 mysql 命令行工具连接
docker exec -it mysql mysql -uroot -proot
4、设置 root 远程访问
grant all privileges on . to ‘root’@‘%’ identified by ‘root’ with grant option;
flush privileges;
5、进入容器文件系统
docker exec -it mysql /bin/bash
4、docker 安装 redis
1、下载镜像文件
docker pull redis
2、创建实例并启动(需先在linux中创建redis.conf文件,使可以映射,保证挂载的时候有配置文件)
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
3、使用 redis 镜像执行 redis-cli 命令连接
docker exec -it redis redis-cli
5、开发环境统一
1、Maven(修改maven的setting.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>
2、Idea&VsCode&webstorm
idea 安装 lombok、mybatisx 插件
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 —— 中文语言包
3、安装配置 git
1、下载 git;https://git-scm.com
2、配置 git,进入 git bash
# 配置用户名
git config --global user.name "username" //(名字)
# 配置邮箱
git config --global user.email "username@email.com" //(注册账号时用的邮箱)
3、配置 ssh 免密登录
https://gitee.com/help/articles/4181#article-header0
进入 git bash;使用:ssh-keygen -t rsa -C "xxxxx@xxxxx.com"命令。 连续三次回车。
一般用户目录下会有
或者 cat ~/.ssh/id_rsa.pub
登录进入 gitee,在设置里面找到 SSH KEY 将.pub 文件的内容粘贴进去
使用 ssh -T git@gitee.com 测试是否成功即可
Git+码云教程 https://gitee.com/help/articles/4104
6、创建微服务项目
1、从 gitee 初始化一个项目
使用idea进行版本控制下载该项目。
使用spring 模板创建商品模块,项目是一个微服务,项目需要导入两个必要的两个组件,一个是web中的Spring Web,另一个是Spring Cloud Rounting 中的 OpenFeign进行微服务之间互相调用
2、商品服务、仓储服务、订单服务、优惠券服务、用户服务
共同:
1)、web、openfeign
2)、每一个服务,包名 com.wxn.zhenyanmall.xxx(product/order/ware/coupon/member)
3)、模块名:zhenyanmall-coupon
3、将zhenyanmall作为总项目,随便从子项目里面拷贝一个pom.xml到外面,修改配置
4、添加.gitignore忽略版本管理文件
5、idea安装gitee插件可以将代码提交到gitee。
7、数据库初始化
所有的表设计,都不建立外键,因为表数据量太多,做外键关联是一个非常耗性能的操作,没插入、删除、修改一条数据,数据库都要对外键进行检查,保证数据库的一致性和完整性。
用powerDesigner打开数据库,拷贝出sql语句,建库建表。
连接虚拟机中的数据库,将mysql和redis设置为虚拟机重启,mysql和redis也自动重启,在实际项目中也一样,服务器重启,或者mysql和redis挂掉,都要自动重启,如果无法重启,则需要报警,人工手动处理。
虚拟机配置重启命令:
sudo docker update mysql --restart=always
sudo docker update redis --restart=always
创建数据库,所有的都是utf-8。
执行建表语句,建表语句可在资源下载里面获取。
8、人人开源搭建后台管理系统
按照微服务划分,我们需要创建一个后台管理系统,来操作后台管理的各个功能,后台管理系统也是前后分离的,需要编写前端代码,如果从头到尾搭建一个后台管理系统,来写前端和后端,是一个非常耗时的工作,所以我们可以用一个搭建好的脚手架工程,我们稍加改造就能作为一个后台管理系统让我们来使用,那我们就可以使用码云上的人人开源项目 。
进到主页
renren-fast是一个后台管理系统,renren-fast-vue是后台管理系统的前端项目,两个配套起来作为一个前后端分离的后台管理系统。
renren-security也是后台管理系统,做的不是前后分离的,是将我们的页面使用framemark写在一个工程里面。
renren-generator是一个代码生成器,可以帮我们在线生成entity、xml、dao、service、vue、sql代码,减少70%以上的开发任务。
1、将renren-fast、renren-fast-vue 克隆下来
将renren-fast中的.git文件删掉,复制到我们的项目里面,也加入到module里面。
将renren-fast的需要的库表建好,我们用的是mysql作为业务库,所以只需要mysql的脚本即可,库命名为admin
然后表创建好之后,需要在renren-fast修改一些配置文件
application.yml:指定了我们的端口号、访问项目名地址、有没有使用redis.
我们主要修改数据库,主要使用开发环境,也就是dev,打开application-dev.yml配置文件
修改数据库的地址,库名、账号、密码
然后启动renren-fast后台
2、将renren-fast-vue中的.git文件删掉,用webstorm打开。
安装前端开发需要依赖的环境。
1、安装node.js和下载依赖
Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境。
http://nodejs.cn/api/
我们关注与 node.js 的 npm 功能就行;
NPM 是随同 NodeJS 一起安装的包管理工具,JavaScript-NPM,Java-Maven;
1)、官网下载安装 node.js,并使用 node -v 检查版本
2)、配置 npm 使用淘宝镜像
npm config set registry http://registry.npm.taobao.org/
3)、大家如果 npm install 安装依赖出现 chromedriver 之类问题,先在项目里运行下面命令
npm install chromedriver --chromedriver_cdnurl=http://cdn.npm.taobao.org/dist/chromedriver
然后再运行 npm install 下载依赖
2、启动前端项目
npm run dev
默认账号密码:admin admin
搭建前后端项目,并且已经联调通过,下面使用人人开源的代码生成器 renren-generator为每一个微服务生成增删改查代码。
3、使用人人开源的代码生成器为每一个微服务生成增删改查代码
1)下载代码生成器
git clone https://gitee.com/renrenio/renren-generator.git
2)删除.git
3)拷贝到项目中
4)加入module里面
5)修改application.yml,数据库连接信息(需要生成哪个数据库代码,则连接哪个数据库)
6)修改生成的模块名、包名、作者、邮箱、表名前缀
7)启动代码生成器项目
8)访问http://localhost:80
9)选择对应的表,生成代码
10)生成压缩包
11)解压文件,可以看到生成的文件
12)将文件拷贝到对应模块,就是main代码拷贝过去
13)修改报错文件
在逆向生成的代码中,controller、service、实体类、注解、公共模块都有报错。
创建一个common,将微服务需要的每一个东西,都放到里面
14)每个模块都配置一下依赖zhenyanmall-common
15)在zhenyanmall-common添加依赖和工具类解决报错
mybatis-plus 解决dao层报错
lombok 解决entry中的Data注解报错 @Data是给实体类属性自动添加getter和setter方法
可以从https://mvnrepository.com/ 查找依赖
比如httpcomponents
16)使用逆向工程的时候,可以修改模板
可以去掉RequiresPermissions注解
再重新生成Controller,将Controller替换掉,(在第一次生成的时候就可以注释掉)
17)导入mysql驱动
18)解决common报错
删除XssHttpServletRequestWrapper (防止脚本攻击) 使用spring security解决
19)在product配置数据源连接
创建application.yml文件
20)配置Mybatis-Plus
21)测试商品的增删改查
4、为每个微服务生成代码和配置并解决报错
配置完成后,启动每个项目,然后调用一下接口,看看是否能调用成功。
properties和yml同时存在,properties先加载,yml后加载。
如果无法启动,说明pom依赖添加有问题,需要认真检查,最可能的是。
检查是否正常退出
控制台输出 :Process finished with exit code 0 正常退出添加一下依赖即可
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
如果是端口冲突,需要重新配置一下端口
1.启动时no active profile set, falling back to default profiles: default
在新启动一个spring boot项目时候会发现这样一条信息no active profile set, falling back to default profiles: default。为什么会出现这样的提示呢,我们先来看看profile,profile是Spring对不同环境提供不同配置功能的支持,可以通过激活、 指定参数等方式快速切换环境Profile。举个例子我们在开发,测试,生产用到的配置是不同的,那么通过profile就可以帮我们指定对应的环境用对应的配置,那么如何来指定呢?
2.多profile文件形式:
– 格式:application-{profile}.properties/yml: application-dev.properties、application-prod.properties .我们可以通过application-{profile}.properties/yml的方式指定并激活不同的profile配置。
3.多profile配置激活
先给出我们需要配置的文件目录,这里举例是yml文件,如下图所示。然后具体有以下5种方法可以来指定并激活我们需要的配置。
3.1通过properties文件指定
比如我们要使用application-dev.yml的配置,那么在application.properties中写上spring.profiles.active=dev,那么我们的application-dev.yml的配置就被激活了,那么如何测试结果呢,很简单,我们在application-dev.yml指定服务启动端口,启动spring boot 服务,看看是不是8081端口就好了。
可以看到The following profiles are active: dev,然后启动的端口是8081说明我们想要的配置生效了,指定其他配置比如test,只要修改spring.profiles.active=test。
3.2通过yml文档块指定
在yml配置文件中通过—的形式来划分文档块,通过图中active: xx (注意中间有个空格,这是yml的基本格式)指定的值来激活相应的配置文件。
比如active: dev,那么application-dev.yml这个配置文件被激活。
3.3通过configuration中的Program agruments指定
在configuration中的program arguments 中写入–spring.profiles.active=dev。
3.4通过configuration中的VM options指定
在configuration中的VM options配置项中填写:-Dspring.profiles.active=dev.
3.5通过configuration中的Enviroment variables指定
在configuration中的Enviroment variables 配置项上写入:spring.profiles.active=dev
4.配置优先顺序
program arguments > VM options > Enviroment variables >proties 文件> yml文件