制作Spring boot-若依项目构建前后端分离

由于本项目采用的是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