Tomcat 企业级运维实战系列(六):综合项目实战:Java 前后端分离架构部署
Tomcat 企业级运维实战系列(六):综合项目实战:Java 前后端分离架构部署
- 一:概述
- 二:部署
- 1)环境准备
- 2)部署数据库
- 3)部署后端
- 4)部署前端
- 总结
🚀 Tomcat 系列文章导航
本系列系统讲解 Linux 环境下 Apache Tomcat 的部署、配置、管理与优化,并最终带你完成 企业级前后端分离项目上线。无论你是初学者还是想进阶的运维人员,这份路线图都能帮你快速构建完整的知识体系。
⚠️ 该系列所有涉及的软件包和项目都可以私信博主免费获取
- 👉 第一部分:Tomcat 核心概念与基础部署
- 👉 第二部分:Tomcat 系统化管理与应用部署
- 👉 第三部分:Tomcat 配置解析与集群化部署
- 👉 第四部分:Tomcat 企业级监控
- 👉 第五部分:Tomcat 优化和安全加固
- 👉 第六部分:综合项目实战:Java 前后端分离架构部署
一:概述
-
动静分离:
- 静态资源(html、css、js) → 前端 → 部署到 Nginx。
- 动态功能(Java/PHP/Python/Go…) → 后端 → 部署到 应用服务器,连接数据库。
-
前后端通信:通过 API 接口(Rest API)。
- API:提供功能的调用接口,调用方无需关心内部
-
全栈 = 前端 + 后端。
- 开发流程:
- 前端:Node.js 构建 → 静态资源 → Nginx
- 后端:Maven/Gradle 构建 → war/jar 包 → Java 运行
- 开发流程:
二:部署
1)环境准备
角色 | 主机 | 外网IP | 内网IP |
---|---|---|---|
数据库(MySQL) | da01 | 192.168.2.109 | 172.16.1.109 |
前端 + 后端 | web01 | 192.168.2.104 | 172.16.1.104 |
2)部署数据库
采用二进制包安装
MySQL
-
删除系统自带
MySQL
[root@db01 ~]# rpm -qa | grep -i mariadb-server | xargs rpm -e --nodeps
-
解压
MySQL
二进制安装包[root@db01 ~]# tar -xvf /opt/software/mysql-8.0.26-linux-glibc2.12-x86_64.tar.xz -C /opt/module/
# 重命名 [root@db01 ~]# mv /opt/module/mysql-8.0.26-linux-glibc2.12-x86_64/ /opt/module/mysql-8.0.26
-
创建用户
[root@db01 ~]# useradd -Ms /sbin/nologin mysql
-
创建数据目录
[root@db01 ~]# mkdir -p /opt/module/data/mysql
-
修改配置文件
[root@db01 ~]# cat > /etc/my.cnf << EOF
[mysqld] user=mysql basedir=/opt/module/mysql-8.0.26 datadir=/opt/module/data/mysql port=3306 socket=/tmp/mysql.sock[client] socket=/tmp/mysql.sock
-
添加环境变量
[root@db01 ~]# vim /etc/profile
# MySQL export MYSQL_HOME='/opt/module/mysql-8.0.26' export PATH=${MYSQL_HOME}/bin:${PATH}
[root@db01 ~]# source /etc/profile
-
修改文件所属
[root@db01 ~]# chown mysql:mysql /etc/my.cnf [root@db01 ~]# chown -R mysql:mysql /opt/module/mysql-8.0.26
-
初始化数据库
[root@db01 ~]# mysqld --initialize-insecure --user=mysql --basedir=/opt/module/mysql-8.0.26 --datadir=/opt/module/data/mysql
-
启动
MySQL
[root@db01 ~]# /etc/init.d/mysqld start
-
导入数据
# 1.连接数据库 [root@db01 ~]# mysql mysql>
# 2.创建数据库 mysql> create database exam charset utf8mb4;
# 3.创建用户 mysql> create user 'exam'@'172.16.1.%' identified with mysql_native_password by 'exam';
# 4.授权 mysql> grant all on exam.* to 'exam'@'172.16.1.%';
# 5.导入数据 [root@db01 ~]# mysql exam < /opt/software/xzs-mysql.sql
3)部署后端
-
确定
JDK
环境[root@web01 ~]# java -version java version "1.8.0_212"
-
创建项目
# 1.创建项目目录 [root@web01 ~]# mkdir -p /opt/module/exam# 2.上传项目 jar 包 [root@web01 ~]# ls /opt/moduel/exam xzs-3.9.0.jar
-
配置
application-prod.yml
[root@web01 ~]# vim /opt/module/exam/application-prod.yml
server:port: 8000undertow:io-threads: 16worker-threads: 4000buffer-size: 1024direct-buffers: truecompression:enabled: truemin-response-size: 1 logging:path: /var/log/xzs/ spring:datasource:url: jdbc:mysql://172.16.1.109:3306/exam?useSSL=false&useUnicode=true&serverTimezone=Asia/Shanghai&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&allowPublicKeyRetrieval=true&allowMultiQueries=trueusername: 'exam'password: 'exam'driver-class-name: com.mysql.cj.jdbc.Driver
-
运行后端项目
也可以后台运行
nuhup java -Duser.timezone=Asia/Shanghai -jar -Dspring.profiles.active=prod /opt/module/exam/xzs-3.9.0.jar > start.log 2>&1 &
[root@web01 ~]# java -Duser.timezone=Asia/Shanghai -jar -Dspring.profiles.active=prod /opt/module/exam/xzs-3.9.0.jar
4)部署前端
-
创建站点目录
# 用户端 [root@web01 ~]# mkdir -p /opt/module/exam/student# 管理端 [root@web01 ~]# mkdir -p /opt/module/exam/admin
-
上传前端代码
[root@web01 ~]# unzip /opt/software/exam-web.zip -d /opt/module/
-
编辑
exam.conf
配置文件[root@web01 ~]# vim /etc/nginx/conf.d/exam.conf
# 用户端 server {listen 80;server_name student.cn;root /opt/module/exam-web/student/;location / {index index.html;}location /api/ {proxy_pass http://localhost:8000;} }# 管理端 server {listen 80;server_name admin.cn;root /opt/module/exam-web/admin/;location / {index index.html;}location /api/ {proxy_pass http://localhost:8000;} }
-
刷新
Nginx
[root@web01 ~]# nginx -t [root@web01 ~]# ngins -s reload
-
编辑
hosts
192.168.2.104 student.cn admin.cn
-
访问
-
用户端
http://student.cn
user:student
password:123456
-
管理端
http://admin.cn
user:admin
password:123456
-
总结
📌 本节重点回顾
-
前后端分离架构
-
静态资源(HTML/CSS/JS)由 Nginx 托管,负责页面展示。
-
动态业务逻辑(Java 项目)运行在 后端应用服务器,通过 API 接口 与前端交互。
-
数据库(MySQL)提供数据支撑,实现前后端解耦。
-
-
部署流程
-
数据库层:二进制安装 MySQL → 配置用户与权限 → 导入业务数据。
-
后端层:准备 JDK → 部署 SpringBoot Jar 包 → 配置 application-prod.yml → 启动服务(8000 端口)。
-
前端层:Nginx 部署前端代码 → 配置虚拟主机(student.cn / admin.cn) → 反向代理 API 请求到后端。
-
-
访问效果
-
用户端:http://student.cn
-
管理端:http://admin.cn
-
通过 域名 + Nginx 转发,实现前端、后端、数据库的完整交互。
-
✅ 至此,你已经完成了 企业级 Java 前后端分离架构的完整上线流程,能够独立搭建一个包含数据库、后端服务、前端站点的生产环境。
这一系列学完,相当于完成了 Tomcat 企业级运维实战 —— 以后无论是个人项目还是企业生产环境,你都能独立完成稳定、高效的部署与运维。