Linux+Docker部署若依前后端分離項(xiàng)目
1、VMWare安裝
1.1、第1步 準(zhǔn)備VMware安裝包:
VMware 17 下載地址與安裝教程【W(wǎng)IN】
VMware 17.0 下載地址 :
VMware 17.5 下載地址 :
如果需要正版的VMware 17.5或者VMware 17.0的安裝包請(qǐng)聯(lián)系本人
1.2、第2步:安裝
下載完安裝包之后,右鍵管理員身份運(yùn)行
勾選我接受許可協(xié)議條款,點(diǎn)擊”下一步”
更改安裝位置點(diǎn)擊”下一步”!可以不更改! 更改的話不要路徑不能有中文
取消勾選,點(diǎn)擊”下一步”
點(diǎn)擊”下一步”
點(diǎn)擊”安裝”
軟件正在安裝中,請(qǐng)耐心等待安裝完成
點(diǎn)擊許可證
輸入許可證后 點(diǎn)擊 “輸入”
許可證
點(diǎn)擊”完成”
然后就可以去桌面,或者開(kāi)始菜單打開(kāi)軟件使用啦。
2、虛擬機(jī)安裝
2.1、創(chuàng)建新的虛擬機(jī)
2.2.選擇自定義(高級(jí))
2.3.選擇虛擬機(jī)硬件兼容性
2.4.安裝客戶機(jī)操作系統(tǒng)
2.5.選擇操作系統(tǒng)
2.6.配置安裝位置
2.7.設(shè)置虛擬機(jī)處理器配置
2.8.設(shè)置虛擬機(jī)內(nèi)存
2.9.設(shè)置網(wǎng)絡(luò)類型
2.10.選擇I/O控制器類型,默認(rèn)就好
2.11.選擇磁盤類型,默認(rèn)
2.12.選擇磁盤
2.13.指定磁盤大小
2.14.指定磁盤文件
2.15.核對(duì)配置,單擊完成
2.16.編輯虛擬機(jī)設(shè)置
2.17.開(kāi)啟虛擬機(jī)
2.18.開(kāi)始安裝,選擇后等待安裝
2.19.選擇語(yǔ)言
2.20.配置安裝信息
2.21.設(shè)置root密碼
2.22.點(diǎn)擊重啟
2.23.登錄系統(tǒng)
2.24.配置網(wǎng)卡
2.24.1.使用vi編輯ifcfg-ens33
2.24.2.重啟網(wǎng)絡(luò)服務(wù) service network restart
3、使用MobaXterm連接虛擬機(jī)
3.1.點(diǎn)擊session
3.2.選擇SSH
3.3.填入ip地址, 點(diǎn)擊下方的OK
3.4.輸入用戶名和密碼連接服務(wù)器
3.5.連接成功,示例
4、切換為國(guó)內(nèi)源
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 非交互式的網(wǎng)絡(luò)文件下載工具
權(quán)限的虛擬機(jī)因?yàn)闆](méi)有安裝wget,所以一般會(huì)報(bào)錯(cuò) :-bash: wget: 未找到命令
輸入指令: yum install wget
新虛擬機(jī)的CentOS-Base.repo 可能不能順利的將wget指令文件包下載下來(lái),一般情況下會(huì)出現(xiàn)報(bào)錯(cuò):
此時(shí)yum update和 yum install 均不能正常執(zhí)行,解決辦法:
a、首先排查網(wǎng)絡(luò)是否可以正常連接:ping www.baidu.com
如果可以正常ping通,則網(wǎng)絡(luò)正常;
b、cd /etc/sysconfig/network-scripts vi ifcfg-ens33
查看ONBOOT=yes 可以適當(dāng)?shù)脑诘撞考由螪NS1=114.114.114.114
ESC后輸入 :wq 退出
c、修改CentOS-Base.repo
第一種:
1.sudo vim /etc/yum.repos.d/CentOS-Base.repo 將 mirrorList都注釋掉,將baseurl都取消注釋, :wq 保存修改
2.執(zhí)行 sudo yum update 更新軟件包列表,這一步帶來(lái)的效果是自動(dòng)生成緩存。
3.恢復(fù) CentOS-Base.repo到原始狀態(tài)(baseurl注釋掉,mirrorList取消注釋)
4.繼續(xù)執(zhí)行sudo yum install xxx 一切恢復(fù)正常。
第二種:
將CentOS-Base.repo 內(nèi)容進(jìn)行替換:
正文
[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
結(jié)束
d、執(zhí)行systemctl restart network
執(zhí)行 yum install wget
接著執(zhí)行:wget -O CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
4.4、清空緩存:執(zhí)行 yum clean all
4.5、重新生成緩存
執(zhí)行 yum makecache
5.生成快照(此時(shí)可以生成快照將當(dāng)前的節(jié)點(diǎn)保存)
5.1.點(diǎn)擊管理快照
5.2.點(diǎn)擊拍攝快照
5.3.填入必要信息點(diǎn)擊拍攝快照
5.4.等待左下角保存完成
6.JDK的安裝
6.1.新建存放壓縮包的文件夾 /yun
上傳jdk8的tar.gz的壓縮包到/
6.2.使用MobaXterm上傳文件
6.3、解壓jdk壓縮包
解壓好后的樣子
6.4.配置環(huán)境變量
進(jìn)入剛才解壓文件夾路徑
輸入pwd查看文件夾全路徑
配置環(huán)境變量
vim /etc/profile
出現(xiàn)錯(cuò)誤 -bash: vim: 未找到命令
執(zhí)行
yum install vim
按insert進(jìn)入插入模式, 粘貼一下內(nèi)容, 按esc退出, 輸入:wq退出
java environment
export JAVA_HOME=/yun/jdk1.8.0_151
export JRE_HOME={JAVA_HOME}/lib:
{JAVA_HOME}/bin:$PATH
設(shè)置環(huán)境變量生效
source /etc/profile
6.5.防火墻設(shè)置
此處開(kāi)放3306和8080端口, 3306后面需要使用(公網(wǎng)服務(wù)器不建議打開(kāi))
開(kāi)放端口
firewall-cmd --zone=public --add-port=3306/tcp --permanent
firewall-cmd --zone=public --add-port=8080/tcp --permanent
跟新防火墻規(guī)則
firewall-cmd --reload
防火墻列表
firewall-cmd --zone=public --list-ports
防火墻狀態(tài)
systemctl status firewalld
啟動(dòng)防火墻
systemctl start firewalld
關(guān)閉防火墻
systemctl stop firewalld.service
systemctl disable firewalld.service
6.6.如果是WEB項(xiàng)目,可以自行安裝tomcat(略)
解壓配置省略最終完成的效果如圖:
7.Docker的安裝
7.1.查看系統(tǒng)內(nèi)核版本
Docker 要求 CentOS 系統(tǒng)的內(nèi)核版本高于 3.10 ,查看本頁(yè)面的前提條件來(lái)驗(yàn)證你的CentOS 版本是否支持 Docker 。
7.2.更新yum包
使用 root 權(quán)限登錄 Centos。確保 yum 包更新到最新。
yum update
7.3.卸載舊版本(如果安裝過(guò)舊版本的話) 執(zhí)行 yum remove docker docker-common docker-selinux docker-engine
7.4.安裝需要的軟件包, yum-util 提供yum-config-manager功能,另外兩個(gè)是devicemapper驅(qū)動(dòng)依賴的
執(zhí)行:yum install -y yum-utils device-mapper-persistent-data lvm2
7.5.設(shè)置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.啟動(dòng)Docker并設(shè)置開(kāi)機(jī)啟動(dòng)
systemctl start docker
systemctl enable docker
7.8.驗(yàn)證Docker
docker version
7.9.配置阿里云鏡像源.在/etc/docker目錄下找到在daemon.json文件(沒(méi)有就新建),將下面內(nèi)容寫入
{
"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服務(wù)
systemctl restart docker
8.使用docker搭建mysql環(huán)境
拉取鏡像
docker pull mysql:5.7
啟動(dòng)鏡像
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容器已經(jīng)完成
業(yè)務(wù)場(chǎng)景:建庫(kù) 當(dāng)前項(xiàng)目所需要的數(shù)據(jù)庫(kù):nyj-livepig-pro
以及遷移數(shù)據(jù):
9.docker中部署最新版redis
9.1 docker 命令執(zhí)行docker pull redis命令,拉取鏡像。
執(zhí)行docker images命令,查看剛才拉取的鏡像。
Redis配置
1、mkdir -p /data/redis/{conf,data}
2.上傳redis.conf文件到/data/redis/conf文件夾中網(wǎng)上尋找redis.conf配置文件,具體配置文件如下(親測(cè)完美):
3、配置redis.conf文件
配置redis.conf文件:
redis.conf文件配置注意:
bind 127.0.0.1 #注釋掉這部分,使redis可以外部訪問(wèn)(一般都是注釋的) 或者bind 0.0.0.0 允許任何主機(jī)訪問(wèn)
daemonize no #用守護(hù)線程的方式啟動(dòng)
requirepass 輸入你的密碼 #給redis設(shè)置密碼
appendonly yes #redis持久化 默認(rèn)是no
4、執(zhí)行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、執(zhí)行:docker logs -f -t --tail 100 myredis 查看redis是否有權(quán)限
6、執(zhí)行:docker exec -it myredis /bin/bash
7、執(zhí)行:redis-cli或者 docker exec -it redis redis-cli進(jìn)入容器
8、執(zhí)行:auth 123456(數(shù)據(jù)庫(kù)密碼)
9、測(cè)試redis的數(shù)據(jù)存儲(chǔ) set username yuyun出現(xiàn)OK后 get username 查看,如果出現(xiàn)則安裝成功;
輸入 ping 指令后,出現(xiàn) PONG 標(biāo)識(shí),代表我們安裝成功了,服務(wù)可以正常啟動(dòng)
10、若依部署后端服務(wù)
構(gòu)建Dockerfile鏡像
1.切換到家目錄 cd ~
2.新建文件夾 mkdir ruoyi-admin
3.進(jìn)入到新建文件夾 cd ruoyi-admin
上傳ruoyi-admin.jar和Dockerfile_ruoyi-admin文件到同一目錄,例如:/root/ruoyi-admin
ruoyi-admin.jar 的配置:
打包:
上傳ruoyi-admin到/root/ruoyi-admin/路徑之下:
新建Dockerfile并構(gòu)造Dockerfile的腳本:
基礎(chǔ)鏡像使用jdk1.8
FROM openjdk:8-jdk-alpine
作者
MAINTAINER yuyun
VOLUME 指定臨時(shí)文件目錄為/tmp,在主機(jī)/var/lib/docker目錄下創(chuàng)建了一個(gè)臨時(shí)文件并鏈接到容器的/tmp
VOLUME /tmp
將jar包添加到容器中并更名
ADD ruoyi-admin.jar /opt/app.jar
暴露8080端口
EXPOSE 8080
ENTRYPOINT ["java", "-Xmx512m", "-jar","/opt/app.jar"]
如圖:
接下來(lái)給ruoyi-admin.jar 以及Dockerfile文件賦予777或者755權(quán)限:
4.ruoyi-admin為鏡像名稱,開(kāi)始制作鏡像
完成鏡像制作后,執(zhí)行docker images
執(zhí)行:docker run -itd --name ruoyi-admin --network net-ry -p 8080:8080 ruoyi-admin
出現(xiàn)報(bào)錯(cuò):docker: Error response from daemon: network net-ry not found.
解決問(wèn)題;
vim /etc/resolv.conf
增加:
nameserver 8.8.8.8
nameserver 8.8.4.4
:wq
systemctl restart network
ping www.baidu.com
然后繼續(xù)執(zhí)行:
docker run -itd --name ruoyi-admin --network net-ry -p 8080:8080 ruoyi-admin
成功:
如果遇到主機(jī)和虛擬機(jī)之間可以互ping,并且ping的通的情況,而且ping www.baidu.com也都可以ping的通的情況下,
虛擬機(jī)上將后臺(tái)程序已經(jīng)用docker啟動(dòng)起來(lái)了,而且docker查看日志是正常的,但是在主機(jī)的瀏覽器上訪問(wèn)
192.168.188.130:8080卻不能出現(xiàn)網(wǎng)絡(luò)響應(yīng)。
此時(shí)的解決辦法是輸入指令:vim /etc/resolv.conf
增加nameserver=8.8.8.8以及nameserver=8.8.4.4
然后重啟網(wǎng)絡(luò)
systemctl restart network
然后查看 /etc/resolv.conf 看nameserver=8.8.8.8以及nameserver=8.8.4.4是否成功的寫入并完成配置;
如果重啟網(wǎng)絡(luò)后nameserver被重置了,并且剛才寫入的nameserver=8.8.8.8以及nameserver=8.8.4.4并沒(méi)有生效
此時(shí)需要手動(dòng)在ifcfg-ens33中添加對(duì)應(yīng)的DNS
以當(dāng)前的生豬環(huán)境為例:因?yàn)槭?88網(wǎng)段的。
cd /etc/sysconfig/network-scripts
vim ifcfg-ens33
增加DNS1=192.168.188.2
DNS2=8.8.8.8
DNS3=8.8.4.4
后再重啟網(wǎng)絡(luò) systemctl restart network
再查看vim /etc/resolv.conf此時(shí)nameserver=8.8.8.8和nameserver=8.8.4.4已經(jīng)成功配置;
至此后端部署完成
檢查:
用postAPi檢查:
11、若依框架前端項(xiàng)目部署
11.1、部署前端H5項(xiàng)目 創(chuàng)建目錄
mkdir -p /data/nginx/{conf,html}
11.2、上傳nginx.conf至/data/nginx/conf文件夾中
代碼如下:
192.168.188.130為自己的服務(wù)器, 修改為自己服務(wù)器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;
}
監(jiān)聽(tīng)端口設(shè)置為8010;(前端端口可自行定義)
11.3、docker獲取nginx鏡像
docker pull nginx:latest
將鏡像拉取下來(lái)之后 查看docker images
11.4、啟動(dòng)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
為什么設(shè)置路徑為/usr/share/nginx/htm,因?yàn)閯偛旁趎ginx.conf里的location的根目錄下配置的是這個(gè)路徑下加載dist包
如果不存在/usr/share/nginx/htm該文件的路徑,則新建該路徑;
dist包為前端包,可以前端打包或者讓前端同事提供;分別將dist包遷移至
/data/nginx/html 文件路徑下及 /usr/share/nginx/html文件路徑之下;
查看效果:docker ps -a
查看到nginx的狀態(tài)為啟動(dòng)的狀態(tài);
然后驗(yàn)證若依前端項(xiàng)目的部署情況,在瀏覽器上輸入<u>http://192.168.188.130:8010/</u>
如下:
則若依框架的前后端項(xiàng)目在docker環(huán)境下部署已完成;
OK,完成收工吃飯去!