Linux+Docker部署若依前后端分离项目
1、VMWare安装
1.1、第1步 准备VMware安装包:
VMware 17 下载地址与安装教程【WIN】
VMware 17.0 下载地址 :
VMware 17.5 下载地址 :
如果需要正版的VMware 17.5或者VMware 17.0的安装包请联系本人
1.2、第2步:安装
下载完安装包之后,右键管理员身份运行
勾选我接受许可协议条款,点击”下一步”
更改安装位置点击”下一步”!可以不更改! 更改的话不要路径不能有中文
取消勾选,点击”下一步”
点击”下一步”
点击”安装”
软件正在安装中,请耐心等待安装完成
点击许可证
输入许可证后 点击 “输入”
许可证
点击”完成”
然后就可以去桌面,或者开始菜单打开软件使用啦。
2、虚拟机安装
2.1、创建新的虚拟机
2.2.选择自定义(高级)
2.3.选择虚拟机硬件兼容性
2.4.安装客户机操作系统
2.5.选择操作系统
2.6.配置安装位置
2.7.设置虚拟机处理器配置
2.8.设置虚拟机内存
2.9.设置网络类型
2.10.选择I/O控制器类型,默认就好
2.11.选择磁盘类型,默认
2.12.选择磁盘
2.13.指定磁盘大小
2.14.指定磁盘文件
2.15.核对配置,单击完成
2.16.编辑虚拟机设置
2.17.开启虚拟机
2.18.开始安装,选择后等待安装
2.19.选择语言
2.20.配置安装信息
2.21.设置root密码
2.22.点击重启
2.23.登录系统
2.24.配置网卡
2.24.1.使用vi编辑ifcfg-ens33
2.24.2.重启网络服务 service network restart
3、使用MobaXterm连接虚拟机
3.1.点击session
3.2.选择SSH
3.3.填入ip地址, 点击下方的OK
3.4.输入用户名和密码连接服务器
3.5.连接成功,示例
4、切换为国内源
4.1.备份原有的源
cp /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak
4.2.查看是否备份完成
cd /etc/yum.repos.d
ll 或 ls 或 ls -a
4.3.生成阿里源
wget -O CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
PS: wget 非交互式的网络文件下载工具
权限的虚拟机因为没有安装wget,所以一般会报错 :-bash: wget: 未找到命令
输入指令: yum install wget
新虚拟机的CentOS-Base.repo 可能不能顺利的将wget指令文件包下载下来,一般情况下会出现报错:
此时yum update和 yum install 均不能正常执行,解决办法:
a、首先排查网络是否可以正常连接:ping www.baidu.com
如果可以正常ping通,则网络正常;
b、cd /etc/sysconfig/network-scripts vi ifcfg-ens33
查看ONBOOT=yes 可以适当的在底部加上DNS1=114.114.114.114
ESC后输入 :wq 退出
c、修改CentOS-Base.repo
第一种:
1.sudo vim /etc/yum.repos.d/CentOS-Base.repo 将 mirrorList都注释掉,将baseurl都取消注释, :wq 保存修改
2.执行 sudo yum update 更新软件包列表,这一步带来的效果是自动生成缓存。
3.恢复 CentOS-Base.repo到原始状态(baseurl注释掉,mirrorList取消注释)
4.继续执行sudo yum install xxx 一切恢复正常。
第二种:
将CentOS-Base.repo 内容进行替换:
正文
[base]
name=CentOS-releasever/os/releasever/os/releasever/os/$basearch/
gpgcheck=1
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
released updates
[updates]
name=CentOS-releasever/updates/releasever/updates/releasever/updates/$basearch/
gpgcheck=1
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
additional packages that may be useful
[extras]
name=CentOS-releasever/extras/releasever/extras/releasever/extras/$basearch/
gpgcheck=1
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
additional packages that extend functionality of existing packages
[centosplus]
name=CentOS-releasever/centosplus/releasever/centosplus/releasever/centosplus/$basearch/
gpgcheck=1
enabled=0
结束
d、执行systemctl restart network
执行 yum install wget
接着执行:wget -O CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
4.4、清空缓存:执行 yum clean all
4.5、重新生成缓存
执行 yum makecache
5.生成快照(此时可以生成快照将当前的节点保存)
5.1.点击管理快照
5.2.点击拍摄快照
5.3.填入必要信息点击拍摄快照
5.4.等待左下角保存完成
6.JDK的安装
6.1.新建存放压缩包的文件夹 /yun
上传jdk8的tar.gz的压缩包到/
6.2.使用MobaXterm上传文件
6.3、解压jdk压缩包
解压好后的样子
6.4.配置环境变量
进入刚才解压文件夹路径
输入pwd查看文件夹全路径
配置环境变量
vim /etc/profile
出现错误 -bash: vim: 未找到命令
执行
yum install vim
按insert进入插入模式, 粘贴一下内容, 按esc退出, 输入:wq退出
java environment
export JAVA_HOME=/yun/jdk1.8.0_151
export JRE_HOME={JAVA_HOME}/lib:{JAVA_HOME}/bin:$PATH
设置环境变量生效
source /etc/profile
6.5.防火墙设置
此处开放3306和8080端口, 3306后面需要使用(公网服务器不建议打开)
开放端口
firewall-cmd --zone=public --add-port=3306/tcp --permanent
firewall-cmd --zone=public --add-port=8080/tcp --permanent
跟新防火墙规则
firewall-cmd --reload
防火墙列表
firewall-cmd --zone=public --list-ports
防火墙状态
systemctl status firewalld
启动防火墙
systemctl start firewalld
关闭防火墙
systemctl stop firewalld.service
systemctl disable firewalld.service
6.6.如果是WEB项目,可以自行安装tomcat(略)
解压配置省略最终完成的效果如图:
7.Docker的安装
7.1.查看系统内核版本
Docker 要求 CentOS 系统的内核版本高于 3.10 ,查看本页面的前提条件来验证你的CentOS 版本是否支持 Docker 。
7.2.更新yum包
使用 root 权限登录 Centos。确保 yum 包更新到最新。
yum update
7.3.卸载旧版本(如果安装过旧版本的话) 执行 yum remove docker docker-common docker-selinux docker-engine
7.4.安装需要的软件包, yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的
执行:yum install -y yum-utils device-mapper-persistent-data lvm2
7.5.设置yum源
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
7.6.安装最新版本的Docker
yum install -y -y docker-ce docker-ce-cli containerd.io
7.7.启动Docker并设置开机启动
systemctl start docker
systemctl enable docker
7.8.验证Docker
docker version
7.9.配置阿里云镜像源.在/etc/docker目录下找到在daemon.json文件(没有就新建),将下面内容写入
{
"registry-mirrors": ["https://docker.registry.cyou","https://4l4ops0j.mirror.aliyuncs.com",
"https://docker-cf.registry.cyou",
"https://dockercf.jsdelivr.fyi",
"https://docker.jsdelivr.fyi",
"https://dockertest.jsdelivr.fyi",
"https://mirror.aliyuncs.com",
"https://dockerproxy.com",
"https://mirror.baidubce.com",
"https://docker.m.daocloud.io",
"https://docker.nju.edu.cn",
"https://docker.mirrors.sjtug.sjtu.edu.cn",
"https://docker.mirrors.ustc.edu.cn",
"https://mirror.iscas.ac.cn",
"https://docker.rainbond.cc"]
}
7.9.3.重启daemon
systemctl daemon-reload
7.9.4.重启docker服务
systemctl restart docker
8.使用docker搭建mysql环境
拉取镜像
docker pull mysql:5.7
启动镜像
docker run -p 3306:3306 --name mysql1 -di -v /home/yun/data/mysql/mysql.conf.d/:/etc/mysql/mysql.conf.d/ -v /home/yun/data/mysql/data/:/var/lib/mysql -v /home/yun/data/mysql/log/:/var/log -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7
navicat 连接:
至此docker安装mysql容器已经完成
业务场景:建库 当前项目所需要的数据库:nyj-livepig-pro
以及迁移数据:
9.docker中部署最新版redis
9.1 docker 命令执行docker pull redis命令,拉取镜像。
执行docker images命令,查看刚才拉取的镜像。
Redis配置
1、mkdir -p /data/redis/{conf,data}
2.上传redis.conf文件到/data/redis/conf文件夹中网上寻找redis.conf配置文件,具体配置文件如下(亲测完美):
3、配置redis.conf文件
配置redis.conf文件:
redis.conf文件配置注意:
bind 127.0.0.1 #注释掉这部分,使redis可以外部访问(一般都是注释的) 或者bind 0.0.0.0 允许任何主机访问
daemonize no #用守护线程的方式启动
requirepass 输入你的密码 #给redis设置密码
appendonly yes #redis持久化 默认是no
4、执行docker安装redis指令:
docker pull redis
docker images
docker run -p 6379:6379 --name myredis -v /data/redis/conf/redis.conf:/etc/redis/redis.conf -v /data/redis/data:/data -d redis redis-server /etc/redis/redis.conf
5、执行:docker logs -f -t --tail 100 myredis 查看redis是否有权限
6、执行:docker exec -it myredis /bin/bash
7、执行:redis-cli或者 docker exec -it redis redis-cli进入容器
8、执行:auth 123456(数据库密码)
9、测试redis的数据存储 set username yuyun出现OK后 get username 查看,如果出现则安装成功;
输入 ping 指令后,出现 PONG 标识,代表我们安装成功了,服务可以正常启动
10、若依部署后端服务
构建Dockerfile镜像
1.切换到家目录 cd ~
2.新建文件夹 mkdir ruoyi-admin
3.进入到新建文件夹 cd ruoyi-admin
上传ruoyi-admin.jar和Dockerfile_ruoyi-admin文件到同一目录,例如:/root/ruoyi-admin
ruoyi-admin.jar 的配置:
打包:
上传ruoyi-admin到/root/ruoyi-admin/路径之下:
新建Dockerfile并构造Dockerfile的脚本:
基础镜像使用jdk1.8
FROM openjdk:8-jdk-alpine
作者
MAINTAINER yuyun
VOLUME 指定临时文件目录为/tmp,在主机/var/lib/docker目录下创建了一个临时文件并链接到容器的/tmp
VOLUME /tmp
将jar包添加到容器中并更名
ADD ruoyi-admin.jar /opt/app.jar
暴露8080端口
EXPOSE 8080
ENTRYPOINT ["java", "-Xmx512m", "-jar","/opt/app.jar"]
如图:
接下来给ruoyi-admin.jar 以及Dockerfile文件赋予777或者755权限:
4.ruoyi-admin为镜像名称,开始制作镜像
完成镜像制作后,执行docker images
执行:docker run -itd --name ruoyi-admin --network net-ry -p 8080:8080 ruoyi-admin
出现报错:docker: Error response from daemon: network net-ry not found.
解决问题;
vim /etc/resolv.conf
增加:
nameserver 8.8.8.8
nameserver 8.8.4.4
:wq
systemctl restart network
ping www.baidu.com
然后继续执行:
docker run -itd --name ruoyi-admin --network net-ry -p 8080:8080 ruoyi-admin
成功:
如果遇到主机和虚拟机之间可以互ping,并且ping的通的情况,而且ping www.baidu.com也都可以ping的通的情况下,
虚拟机上将后台程序已经用docker启动起来了,而且docker查看日志是正常的,但是在主机的浏览器上访问
192.168.188.130:8080却不能出现网络响应。
此时的解决办法是输入指令:vim /etc/resolv.conf
增加nameserver=8.8.8.8以及nameserver=8.8.4.4
然后重启网络
systemctl restart network
然后查看 /etc/resolv.conf 看nameserver=8.8.8.8以及nameserver=8.8.4.4是否成功的写入并完成配置;
如果重启网络后nameserver被重置了,并且刚才写入的nameserver=8.8.8.8以及nameserver=8.8.4.4并没有生效
此时需要手动在ifcfg-ens33中添加对应的DNS
以当前的生猪环境为例:因为是188网段的。
cd /etc/sysconfig/network-scripts
vim ifcfg-ens33
增加DNS1=192.168.188.2
DNS2=8.8.8.8
DNS3=8.8.4.4
后再重启网络 systemctl restart network
再查看vim /etc/resolv.conf此时nameserver=8.8.8.8和nameserver=8.8.4.4已经成功配置;
至此后端部署完成
检查:
用postAPi检查:
11、若依框架前端项目部署
11.1、部署前端H5项目 创建目录
mkdir -p /data/nginx/{conf,html}
11.2、上传nginx.conf至/data/nginx/conf文件夹中
代码如下:
192.168.188.130为自己的服务器, 修改为自己服务器ip
在上传nginx.conf 文件之前先编辑或者新建nginx.conf
如下:
user nobody;
worker_processes 1;
error_log logs/error.log;
error_log logs/error.log notice;
error_log logs/error.log info;
pid logs/nginx.pid;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 8010;
server_name 192.168.188.130
charset utf-8;
location / {
root /usr/share/nginx/html/dist;
try_files uri/ /index.html;
index index.html index.htm;
}
location /prod-api/ {
proxy_set_header Host remote_addr;
proxy_set_header REMOTE-HOST proxy_add_x_forwarded_for;
proxy_pass http://192.168.188.130:8080/;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
include /etc/nginx/conf.d/*.conf;
}
监听端口设置为8010;(前端端口可自行定义)
11.3、docker获取nginx镜像
docker pull nginx:latest
将镜像拉取下来之后 查看docker images
11.4、启动nginx容器
docker run -d -p 8010:8010 --name ruo-yi-nginx -v /data/nginx/html:/usr/share/nginx/html -v /data/nginx/conf/nginx.conf:/etc/nginx/nginx.conf nginx
为什么设置路径为/usr/share/nginx/htm,因为刚才在nginx.conf里的location的根目录下配置的是这个路径下加载dist包
如果不存在/usr/share/nginx/htm该文件的路径,则新建该路径;
dist包为前端包,可以前端打包或者让前端同事提供;分别将dist包迁移至
/data/nginx/html 文件路径下及 /usr/share/nginx/html文件路径之下;
查看效果:docker ps -a
查看到nginx的状态为启动的状态;
然后验证若依前端项目的部署情况,在浏览器上输入<u>http://192.168.188.130:8010/</u>
如下:
则若依框架的前后端项目在docker环境下部署已完成;
OK,完成收工吃饭去!