商城项目02_环境搭建、安装VAGRANT、DOCKER、MYSQL、REDIS、从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-resolvedocker 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.XXX{product/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_环境搭建、安装VAGRANT、DOCKER、MYSQL、REDIS、从0搭建各个微服务项目、数据库初始化、安装NGINX相关推荐
- IDEA集成Docker插件实现一键自动打包部署微服务项目
一. 前言 大家在自己玩微服务项目的时候,动辄十几个服务,每次修改逐一部署繁琐不说也会浪费越来越多时间,所以本篇整理通过一次性配置实现一键部署微服务,实现真正所谓的一劳永逸. 二. 配置服务器 1. ...
- 微服务项目的整合与测试
实验目的 掌握微服务项目的整合使用 掌握Swagger-UI的简单使用 练习内容 1.微服务项目整合 1.1.项目预览 1.1.1.在 https://github.com/shi469391tou/ ...
- Spring Cloud Alibaba 大型微服务项目实战
作者介绍 程序员十三,多年一线开发经验,历任高级开发工程师.后端主程.技术部门主管等职位.同时也是开源项目的爱好者和贡献者.掘金优秀作者.CSDN 博客专家.实体图书作者.专栏作者.视频讲师. 小册介 ...
- docker安装+配置镜像+命令操作+数据卷+网络管理+DockerFile+镜像服务+项目部署+[高级使用]
文章目录 Docker基础 一.Docker介绍 1. 什么是虚拟化 2. 什么是Docker 3. 容器与虚拟机比较 4. Docker优势 5. Docker架构 [1]镜像服务(`Image`) ...
- 认证服务器的搭建_SpringCloud搭建的认证中心和资源服务器的微服务项目源码分享...
本项目基于spring-cloud-starter-oauth2搭建的认证中心和资源服务器的微服务项目,项目不仅仅简单的demo,项目的出发点在于实战应用.本项目为笔者花了不少时间和精力整理出来的,只 ...
- Docker Compose配置springboot微服务项目
[Docker那些事]系列文章 docker 安装 与 卸载 centos Dockerfile 文件结构.docker镜像构建过程详细介绍 Dockerfile文件中CMD指令与ENTRYPOINT ...
- docker 完成 redis集群搭建
[Docker那些事]系列文章 docker 安装 与 卸载 centos Dockerfile 文件结构.docker镜像构建过程详细介绍 Dockerfile文件中CMD指令与ENTRYPOINT ...
- 微服务项目部署在docker容器运行
昨天的一篇微服务项目中涉及到docker部署,今天写一篇关于微服务项目部署在docker容器中运行,使用github上另外一个比较经典的微服务项目piggyMetric,项目的github地址:htt ...
- B2C商城项目源码,基于Java开发的高可用分布式B2C商城系统,Java+Spring MVC+Dubbo+Zookeeper+MySQL+Redis+FastDFS+Nginx+Solr
目录 前言 B2C商城-AIYOU 一.项目总体架构 二.系统软硬件设施总体规划 1.系统服务规划 2.应用服务规划 3.应用系统域名规划 三.系统运行环境构建 四.项目数据库创建 五.项目拉取 六. ...
最新文章
- 牵引力教育设计总监解密9大2018潮流UI设计趋向
- C++ Multimaps
- qt linux实现鼠标位置自动移动,【已解决】qt中鼠标能显示但是无法移动
- 选择or不选择苹果的理由
- 吴恩达神经网络1-2-2_图神经网络进行药物发现-第1部分
- java初学者笔记总结day6
- JVM内存溢出时快照转存HeapDump到文件
- oracle 主键_mysql 组合索引带主键ID的问题
- Qpython实现命令行的贪吃蛇
- 解决三星PM981硬盘无法正常安装黑苹果的问题(第一版)
- 如何将文档转换为一个链接
- PDF文件怎么压缩大小
- 【电动车】电动汽车两阶段优化调度策略(Matlab代码实现)
- python 爬取链家北京租房信息
- 【Android Gradle 插件】自定义 Gradle 插件优化图片 ② ( 压缩 png、jpg 图片 | 使用 pngcrush 压缩工具压缩 png 图片 )
- 图像处理用什么神经网络,神经网络图像处理
- 宽带连接错误的处理办法
- Xv6学习之kinit1
- 全国计算机等级考试二级c语言程序设计,全国计算机等级考试二级教程:C语言程序设计(2016年版) pdf epub mobi txt 下载...
- mac for smartSVN9 (8,9)破解方法 附smartSvn_keygen工具图文