商城项目02_环境搭建安装VAGRANTDOCKERMYSQLREDIS从0搭建各个微服务项目数据库初始化安装NGINX
Posted 所得皆惊喜
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了商城项目02_环境搭建安装VAGRANTDOCKERMYSQLREDIS从0搭建各个微服务项目数据库初始化安装NGINX相关的知识,希望对你有一定的参考价值。
文章目录
- ①. virtualBox - 管理虚拟机
- ②. vagrant - 安装虚拟机
- ③. 虚拟机安装 - docker
- ④. docker上安装mysql
- ⑤. docker上安装redis
- ⑥. 从gitee初始化一个微服务
- ⑦. 从0搭建各个微服务项目
- ⑧. 数据库坏境初始化
- ⑨. 高级篇 - 安装Nginx
①. virtualBox - 管理虚拟机
-
①. 下载、安装virtualBox:https://www.virtualbox.org/ ,要开启cpu虚拟化(6.0.12)
-
②. 安装virtualBox需要开启虚拟化、图解(系统开启虚拟机默认)
-
③. 百度云地址:
链接:https://pan.baidu.com/s/1MuxoSD53YW30pnj-egY71Q
提取码:1234
②. vagrant - 安装虚拟机
- ①. 下载和安装vagrant
- Vagrant下载
- vagrant官网镜像
- 安装vagrant后,进入cmd,我们敲vagrent有信息就证明安装成功了
- 注意:VirualBox会与包括带不限于如下软件冲突,需要卸载这些软件,然后重启电脑。冲突的软件:红蜘蛛、360、净网大师(有可能)等
-
②. 打开window cmd窗口,运行vagrant init centos/7,即可初始化一个centos7系统,运行vagrant up即可启动虚拟机。系统root用户的密码是vagrant(会出现很慢下载的清空)
(下好了vargant,如果安装centos7很慢,可以用下面的连接替换初始化的那一步:vagrant init centos7 https://mirrors.ustc.edu.cn/centos-cloud/centos/7/vagrant/x86_64/images/CentOS-7.box。然后在执行vagrant up,就很快了,这个是国内的镜像地址。vagrant up,中间执行出现异常的话,多试几次) -
③. 关于vagrant命令
(注意:下次使用也可以直接vagrant up直接启动,但要确保当前目录在C:/用户/ 文件夹下,他下面有一个Vagrantfile,不过我们也可以配置环境变量)
(1). 下载cenots7:vagrant init centos/7
(2). 启动虚拟机:vagrant up
(3). 连接虚拟机:vagrant ssh
(4). 重新加载:vagrant reload
(5). 查看ip:ip addr (linux)
(6). 查看当前用户: whoami (linux)
- ④. 虚拟机网络设置(实现虚拟机和本地的window ip互通)
- Virtualbox使用的网络方式是网络地址转换NAT(端口转发),如果其它主机要访问虚拟机,必须由windows端口如3333转发给虚拟机端口如3306。这样每在linux里安一个软件都要进行端口映射,不方便,(也可以在virualBox里挨个设置)。我们想要给虚拟机一个固定的ip地址,windows和虚拟机可以互相ping通)
- 编辑Vagrantfile文件,修改其中的config.vm.network “private_network”,ip:“192.168.56.10”
3. 在虚拟机下和window下互相ping各自的ip
- ⑤. 使用SSH免密登录(以后可以使用提供的ssh连接工具进行连接)
Vagrant ssh进去系统之后
vi /etc/ssh/sshd_config
修改 PasswordAuthentication 将no改成yes
重启服务 service sshd restart
这样以后我们就可以使用xshell进行免密登录了
- ⑥. 如果出现虚拟机都ping不通baidu的情况(我的本地坏境是可以ping通的)
③. 虚拟机安装 - docker
- ①. 卸载之前的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 \\
device-mapper-persistent-data \\
lvm2
- ③. 告诉linux中docker的地址(配置镜像)
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
# 设置开机自启动
sudo systemctl enable docker
- ⑤. 配置镜像加速
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
"registry-mirrors": ["https://opvvjpc5.mirror.aliyuncs.com"]
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
- ⑥. docker命令:
(1). 查看docker的版本:docker -v
(2). 设置开机自启动:sudo systemctl enable docker
(3). 查看镜像:sudo docker images
(4). 设置docker里面容器自启动:sudo docker update redis --restart=always
④. docker上安装mysql
- ①. 拉取mysql的镜像
sudo docker pull mysql:5.7
- ②. 创建mysql容器并开启
-p 3306:3306:将宿主机的3306端口映射到容器的3306端口
-v /mydata/mysql/log:/var/log/mysql:在宿主机下创建log文件夹映射到容器的mysql下
-v /mydata/mysql/data:/var/lib/mysql :将配置文件夹挂载到主机
-v /mydata/mysql/conf:/etc/mysql :将配置问价挂载到主机
-e MYSQL_ROOT_PASSWORD=root :初始化root用户的密码
-d 表示后台运行
# --name指定容器名字 -v目录挂载 -p指定端口映射 -e设置mysql参数 -d后台运行
sudo 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
- ③. 查看mysql是否启动,并进入终端
docker ps
docker exec -it mysql/容器ID /bin/bash 使用守护式进程
- ④. 修改mysql的统一编码为utf-8
# 因为有目录映射,所以我们可以直接在镜像外执行
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
docker restart mysql
- ⑤. 连接mysql进行测试:
- ⑥. 设置mysql开机自启 : docker update mysql --restart=always
⑤. docker上安装redis
- ①. 安装镜像
sudo docker pull redis
- ②. 有坑
(docker run -p…有坑:如果直接挂载的话docker会以为挂载的是一个目录,在虚拟机中我们先创建一个文件然后再挂载)
# 在虚拟机中
mkdir -p /mydata/redis/conf
touch /mydata/redis/conf/redis.conf
- ③. 运行redis
- -d redis redis-server /etc/redis/redis.conf:在后台启动redis服务,以etc/redis/redis.conf启动都会读取这个文件
- 注意:/etc/redis/redis.conf,只有/etc/redis没有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 \\
# 下面这几句话的意思是,每次启动的时候都使用的/etc/redis/redis.conf的配置启动的
-d redis redis-server /etc/redis/redis.conf
- ④. 直接进去redis客户端
docker exec -it redis redis-cli
[root@localhost vagrant]# docker exec -it redis redis-cli
127.0.0.1:6379> set name tang
OK
127.0.0.1:6379> get name
"tang"
127.0.0.1:6379>
- ⑤. 配置持久化、配置密码(选配)
vim /mydata/redis/conf/redis.conf
# 插入下面内容
appendonly yes
保存
vim /mydata/redis/conf/redis.conf
# 插入下面内容
requirepass root
保存
- ⑥. 重启redis
docker restart redis
- ⑦. 测试
- ⑧. 设置redis开机自启动:sudo docker update redis --restart=always
⑥. 从gitee初始化一个微服务
- ①. 设置模板也要勾上
- ②. 创建好之后如图所示
- ③. 在IDEA中导入项目
⑦. 从0搭建各个微服务项目
-
①. IDEA然后New Module–Spring Initializer–com.atguigu.gulimall,Artifact填gulimall-product。Next - 选择web(web开发),springcloud routing里选中openFeign(rpc调用)
-
②. 依次创建出以下服务
(商品服务product、存储服务ware、订单服务order、优惠券服务coupon、用户服务member) -
③. 共同点
导入web和openFeign
group:com.atguigu.gulimall
Artifact:gulimall-XXX
每一个服务,包名com.atguigu.gulimall.XXXproduct/order/ware/coupon/member
模块名:gulimall-XXX -
④. 然后右下角显示了springboot的service选项,选择它
-
⑤. 从某个项目粘贴个pom.xml粘贴到项目目录,修改它
<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.atguigu.gulimall</groupId>
<artifactId>gulimall</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>gulimall</name>
<description>聚合服务</description>
<packaging>pom</packaging>
<modules>
<module>gulimall-product</module>
<module>gulimall-ware</module>
<module>gulimall-order</module>
<module>gulimall-coupon</module>
<module>gulimall-member</module>
</modules>
</project>
- ⑥. 修改总项目的.gitignore,把小项目里的垃圾文件在提交的时候忽略掉,比如HELP.md
target/
pom.xml.tag
pom.xml.releaseBackup
pom.xml.versionsBackup
pom.xml.next
release.properties
dependency-reduced-pom.xml
buildNumber.properties
.mvn/timing.properties
.mvn/wrapper/maven-wrapper.jar
**/mvnw
**/mvnw.cmd
**/.mvn
**/target/
.idea
**/.gitignore
-
⑦. 在maven窗口刷新,并点击+号,找到刚才的pom.xml添加进来,发现多了个root。这样比如运行root的clean命令,其他项目也一起clean了
-
⑧. 提交项目到git(初始化项目)
⑧. 数据库坏境初始化
- ①. 进入数据库工具,进行一个连接测试
- ②. 依次创建出如下的数据库脚本
(utf-8编码可能2个字节、3个字节、4个字节的字符,但是MySQL的utf8编码只支持3字节的数据,而移动端的表情数据是4个字节的字符。如果直接往采用utf-8编码的数据库中插入表情数据,java程序中将报SQL异常)
gulimall_oms
gulimall_pms
gulimall_sms
gulimall_ums
gulimall_wms
⑨. 高级篇 - 安装nginx
- ①. 随便启动一个nginx实例,只是为了复制出配置
docker run -p80:80 --name nginx -d nginx:1.10
- ②. 将容器内的配置文件拷贝到/mydata/nginx/conf/ 下
mkdir -p /mydata/nginx/html
mkdir -p /mydata/nginx/logs
# 这个命令是在 /mydata/ 下执行的
docker container cp nginx:/etc/nginx .
# 别忘了后面有个点
# 由于拷贝完成后会在config中存在一个nginx文件夹,所以需要将它的内容移动到conf中
# 在mydata/nginx/下创建一个conf文件夹
mkdir conf
[root@localhost mydata]# mv nginx conf
[root@localhost mydata]# mkdir nginx
[root@localhost mydata]# mv conf nginx/
[root@localhost mydata]# ls
elasticsearch mysql nginx redis
[root@localhost mydata]# cd nginx/
[root@localhost nginx]# ls
conf
[root@localhost nginx]# mkdir -p /mydata/nginx/html
[root@localhost nginx]# mkdir -p /mydata/nginx/logs
[root@localhost nginx]# ls
conf html logs
- ③. 终止原容器:
docker stop nginx
- ④. 执行命令删除原容器:
docker rm nginx
- ⑤. 建新的Nginx,执行以下命令
docker run -p 80:80 --name nginx \\
-v /mydata/nginx/html:/usr/share/nginx/html \\
-v /mydata/nginx/logs:/var/log/nginx \\
-v /mydata/nginx/conf/:/etc/nginx \\
-d nginx:1.10
- ⑥. 设置开机启动nginx
docker update nginx --restart=always
- ⑦. 创建“/mydata/nginx/html/index.html”文件,测试是否能够正常访问
echo '<h2>hello nginx!</h2>' >index.html
- ⑧. 访问:http://nginx所在主机的IP:80/index.html
以上是关于商城项目02_环境搭建安装VAGRANTDOCKERMYSQLREDIS从0搭建各个微服务项目数据库初始化安装NGINX的主要内容,如果未能解决你的问题,请参考以下文章
商城项目02_环境搭建安装VAGRANTDOCKERMYSQLREDIS从0搭建各个微服务项目数据库初始化安装NGINX