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 企業級運維實戰 —— 以后無論是個人項目還是企業生產環境,你都能獨立完成穩定、高效的部署與運維。