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)da01192.168.2.109172.16.1.109
前端 + 后端web01192.168.2.104172.16.1.104

2)部署數據庫

采用二進制包安裝 MySQL

  1. 刪除系統自帶 MySQL

    [root@db01 ~]# rpm -qa | grep -i mariadb-server | xargs rpm -e --nodeps
    
  2. 解壓 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
    
  3. 創建用戶

    [root@db01 ~]# useradd -Ms /sbin/nologin mysql
    
  4. 創建數據目錄

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

    [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
    
  6. 添加環境變量

    [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
    
  7. 修改文件所屬

    [root@db01 ~]# chown mysql:mysql /etc/my.cnf
    [root@db01 ~]# chown -R mysql:mysql /opt/module/mysql-8.0.26
    
  8. 初始化數據庫

    [root@db01 ~]# mysqld --initialize-insecure --user=mysql --basedir=/opt/module/mysql-8.0.26 --datadir=/opt/module/data/mysql
    
  9. 啟動 MySQL

    [root@db01 ~]# /etc/init.d/mysqld start
    
  10. 導入數據

    # 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)部署后端

  1. 確定 JDK 環境

    [root@web01 ~]# java -version
    java version "1.8.0_212"
    
  2. 創建項目

    # 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

    [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
    
  4. 運行后端項目

    也可以后臺運行

    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)部署前端

  1. 創建站點目錄

    # 用戶端
    [root@web01 ~]# mkdir -p /opt/module/exam/student# 管理端
    [root@web01 ~]# mkdir -p /opt/module/exam/admin
    
  2. 上傳前端代碼

    [root@web01 ~]# unzip /opt/software/exam-web.zip -d /opt/module/
    
  3. 編輯 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;}
    }
    
  4. 刷新 Nginx

    [root@web01 ~]# nginx -t
    [root@web01 ~]# ngins -s reload
    
  5. 編輯 hosts

    192.168.2.104 student.cn admin.cn
    
  6. 訪問

    • 用戶端

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

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/95022.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/95022.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/95022.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

《Unity Shader入門精要》學習筆記四(高級紋理)

1、立方體紋理解釋&#xff1a;站在一個完全透明的玻璃盒子中心&#xff0c;就可以看到6個面。把這個玻璃盒子的6個面都貼上一張照片。這6張照片合起來&#xff0c;就記錄了周圍360度的環境&#xff0c;比如藍天、地面、建筑、樹木等。在2D紋理中&#xff0c;使用坐標來找顏色&…

局域網中使用Nginx部署https前端和后端

目錄 一.前端部署https 二.后端部署https 一.前端部署https 1.前端正常創建項目即可,打包后,文件夾的格式是dist 2.下載認證的證書 也可以使用其他軟件,這里推薦使用mkcert,下載地址如下: Releases FiloSottile/mkcert GitHub 3.輸入 mkcert -install

K8s卷機制:數據持久化與共享

在 Kubernetes&#xff08;K8s&#xff09;中&#xff0c;卷&#xff08;Volume&#xff09; 是用于解決容器內數據持久化、容器間數據共享以及與外部存儲交互的核心機制。它本質上是一個可供 Pod 中容器訪問的存儲目錄&#xff0c;生命周期獨立于容器&#xff08;容器重啟或銷…

線性回歸原理推導與應用(十一):多重共線性

多重共線性的定義與影響 多重共線性&#xff08;Multicollinearity&#xff09;是指線性回歸模型中的解釋變量之間由于存在精確相關關系或高度相關關系而使模型估計失真或難以估計準確。 根據定義和影響程度&#xff0c;可以將多重共線性分為極端共線性和一般共線性。極端共線…

day082-初識ElasticStack

文章目錄0. 老男孩思想-人性十大需求1. ElasticStack介紹1.1 ELK&#xff08;**Elastic Stack**&#xff09;1.2 logstash和filebeat的區別2. ElasticSearch單點部署2.1 下載ElasticSearch軟件包2.2 安裝軟件并修改配置文件2.3 啟動并測試服務3. ElasticSearch集群部署3.1 安裝…

軟考 系統架構設計師系列知識點之雜項集萃(139)

接前一篇文章:軟考 系統架構設計師系列知識點之雜項集萃(138) 第257題 系統工程利用計算機作為工具,對系統的結構、元素、()和反饋等進行分析,以達到最優()、最優設計、最優管理和最優控制的目的。霍爾(A.D.Hall)于1969年提出了系統方法的三維結構體系,通常稱為霍…

solidity地址、智能合約、交易概念

目錄地址address 的兩種子類型&#xff08;Solidity 0.5.0&#xff09;address分類address 的常用操作和屬性總結交易交易的基本結構&#xff08;由外部發起&#xff09;Gas交易生命周期函數調用與交易常見交易場景總結地址 在 Solidity 中&#xff0c;地址&#xff08;addres…

jwt原理及Java中實現

一、JWT 是什么&#xff1f;解決什么問題&#xff1f; 我們先來一張圖看一下這個過程&#xff1a;JWT&#xff08;JSON Web Token&#xff09;是一種把“認證信息&#xff08;Claims&#xff09; 完整性校驗”打包成 自包含 的字符串的規范。 它主要用于無狀態認證&#xff1a;…

大數據在UI前端的應用深化研究:用戶行為數據的跨平臺關聯分析

大數據在UI前端的應用深化研究&#xff1a;用戶行為數據的跨平臺關聯分析每天&#xff0c;你在手機 App 里點了一個按鈕、在網頁上滑了兩屏、又在小程序里停留了 3 秒&#xff0c;這些看似零散的動作&#xff0c;其實都在被悄悄記錄。過去&#xff0c;這些數據只能各自躺在自己…

C++11基礎——— 右值引用和移動語義

1. C11的發展歷史 C11是C的第?個主要版本&#xff0c;并且是從C98起的最重要更新。它引入了大量更改&#xff0c;標準化了既有實踐&#xff0c;并改進了對C程序員可用的抽象。在它最終由ISO在2011年8月12日采納前&#xff0c;人們曾使用名稱“C0x”&#xff0c;因為它曾被期待…

【一】Django框架版本介紹

【一】Django框架版本介紹 【一】Django框架版本 ● Django 是一個高級的Python Web框架&#xff0c;由荷蘭人Armin Ronacher創建。 ● 隨著版本的迭代和功能的不斷優化&#xff0c;Django在處理異步請求方面也有了顯著的進步。 【1】Django1.x ● 默認不支持異步 ● Django 1.…

git 大文件上傳不了的 問題

你 還是在 cmd 里執行&#xff0c;Select-String 是 PowerShell 的命令&#xff0c;cmd 不認識。 請務必按下面的步驟 切換到 PowerShell 再運行。? 1. 打開 PowerShell&#xff08;不要再用 cmd&#xff09;最簡單&#xff1a; 在資源管理器里進入 D:\linShiWenjian\my-react…

【FIX】go運行報錯“missing go.sum entry for module providing package”解決方案

&#x1f527; ?核心解決方案?**運行 go mod tidy**? ?作用?&#xff1a;自動同步 go.mod和 go.sum文件&#xff0c;添加缺失依賴并移除無用條目。 go mod tidy?適用場景?&#xff1a;90% 的校驗和缺失問題可通過此命令解決。 ?注意?&#xff1a;若項目含私有倉庫&…

【實操教學】ArcGIS 如何進行定義坐標系

一、坐標系定義的方式創建數據時可直接完成坐標系定義&#xff1b;針對已創建的數據集&#xff08;涵蓋要素類、要素數據集及柵格數據集&#xff09;&#xff0c;則可通過以下這種方式定義&#xff1a;工具箱工具調用&#xff1a;使用 ArcGIS 工具箱中的 “定義投影&#xff08…

如何使用Windows自帶的PnPUtil命令來禁用/停用和啟用硬件設備

我來詳細講解一下如何使用 Windows 自帶的 PnPUtil 命令來禁用&#xff08;停用&#xff09; 和啟用硬件設備。 PnPUtil (即插即用實用工具) 是一個功能強大的命令行工具&#xff0c;主要用于安裝、卸載、枚舉和修改驅動程序包。對于硬件的啟用和禁用&#xff0c;它通過操作設…

鴻蒙Next媒體展示組件實戰:Video與動態布局全解析

今天我們來深入探討HarmonyOS Next中幾種核心媒體展示組件的使用方法&#xff0c;通過實際代碼示例展示如何打造豐富的多媒體體驗。HarmonyOS Next為開發者提供了一套強大而靈活的媒體展示組件&#xff0c;使開發者能夠輕松實現視頻播放、動態布局適應、全屏切換等常見多媒體功…

復現RoboDK機器人校準功能(以Staubli TX2?90L / TX200機械臂為測試對象,實測精度接近原廠)

本算法復現了 RoboDK 的機器人校準功能&#xff1a;在訓練集的理論校準后精度與 RoboDK 一致&#xff0c;在測試集的實測精度接近 Staubli 原廠。 參考&#xff1a;RoboDK 機器人校準功能&#xff08;https://robodk.com.cn/cn/robot-calibration&#xff09; 特性 支持 SDH 參…

Vue常用指令和生命周期

Vue 是基于 MVVM模型的前端 JavaScript 框架。Vue 核心是數據驅動視圖&#xff0c;通過響應式數據實現視圖自動更新。<template><div>{{ message }}</div><button click"changeMsg">修改內容</button> </template><script se…

深度學習周報(8.25~8.31)

目錄 摘要 Abstract 1 RNN學習意義 2 RNN基礎知識 2.1 核心思想 2.2 傳播 2.3 優缺點 2.4 變體結構與應用場景 3 RNN結構代碼示例 4 總結 摘要 本周主要學習了循環神經網絡的學習意義與基礎知識&#xff0c;重點了解了RNN循環連接的核心思想、前向傳播與反向傳播過程…

借助 LAMBDA 公式,實現單元格區域高效轉換

新特性介紹 “轉換單元格&#xff08;Transform&#xff09;” 功能允許用戶將自定義的單參數 LAMBDA 公式應用于選中的單元格區域。用戶可選擇公式參數的作用域 —— 按單元格、按行、按列或按整個區域。 轉換完成后&#xff0c;源單元格區域會被清空&#xff0c;轉換后的區…