前提在虚拟机上安装mysql ,tomcat,jdk,redis,nginx等环境

三台虚拟机:

0:作为前端

1和2后端代码

在spring boot中使用Velocity spring boot vm_tomcat

 

使用若依项目作为测试项目,版本是2.3.0

在spring boot中使用Velocity spring boot vm_mysql_02

 修改项目的数据库地址,标红处是虚拟机地址,替换上自己的虚拟机地址,可以在虚拟机上使用 ipconfig 命令查看 

在spring boot中使用Velocity spring boot vm_mysql_03

在数据库中创建连接自己虚拟机地址的数据库,创建一个ry-vue数据库(与自己上面的配置一致)

在spring boot中使用Velocity spring boot vm_tomcat_04

 将项目中的数据库文件导入 ,导入完成数据库会自动创建一些表

在spring boot中使用Velocity spring boot vm_tomcat_05

修改自己的redis配置为虚拟机地址,配置自己的密码

在spring boot中使用Velocity spring boot vm_war包_06

修改日志配置,日志输出位置为自己的地址,在encoder下增加字符集配置,所有的都要加,防止乱码

在spring boot中使用Velocity spring boot vm_mysql_07

 配置完成,启动查看是否报错 

在spring boot中使用Velocity spring boot vm_nginx_08

本地没问题,将项目上传到虚拟机,用Xshell连接,直接使用rz命令即可,前端上传到0,后端上传到1和2 

在spring boot中使用Velocity spring boot vm_nginx_09

 进入前端项目,执行npm install --unsafe-perm --registry=https://registry.npm.taobao.org,安装一些前端依赖

 解释:使用npm,因此要安装node.js,unsafe-perm防止权限问题,镜像源使用淘宝

执行打包命令:npm run build:prod

前端打包完成,会生成一个dist目录

在spring boot中使用Velocity spring boot vm_nginx_10

 打包后端代码,使用maven打包,进入项目目录下(两个都要打包)

打jar包:

执行:mvn package 

 会在target目录下生成一个jar包,这个jar包直接可执行,保存这个jar包到别的目录,稍后还要打war包,会清除target目录的内容

打war包:

1.更改打包方式

在spring boot中使用Velocity spring boot vm_tomcat_11

 2.剔除内置tomcat,增加如下配置

在spring boot中使用Velocity spring boot vm_nginx_12

 3.修改项目启动类,在原启动类下加一个类

public class RuoYiServletInitializer extends SpringBootServletInitializer
{
    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application)
    {
        return application.sources(RuoYiApplication.class);
    }
}

在spring boot中使用Velocity spring boot vm_nginx_13

 将代码上传到服务器,重新打包,

执行命令:mvn clean ;   mvn package 

target下会出现一个war包 。

进入前端代码的服务器,修改nginx配置,最好修改最上面的用户为 user root;

下面这个修改是你自己刚才打包的dist目录

在spring boot中使用Velocity spring boot vm_mysql_14

 保存修改,启动nginx, 进入sbin下执行   ./nginx

 执行完成以后前台页面部署完成,可以通过输入虚拟机地址直接访问

在spring boot中使用Velocity spring boot vm_war包_15

注意:访问不了,十有八九是防火墙未关闭,

防火墙状态:systemctl status firewalld

防火墙关闭:systemctl stop firewalld

或者使用开放端口的方式,可以搜搜别的博客

部署后端:

启动jar包的方式:

nohup java -jar ruoyi.jar &     //nohub是指采用后台运行的方式

启动完成依然不能访问因为前后端未交互

继续配置nginx文件,请求头必须配置,配置转发路径和负载均衡

location /prod-api/ {
                proxy_set_header Host $http_host;
                proxy_set_header    X-Real-IP      $remote_addr;
                proxy_set_header    REMOTE-HOST      $remote_addr;
                proxy_set_header    X-Forwarded-For  $proxy_add_x_forwarded_for;
                proxy_pass http://ruoyi/;
        }
upstream ruoyi{
        server 192.168.209.6:8080  weight=5;
        server 192.168.209.131:8080 weight=3;
    }

注意:根据请求配置的location,

在spring boot中使用Velocity spring boot vm_jar包_16

 启动war包的方式:

将打包的war包放入tomcat的webapps目录下

然后直接启动tomcat

命令:service start tomcat 

如果不行 ,可以直接进入tomcat安装目录下的bin目录下执行  ./startup.sh

在spring boot中使用Velocity spring boot vm_war包_17

前台访问出错,由于war包默认的根目录访问不是我们的项目,需要配置一下

在1和2服务器上的tomcat目录下config目录下的server.xml

增加如下内容,为了访问根目录可以访问我们的项目

<Context path="/" docBase="/usr/local/tomcat/apache-tomcat-8.5.55/webapps/ruoyi" reloadable="false"></Context>

在spring boot中使用Velocity spring boot vm_mysql_18

修改完,需要重新启动tomcat

此时访问可以检查是否集群部署成功,直接通过配置的日志,进行请求,可以看到日志是在两台后台服务上打印

结束!!!