Tomcat 企业级运维实战系列(六):综合项目实战:Java 前后端分离架构部署

Tomcat 企业级运维实战系列(六):综合项目实战:Java 前后端分离架构部署


🚀 Tomcat 系列文章导航

本系列系统讲解 Linux 环境下 Apache Tomcat 的部署、配置、管理与优化,并最终带你完成 企业级前后端分离项目上线。无论你是初学者还是想进阶的运维人员,这份路线图都能帮你快速构建完整的知识体系。
⚠️ 该系列所有涉及的软件包和项目都可以私信博主免费获取


一:概述

  • 动静分离

    • 静态资源(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

  1. 删除系统自带 MySQL

    bash 复制代码
    [root@db01 ~]# rpm -qa | grep -i mariadb-server | xargs rpm -e --nodeps
  2. 解压 MySQL 二进制安装包

    bash 复制代码
    [root@db01 ~]# tar -xvf /opt/software/mysql-8.0.26-linux-glibc2.12-x86_64.tar.xz -C /opt/module/
    bash 复制代码
    # 重命名
    [root@db01 ~]# mv /opt/module/mysql-8.0.26-linux-glibc2.12-x86_64/ /opt/module/mysql-8.0.26
  3. 创建用户

    bash 复制代码
    [root@db01 ~]# useradd -Ms /sbin/nologin mysql
  4. 创建数据目录

    bash 复制代码
    [root@db01 ~]# mkdir -p /opt/module/data/mysql
  5. 修改配置文件

    bash 复制代码
    [root@db01 ~]# cat > /etc/my.cnf << EOF
    bash 复制代码
    [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
  6. 添加环境变量

    bash 复制代码
    [root@db01 ~]# vim /etc/profile
    bash 复制代码
    # MySQL
    export MYSQL_HOME='/opt/module/mysql-8.0.26'
    export PATH=${MYSQL_HOME}/bin:${PATH}
    bash 复制代码
    [root@db01 ~]# source /etc/profile
  7. 修改文件所属

    bash 复制代码
    [root@db01 ~]# chown mysql:mysql /etc/my.cnf
    [root@db01 ~]# chown -R mysql:mysql /opt/module/mysql-8.0.26
  8. 初始化数据库

    bash 复制代码
    [root@db01 ~]# mysqld --initialize-insecure --user=mysql --basedir=/opt/module/mysql-8.0.26 --datadir=/opt/module/data/mysql
  9. 启动 MySQL

    bash 复制代码
    [root@db01 ~]# /etc/init.d/mysqld start
  10. 导入数据

    bash 复制代码
    # 1.连接数据库
    [root@db01 ~]# mysql
    mysql> 
    bash 复制代码
    # 2.创建数据库
    mysql> create database exam charset utf8mb4;
    bash 复制代码
    # 3.创建用户
    mysql> create user 'exam'@'172.16.1.%' identified with mysql_native_password by 'exam';
    bash 复制代码
    # 4.授权
    mysql> grant all on exam.* to 'exam'@'172.16.1.%';
    bash 复制代码
    # 5.导入数据
    [root@db01 ~]# mysql exam < /opt/software/xzs-mysql.sql

3)部署后端

  1. 确定 JDK 环境

    bash 复制代码
    [root@web01 ~]# java -version
    java version "1.8.0_212"
  2. 创建项目

    bash 复制代码
    # 1.创建项目目录
    [root@web01 ~]# mkdir -p /opt/module/exam
    
    # 2.上传项目 jar 包
    [root@web01 ~]# ls /opt/moduel/exam
    xzs-3.9.0.jar
  3. 配置 application-prod.yml

    bash 复制代码
    [root@web01 ~]# vim /opt/module/exam/application-prod.yml
    bash 复制代码
    server:
        port: 8000
        undertow:
            io-threads: 16
            worker-threads: 4000
            buffer-size: 1024
            direct-buffers: true
        compression:
            enabled: true
            min-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=true
            username: 'exam'
            password: 'exam'
            driver-class-name: com.mysql.cj.jdbc.Driver
  4. 运行后端项目

    也可以后台运行

    bash 复制代码
    nuhup java -Duser.timezone=Asia/Shanghai -jar -Dspring.profiles.active=prod /opt/module/exam/xzs-3.9.0.jar > start.log 2>&1 &
    bash 复制代码
    [root@web01 ~]# java -Duser.timezone=Asia/Shanghai -jar -Dspring.profiles.active=prod /opt/module/exam/xzs-3.9.0.jar

4)部署前端

  1. 创建站点目录

    bash 复制代码
    # 用户端
    [root@web01 ~]# mkdir -p /opt/module/exam/student
    
    # 管理端
    [root@web01 ~]# mkdir -p /opt/module/exam/admin
  2. 上传前端代码

    bash 复制代码
    [root@web01 ~]# unzip /opt/software/exam-web.zip -d /opt/module/
  3. 编辑 exam.conf 配置文件

    bash 复制代码
    [root@web01 ~]# vim /etc/nginx/conf.d/exam.conf
    bash 复制代码
    # 用户端
    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;
        }
    }
  4. 刷新 Nginx

    bash 复制代码
    [root@web01 ~]# nginx -t
    [root@web01 ~]# ngins -s reload
  5. 编辑 hosts

    bash 复制代码
    192.168.2.104 student.cn admin.cn
  6. 访问


总结

📌 本节重点回顾

  • 前后端分离架构

    • 静态资源(HTML/CSS/JS)由 Nginx 托管,负责页面展示。

    • 动态业务逻辑(Java 项目)运行在 后端应用服务器,通过 API 接口 与前端交互。

    • 数据库(MySQL)提供数据支撑,实现前后端解耦。

  • 部署流程

    • 数据库层:二进制安装 MySQL → 配置用户与权限 → 导入业务数据。

    • 后端层:准备 JDK → 部署 SpringBoot Jar 包 → 配置 application-prod.yml → 启动服务(8000 端口)。

    • 前端层:Nginx 部署前端代码 → 配置虚拟主机(student.cn / admin.cn) → 反向代理 API 请求到后端。

  • 访问效果

至此,你已经完成了 企业级 Java 前后端分离架构的完整上线流程,能够独立搭建一个包含数据库、后端服务、前端站点的生产环境。

这一系列学完,相当于完成了 Tomcat 企业级运维实战 ------ 以后无论是个人项目还是企业生产环境,你都能独立完成稳定、高效的部署与运维。