由于本项目采用的是java Spring Boot 框架编写的一个项目,他所采用的方式为jar包部署。采用jar包部署的有Spring Cloud 微服务系列。下面主要实战整个模拟生产中如何使用jar包上线,以及上线流程。
项目源码:https://gitee.com/y_project/RuoYi-Vue
实验环境
环境要求准备三台机器
1.作为前端服务器,mysql,redis服务器–同时临时作为代码打包服务器
192.168.32.56
2.作为后端服务器
192.168.32.127
192.168.32.1
所有机器准备环境
关闭防火墙和selinux
三台机器都安装java环境
下载java或将已下载好的包上传至服务器
[root@bogon ~]# tar xzf jdk-8u211-linux-x64.tar.gz -C /usr/local/
[root@bogon ~]# mv /usr/local/jdk1.8.0_211/ /usr/local/java
[root@bogon ~]# mv /usr/local/jdk1.8.0_211/ /usr/local/java
[root@bogon ~]# vim /etc/profile
export PATH=/usr/local/java/bin:$PATH
[root@bogon ~]# source /etc/profile
[root@bogon ~]# java -version
java version “1.8.0_211”
Java(TM) SE Runtime Environment (build 1.8.0_211-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.211-b12, mixed mode)
前端服务器yum安装mysql5.7.43并启动
登入mysql数据库创建ry库
mysql> create database ry default charset ‘utf8’;
前端服务器安装redis
[root@bogon ~]# wget http://download.redis.io/releases/redis-4.0.9.tar.gz
[root@bogon ~]# tar xzf redis-4.0.9.tar.gz -C /usr/local/
[root@bogon ~]# yum install -y gcc make
[root@bogon ~]# cd /usr/local/redis-4.0.9/
[root@bogon redis-4.0.9]# make
[root@bogon redis-4.0.9]# vim redis.conf
bind 192.168.32.56 #只监听内网IP
daemonize yes #开启后台模式将on改为yes
port 6379 #端口号
启动redis
[root@bogon redis-4.0.9]# src/redis-server redis.conf &
[root@bogon redis-4.0.9]# ss -nplt
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 *:22 *:* users:((“sshd”,pid=958,fd=3))
LISTEN 0 128 192.168.32.56:6379 : users:((“redis-server”,pid=4808,fd=6))
LISTEN 0 128 [::]:22 [::]:* users:((“sshd”,pid=958,fd=4))
LISTEN 0 80 [::]:3306 [::]:* users:((“mysqld”,pid=1099,fd=29))
前端服务器下载maven包
[root@bogon ~]# wget https://mirrors.tuna.tsinghua.edu.cn/apache/maven/maven-3/3.9.5/binaries/apache-maven-3.9.5-bin.tar.gz –no-check-certificate
[root@bogon ~]# tar xzf apache-maven-3.9.5-bin.tar.gz -C /usr/local/
[root@bogon ~]# mv /usr/local/apache-maven-3.9.5/ /usr/local/maven
[root@bogon ~]# vim /etc/profile
export PATH=/usr/local/maven/bin:$PATH
[root@bogon ~]# source /etc/profile
[root@bogon ~]# mvn -version
Apache Maven 3.9.5 (57804ffe001d7215b5e7bcb531cf83df38f93546)
Maven home: /usr/local/maven
Java version: 1.8.0_211, vendor: Oracle Corporation, runtime: /usr/local/java/jre
Default locale: en_US, platform encoding: UTF-8
OS name: “linux”, version: “3.10.0-1160.el7.x86_64”, arch: “amd64”, family: “unix”
前端服务器安装node.js前端打包工具命令npm
[root@bogon ~]# wget https://nodejs.org/dist/v12.18.4/node-v12.18.4-linux-x64.tar.xz
[root@bogon ~]# tar xf node-v12.18.4-linux-x64.tar.xz -C /usr/local/
[root@bogon ~]# mv /usr/local/node-v12.18.4-linux-x64/ /usr/local/node
[root@bogon ~]# vim /etc/profile
export PATH=/usr/local/node/bin:$PATH
[root@bogon ~]# source /etc/profile
[root@bogon ~]# node –version
v12.18.4
安装Git命令获取源代码
[root@bogon ~]# yum install -y git
[root@bogon ~]# git clone https://gitee.com/y_project/RuoYi-Vue.git
[root@bogon ~]# cd RuoYi-Vue/ruoyi-admin/src/main/resources/
编辑代码配置文件修改数据库与redis连接地址
1.修改redis
[root@bogon resources]# vim application.yml
redis:
# 地址
host: 192.168.32.56 #将localhost修改为自己本机ip
2.修改mysql
[root@bogon resources]# vim application-druid.yml
主库数据源
master:
url: jdbc:mysql://192.168.32.56:3306/ry?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 #ry-vue改为自己创建的库名
username: root
password: QQ@123456!
打包前端代码
[root@bogon ~]# cd RuoYi-Vue/ruoyi-ui/
替换为国内淘宝镜像源
[root@bogon ruoyi-ui]# npm install --unsafe-perm --registry=https://registry.npm.taobao.org
正式环境打包前端代码
[root@bogon ruoyi-ui]# npm run build:prod
构建打包成功之后,会在根目录生成 dist 文件夹,里面就是构建打包好的文件,通常是 xxx.js 、xxx.css、index.html 等静态文件。
通常情况下 dist 文件夹的静态文件发布到你的 nginx 或者静态服务器即可,其中的 index.html 是后台服务的入口页面。
[root@bogon ruoyi-ui]# cd dist/
[root@bogon dist]# ls
favicon.ico html index.html index.html.gz robots.txt static
打包后端代码
[root@bogon ~]# cd RuoYi-Vue/
#导入数据给创建的数据库里面
[root@bogon RuoYi-Vue]# mysql -uroot -p”QQ@123456!” ry < sql/quartz.sql
[root@bogon RuoYi-Vue]# mysql -uroot -p”QQ@123456!” ry < sql/ry_20230706.sql
开始后端打包jar包
[root@bogon RuoYi-Vue]# mvn package
会在项目下生成 target文件夹包含 war 或jar (多模块生成在ruoyi-admin)
[root@bogon RuoYi-Vue]# cd ruoyi-admin/target/
[root@bogon target]# ls
classes generated-sources maven-archiver maven-status ruoyi-admin.jar ruoyi-admin.jar.original
准备前端web服务
yum安装nginx服务
准备后端java服务
两台机器修改主机名
[root@bogon ~]# hostnamectl set-hostname java_server
[root@java_server ~]# mkdir /application/java-server -p #创建工作目录以及代码上线目录
后端服务上线
1.将打包好的后端jar包上传到两台后端服务器中
[root@bogon ~]# cd /root/RuoYi-Vue/ruoyi-admin/target/
[root@bogon target]# scp ruoyi-admin.jar 192.168.32.1:/application/java-server/
[root@bogon target]# scp ruoyi-admin.jar 192.168.32.127:/application/java-server/
2.开始上线后端–两台机器相同操作
[root@java_server ~]#cd /application/java-server/
[root@java_server java-server]# nohup java -jar -server -Xmx1024m -Xms1024m ruoyi-admin.jar &
[1] 1792
[root@java_server java-server]# tailf nohup.out
[root@java_server java-server]# ss -nplt
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 *:22 *:* users:((“sshd”,pid=908,fd=3))
LISTEN 0 128 [::]:8080 [::]:* users:((“java”,pid=2022,fd=39))
LISTEN 0 128 [::]:22 [::]:* users:((“sshd”,pid=908,fd=4))
开始上线前端服务
[root@bogon ~]# vim /etc/nginx/conf.d/default.conf
upstream java-web {
server 192.168.32.1:8080 weight=1 max_fails=2 fail_timeout=5s;
server 192.168.32.127:8080 weight=1 max_fails=2 fail_timeout=5s;
}
server {
listen 80;
server_name localhost;
location / {
root /usr/share/nginx/html;
try_files $uri $uri/ /index.html;
index index.html index.htm;
}
location /prod-api/{
proxy_pass http://java-web/;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
[root@bogon ~]# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
[root@bogon ~]# systemctl restart nginx
清理网站发布目录
[root@bogon ~]# rm -rf /usr/share/nginx/html/*
[root@bogon ~]# cp -r /root/RuoYi-Vue/ruoyi-ui/dist/* /usr/share/nginx/html/
访问网站
默认账户 admin/密码:admin123