【超详细】RuoYi 前后端分离版部署流程

news/2024/12/29 16:22:04/

RuoYi 前后端分离版部署流程

📔 千寻简笔记介绍

千寻简笔记已开源,Gitee与GitHub搜索chihiro-notes,包含笔记源文件.md,以及PDF版本方便阅读,且是用了精美主题,阅读体验更佳,如果文章对你有帮助请帮我点一个Star

文章目录

  • RuoYi 前后端分离版部署流程
    • 📔 千寻简笔记介绍
    • 一 前端准备
      • 1.修改`router`
      • 2. 修改`vue.config.js`
      • 3.修改后端访问地址:`.env.production`
      • 4.修改配置:
      • 5.构建项目
    • 二 Nginx配置
    • 三 后端准备
      • 1.修改`application-prod.yml`
      • 2.修改日志存放路径:`logback.xml`
      • 3.Maven 打包
    • 四 上传部署服务器
      • 1. 后端启动
      • 2.复制下面内容到ry.sh
      • 3.部署

特邀嘉宾:仲琪

一 前端准备

1.修改router

export default new Router({base: '/xxxx-admin', // 去掉url中的#mode: 'history',scrollBehavior: () => ({ y: 0 }),routes: constantRoutes
})

2. 修改vue.config.js

publicPath: process.env.NODE_ENV === "production" ? "/xxxx-admin/" : "/xxxx-admin/",

3.修改后端访问地址:.env.production

# 管理系统/生产环境
VUE_APP_BASE_API = 'http://ip:端口/别名-api/'

4.修改配置:

request.js

# 搜索:store.dispatch('LogOut')store.dispatch('LogOut').then(() => {// 修改xxxxlocation.href = '/xxxx-admin/index';})

Navbar.vue

# 搜索:this.$store.dispatch('LogOut')this.$store.dispatch('LogOut').then(() => {// 修改xxxxlocation.href = '/xxxx-admin/index';})

5.构建项目

npm run build:prod

二 Nginx配置

worker_processes  1;events {worker_connections  1024;
}http {include       mime.types;default_type  application/octet-stream;sendfile        on;keepalive_timeout  65;server {listen       80;server_name  localhost;charset utf-8;location /xxx-admin {# 修改路径alias   /home/deploy/test/java-xxx/fe/admin/dist;# 修前端访问路径try_files $uri $uri/ /xxx-admin/index.html;index  index.html index.htm;}location /xxx-h5 {# 修改路径alias   /home/deploy/test/java-xxx/fe/h5/dist;# 修前端访问路径try_files $uri $uri/ /xxx-h5/index.html;index  index.html index.htm;}location /xxx-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://localhost:端口号/xxx-api/;}# 文件上传路径location /test/xxx/profile/{# 服务器文件上传路径alias /home/deploy/test/java-xxx/be/uploadPath;}}
}

三 后端准备

1.修改application-prod.yml

# 改动1
ruoyi:# 服务器文件上传路径profile: /home/deploy/test/java-xxx/be/uploadPath# 改动2
# 开发环境配置
server:# 服务器的HTTP端口,默认为8080port: 端口号servlet:# 应用的访问路径context-path: /xxx-api/
# 改动3 修改数据源# 改动4 修改redis

2.修改日志存放路径:logback.xml

    <!-- 日志存放路径 --><property name="log.path" value="./logs" />

3.Maven 打包

# 清理环境,清除target文件夹
maven clean# 打包
maven packag# 打包到的地址
项目路径下的 xx-admin/target/xxx-admin.jar

四 上传部署服务器

  • 前端上传路径:/home/deploy/test/java-xxx/fe/admin/dist
  • 后端上传Jar包路径:/home/deploy/test/java-xxx/be/

1. 后端启动

# 去到指定目录
cd /home/deploy/test/java-xxx/be/
# 创建文件夹
mkdir uploadPath
# 新建脚本:ry.sh
touch ry.sh

2.复制下面内容到ry.sh

#!/bin/sh
# ./ry.sh start 启动 stop 停止 restart 重启 status 状态
# xxx-admin.jar 上传的jar包名称
AppName=xxx-admin.jar# JVM参数
# -Dspring.profiles.active=prod 指定启动环境
# -Druoyi.profile=/home/deploy/test/java-xxx/be/uploadPath 指定文件上传路径
JVM_OPTS="-Dname=$AppName  -Dspring.profiles.active=prod -Druoyi.profile=/home/deploy/test/java-xxx/be/uploadPath  -Duser.timezone=Asia/Shanghai -Xms512m -Xmx1024m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=512m -XX:+HeapDumpOnOutOfMemoryError -XX:+PrintGCDateStamps  -XX:+PrintGCDetails -XX:NewRatio=1 -XX:SurvivorRatio=30 -XX:+UseParallelGC -XX:+UseParallelOldGC"
APP_HOME=`pwd`
LOG_PATH=$APP_HOME/logs/$AppName.logif [ "$1" = "" ];
thenecho -e "\033[0;31m 未输入操作名 \033[0m  \033[0;34m {start|stop|restart|status} \033[0m"exit 1
fiif [ "$AppName" = "" ];
thenecho -e "\033[0;31m 未输入应用名 \033[0m"exit 1
fifunction start()
{PID=`ps -ef |grep java|grep $AppName|grep -v grep|awk '{print $2}'`if [ x"$PID" != x"" ]; thenecho "$AppName is running..."elsenohup java $JVM_OPTS -jar $AppName > /dev/null 2>&1 &echo "Start $AppName success..."fi
}function stop()
{echo "Stop $AppName"PID=""query(){PID=`ps -ef |grep java|grep $AppName|grep -v grep|awk '{print $2}'`}queryif [ x"$PID" != x"" ]; thenkill -TERM $PIDecho "$AppName (pid:$PID) exiting..."while [ x"$PID" != x"" ]dosleep 1querydoneecho "$AppName exited."elseecho "$AppName already stopped."fi
}function restart()
{stopsleep 2start
}function status()
{PID=`ps -ef |grep java|grep $AppName|grep -v grep|wc -l`if [ $PID != 0 ];thenecho "$AppName is running..."elseecho "$AppName is not running..."fi
}case $1 instart)start;;stop)stop;;restart)restart;;status)status;;*)esac

3.部署

# 给脚本添加执行的去哪先
chmode +x ry.sh
# 启动jar
./ry.sh start
# 重启
./ry.sh restart
# 停止
./ry.sh stop

http://www.ppmy.cn/news/416436.html

相关文章

Armbian安装1panel教程

文章目录 一 1panel简介二 检测是否安装1Panel三 环境要求四 安装操作指导4.1 确定系统类型4.2 执行安装命令4.3 访问1panel面板4.4 设置1panel访问配置4.5 查看访问1panel面板入口 五 常用命令总结 一 1panel简介 1Panel 是一个现代化、开源的 Linux 服务器运维管理面板。 二…

Ubuntu18.04离线安装redis

因需要安装redis的服务器无法连接互联网&#xff0c;所以需要离线安装。首先需要下载redis的安装包&#xff0c;之后进行安装&#xff0c;在安装之前需要保证gcc&#xff0c;g&#xff0c;make等依赖包已经安装。 1. 安装gcc等依赖包 依赖包安装请参考&#xff1a; Ubuntu18…

5 Amazing AI Projects, Open Source !

过去一周&#xff0c;AI大模型的快速演进仍然在继续上演。今天继续介绍GitHub上的一些实用的大模型开源项目。 1. ChatGLM-6B&#xff1a;Open Source ChatGPT Alternative ChatGLM-6B是一个基于GLM架构的开源对话语言模型&#xff0c;支持中英双语&#xff0c;有62亿参数。结…

小程序开发的前沿趋势和技术

在过去的一年里&#xff0c;小程序已成为移动互联网行业最热门的话题之一。小程序已经改变了许多行业。那么&#xff0c;下一个小程序开发趋势是什么&#xff1f;下面我们就来分析一下。 随着微信小程序的开放和推广&#xff0c;小程序开发企业正在大力发展并逐渐从技术方面进…

题快速公交 |小希的新工作 |岁月留痕 |排队喝水 |阿迪看医生 |松雅的花园 |拜访朋友 |猴导师 |贪心的阿迪 |飞机起飞时间安排 |松雅的旅馆 |小女孩和楼梯|小希与火车|基于神经网络的垃圾分类

写在前面&#xff1a;本题解旨在帮助进行作业参考&#xff0c;为学习升华所用。登高自卑&#xff0c;戒骄戒躁。 第一题&#xff1a;快速公交BRT 思路分析&#xff1a;本题考察数组基本应用&#xff0c;强模拟的题目。 #include<iostream> using namespace std; typede…

茉喜郎 【商标】

商标冷知识&#xff0c;你的昵称也可能成为商标&#xff01; 茉喜郎 科普商标常识 例如荣喜郎木门商标(trade mark) 是一个专门的法律术语。品牌或品牌的一部分在政府有关部门依法注册后&#xff0c;称为“商标”。商标受法律的保护&#xff0c;注册者有专用权。国际市场上著…

松雅的旅馆(hnu)

【问题描述】 松雅认为&#xff0c;拥有自己的旅馆是赚钱的最好方式&#xff0c;因为她可以在任何她想要的地方赚钱和休闲。 松雅生活的国度是一个无尽头的线状型&#xff0c;在这条直线的每个整数坐标上有一座城市。她有n个旅馆&#xff0c;第i个旅馆位于具有坐标xi的城市。松…

11. 松雅的旅馆

松雅认为&#xff0c;拥有自己的旅馆是赚钱的最好方式&#xff0c;因为她可以在任何她想要的地方赚钱和休闲。 松雅生活的国度是一个无尽头的线状型&#xff0c;在这条直线的每个整数坐标上有一座城市。她有n个旅馆&#xff0c;第i个旅馆位于具有坐标xi的城市。松雅是位聪明的女…