SpringBoot前后端分离项目,打包、部署到服务器详细图文流程

本文涉及的产品
云原生内存数据库 Tair,内存型 2GB
云数据库 Redis 版,标准版 2GB
推荐场景:
搭建游戏排行榜
日志服务 SLS,月写入数据量 50GB 1个月
简介: SpringBoot前后端分离项目,打包、部署到服务器详细图文流程

文章目录

实施步骤

一、修改配置文件地址

1.修改MySQL配置

修改MySQL地址,修改需要部署的数据名,账号和密码


ca7b4fb314d24d93a458bf9728616e23.png

2.修改Redis配置

修改Redis地址,修改需要部署的Redis密码(如果需要的话)


82985bb202aa4e66a860f8ab72372329.png

3.修改日志路径和字符集配置

修改logback.xml中日志的保存地址

f071fa929c62435fa26d3aa60c33071e.png


重新设置日志字符集(防止放到服务器上去之后日志出现乱码)


6bd411cc2c8a42a092fa029b364b70ac.png

7d976089ac7f43fd8519d1ac73facf1e.png

二、将源码压缩并上传服务器

1.上传前端文件

提前在本地将完整的源码文件,压缩成.zip格式

在服务器上创建存放项目源码的文件夹(/workspace)

通过xftp工具将打包好的前端项目源码上传到服务器对应文件夹下

使用命令unzip ruoyi-ui.zip来解压项目源码

使用命令rm -rf ruoyi-ui.zip删除原来的压缩文件

使用命令cd ruoyi-ui/进入源码文件夹

2.上传后端文件(同上)

三、前端项目打包

1.安装依赖

使用命令cd ruoyi-ui/进入源码文件夹

npm install --unsafe-perm --registry=https://registry.npm.taobao.org安装前端项目依赖(服务器必须安装node.js)

--unsafe-perm 防止权限问题

--registry=https://registry.npm.taobao.org 淘宝镜像源,国内速度更快

2.项目打包

使用命令npm run build:prod

打包完成后会生成一个dist目录(默认目录名为dist)

98ba568175d5481c9a120ce7af9fc042.png

四、后端项目打包

1.项目打包(jar包)

使用命令mvn package(需要服务器安装maven环境)

使用命令cd target/进入到目录就能看到打好的jar包(这里的jar包是ruoyi.jar)

将jar包拷贝到上级目录,防止target目录清理导致jar包丢失

2.项目打包(war包)

修改pom文件

eb8b5cd9a0f9487abafc7ad5c87923d3.png


排除掉自带的Tomcat,这样才能部署到外置的tomcat

7bba5a09e9774a4c8528419df2ebda80.png


新增一个启动类,指向原有的启动类


051cf4547d7e448888eaf913ed701ddb.png

将修改后的两个文件上传到服务器(上传对应文件并替换即可)


使用命令mvn clean清理目录


使用命令mvn package打war包


使用命令cd target在这个目录就找到了war包


五、部署前端项目

1.使用Nginx部署前端项目

使用命令cd /usr/local/nginx/进入到nginx的目录

49ff4e4d389948a293d0e30451cd06af.png


修改Nginx的配置文件(修改conf文件夹下的nginx.conf文件)


将location位置的root后面跟的路径修改为前端项目打包后的文件地址


61b554078227498ebc1c096f881ddca9.png

防止出现权限相关的问题,将文件开头的user修改为root


e4721272b6d44dd3b07765cc219e5ef9.png

使用命令cd sbin/进入到对应目录


使用命令./nginx启动nginx


此时就可以在浏览器输入对应的ip地址访问前端了


六、部署后端项目

1.部署jar包方式

在对应目录下使用命令nohup java -jar ruoyi.jar &后台运行后端项目


此时的前端项目可能会依然报错404,这是因为前端和后端的地址没有关联起来


重新在nginx.conf文件中配置代理

e17ff2826b38448895f4b3da4f4f8838.png


进入到nginx目录下重新加载一下nginx/usr/local/nginx/sbin/nginx -s reload


此时重新访问前端项目,已经不会报错了


恭喜你项目部署完成!


2.部署war包方式

ps -aux | grep java查看当前java进程

kill -9 进程号关掉进程

定位到tomcat的文件夹下cd /usr/local/tomcat/

将刚才打包好的war包放到webapps这个目录下

cd webapps/后执行命令cp /root/workspace/ruoyi/ruoyi.war ./将war包拷贝到当前目录下

启动tomcatservice tomcat start

此时会有一个问题,直接访问ip打开的是tomcat的主页,需要在原有的地址后加上/ruoyi才能访问到后端

解决这个问题需要修改tomcat的配置,定位到tomcat文件夹下的conf目录中,找到server.xml

新增一条配置信息,将原来的访问方式改为根目录访问

3d2d65683be34e0293292f53f9be6a1d.png

将tomcat停掉service tomcat stop 再重新启动service tomcat start

3.配置集群

修改nginx.conf文件

c14f065bd91f48fc988cc86291f75ea0.png


修改代理转发配置为上面修改的upstream


9513eff7821740ed8ae6d2b38ff5fbeb.png

重启一下nginx/usr/local/nginx/sbin/nginx -s reload


实时监测一下日志,看现在访问的是哪个后端tail -f 日志文件名


部署注意事项

前端页面非首页部分刷新的时候,页面404问题

修改nginx配置文件,将以下代码放入nginx中

location / {
    ……
    try_files $uri $uri/ /index.html; ---解决页面刷新404问题
}

参考文章:https://www.jb51.net/article/261803.htm


部署后端项目启动失败

查看是不是后端项目的端口号被占用了

netstat -anp | grep 端口号


节省服务器空间

前端和后端的项目打包都可以在本地完成,上传服务器可以最小化上传jar包和dist文件夹,这种方式最节省服务器空间资源


后端项目只保留jar包即可

前端项目只保留dist文件夹即可


相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
目录
相关文章
|
16天前
|
Java 容器
如何在SpringBoot项目中使用过滤器和拦截器
过滤器和拦截器是日常开发中常用技术,用于对特定请求进行增强处理,如插入自定义代码以实现特定功能。过滤器在请求到达 `servlet` 前执行,而拦截器在请求到达 `servlet` 后执行。`SpringBoot` 中的拦截器依赖于 `SpringBoot` 容器,过滤器则由 `servlet` 提供。通过实现 `Filter` 接口并重写 `doFilter()` 方法可实现过滤器;通过实现 `HandlerInterceptor` 接口并重写相应方法可实现拦截器。两者的主要区别在于执行时机的不同,需根据具体场景选择使用。
如何在SpringBoot项目中使用过滤器和拦截器
|
10天前
|
Java 关系型数据库 MySQL
创建一个SpringBoot项目,实现简单的CRUD功能和分页查询
【9月更文挑战第6天】该内容介绍如何使用 Spring Boot 实现具备 CRUD 功能及分页查询的项目。首先通过 Spring Initializr 创建项目并选择所需依赖;其次配置数据库连接,并创建实体类与数据访问层;接着构建服务层处理业务逻辑;最后创建控制器处理 HTTP 请求。分页查询可通过添加 URL 参数实现。
|
19天前
|
XML 前端开发 Java
还不会SpringBoot项目模块分层?来这手把手教你
本文详细介绍了如何为SpringBoot项目创建模块并进行合理的分层设计。通过逐步演示,从创建项目到构建各功能模块,再到具体代码实现,手把手教你实现整洁的代码分层。主要内容包括:创建依赖层、主启动层、模块层及其子模块(如共通层、控制器层、数据持久层等),并通过实例演示了从前端请求到后台服务调用的实际流程。适合SpringBoot初学者及有一定经验但需优化项目结构的开发者参考。
63 2
还不会SpringBoot项目模块分层?来这手把手教你
|
19天前
|
小程序 前端开发 Java
SpringBoot+uniapp+uview打造H5+小程序+APP入门学习的聊天小项目
JavaDog Chat v1.0.0 是一款基于 SpringBoot、MybatisPlus 和 uniapp 的简易聊天软件,兼容 H5、小程序和 APP,提供丰富的注释和简洁代码,适合初学者。主要功能包括登录注册、消息发送、好友管理及群组交流。
42 0
SpringBoot+uniapp+uview打造H5+小程序+APP入门学习的聊天小项目
|
1天前
|
前端开发 JavaScript Java
基于Java+Springboot+Vue开发的在线摄影预约管理系统
基于Java+Springboot+Vue开发的在线摄影预约管理系统(前后端分离),这是一项为大学生课程设计作业而开发的项目。该系统旨在帮助大学生学习并掌握Java编程技能,同时锻炼他们的项目设计与开发能力。通过学习基于Java的在线摄影管理系统项目,大学生可以在实践中学习和提升自己的能力,为以后的职业发展打下坚实基础。
16 8
基于Java+Springboot+Vue开发的在线摄影预约管理系统
|
1天前
|
前端开发 JavaScript Java
基于Java+Springboot+Vue开发的农产品商城管理系统
基于Java+Springboot+Vue开发的农产品商城管理系统(前后端分离),这是一项为大学生课程设计作业而开发的项目。该系统旨在帮助大学生学习并掌握Java编程技能,同时锻炼他们的项目设计与开发能力。 通过学习基于Java的农产品商城管理系统项目,大学生可以在实践中学习和提升自己的能力,为以后的职业发展打下坚实基础。
15 5
基于Java+Springboot+Vue开发的农产品商城管理系统
|
1天前
|
前端开发 JavaScript Java
基于Java+Springboot+Vue开发的新闻管理系统
基于Java+Springboot+Vue开发的新闻管理系统(前后端分离),这是一项为大学生课程设计作业而开发的项目。该系统旨在帮助大学生学习并掌握Java编程技能,同时锻炼他们的项目设计与开发能力。通过学习基于Java的新闻管理系统项目,大学生可以在实践中学习和提升自己的能力,为以后的职业发展打下坚实基础。
14 3
基于Java+Springboot+Vue开发的新闻管理系统
|
2天前
|
前端开发 JavaScript Java
基于Java+Springboot+Vue开发的旅游景区管理系统
基于Java+Springboot+Vue开发的旅游景区管理系统(前后端分离),这是一项为大学生课程设计作业而开发的项目。该系统旨在帮助大学生学习并掌握Java编程技能,同时锻炼他们的项目设计与开发能力。通过学习基于Java的旅游景区管理系统项目,大学生可以在实践中学习和提升自己的能力,为以后的职业发展打下坚实基础。
17 4
基于Java+Springboot+Vue开发的旅游景区管理系统
|
2天前
|
前端开发 JavaScript Java
基于Java+Springboot+Vue开发的体育用品商城管理系统
基于Java+Springboot+Vue开发的体育用品商城管理系统(前后端分离),这是一项为大学生课程设计作业而开发的项目。该系统旨在帮助大学生学习并掌握Java编程技能,同时锻炼他们的项目设计与开发能力。通过学习基于Java的体育用品商城管理系统项目,大学生可以在实践中学习和提升自己的能力,为以后的职业发展打下坚实基础。
13 2
基于Java+Springboot+Vue开发的体育用品商城管理系统
|
2天前
|
前端开发 JavaScript Java
基于Java+Springboot+Vue开发的体育场馆预约管理系统
基于Java+Springboot+Vue开发的体育场馆预约管理系统(前后端分离),这是一项为大学生课程设计作业而开发的项目。该系统旨在帮助大学生学习并掌握Java编程技能,同时锻炼他们的项目设计与开发能力。通过学习基于Java的体育场馆管理系统项目,大学生可以在实践中学习和提升自己的能力,为以后的职业发展打下坚实基础。
12 2
基于Java+Springboot+Vue开发的体育场馆预约管理系统