Windows Server部署Vue3+Spring Boot項目

在Windows Server 上部署Vue3 + Spring Boot前后端分離項目的詳細步驟如下:


一、環境準備

  1. 安裝JDK 17+

    • 下載JDK MSI安裝包(如Oracle JDK?或?OpenJDK)

    • 雙擊安裝,配置環境變量:

      • JAVA_HOME:JDK安裝路徑(如?C:\Program Files\Java\jdk-17

      • 添加?%JAVA_HOME%\bin?到?Path

  2. 安裝Node.js

    • 下載Node.js LTS版

    • 默認安裝,驗證安裝成功:

      bash

      復制

      下載

      node -v
      npm -v
  3. 安裝Nginx

    • 下載Windows版Nginx

    • 解壓到目錄(如?C:\nginx


二、后端部署(Spring Boot)

  1. 打包項目

    bash

    復制

    下載

    # 在Spring Boot項目根目錄執行
    mvn clean package -DskipTests
    • 生成?target/項目名.jar(如?myapp-0.0.1-SNAPSHOT.jar

  2. 上傳文件到服務器

    • 將JAR包放到服務器目錄(如?C:\app\backend

  3. 啟動Spring Boot

    bash

    復制

    下載

    java -jar C:\app\backend\myapp-0.0.1-SNAPSHOT.jar
    • 后臺運行(推薦使用批處理):

      batch

      復制

      下載

      @echo off
      start javaw -jar C:\app\backend\myapp-0.0.1-SNAPSHOT.jar
      exit

      保存為?run-backend.bat?并雙擊運行。

  4. 驗證后端

    • 訪問?http://localhost:8080/api/test(按實際API路徑)


三、前端部署(Vue3)

  1. 打包項目

    bash

    復制

    下載

    npm run build
    • 生成?dist?文件夾(包含靜態文件)

  2. 上傳文件到服務器

    • 將?dist?文件夾內容放到Nginx目錄(如?C:\nginx\html\frontend

  3. 配置Nginx反向代理

    • 編輯?C:\nginx\conf\nginx.conf

      nginx

      復制

      下載

      server {listen       80;server_name  your-domain.com; # 替換為域名或IP# 前端靜態資源location / {root   html/frontend;index  index.html;try_files $uri $uri/ /index.html; # 支持Vue Router history模式}# 后端API代理location /api {proxy_pass http://localhost:8080;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;}
      }
  4. 啟動Nginx

    bash

    復制

    下載

    # 命令行進入nginx目錄
    start nginx

四、防火墻配置

  1. 開放端口(管理員PowerShell):

    powershell

    復制

    下載

    New-NetFirewallRule -DisplayName "Allow HTTP" -Direction Inbound -Protocol TCP -LocalPort 80 -Action Allow
    New-NetFirewallRule -DisplayName "Allow Spring Boot" -Direction Inbound -Protocol TCP -LocalPort 8080 -Action Allow

五、設置開機自啟動

  1. Spring Boot

    • 創建批處理文件?start-backend.bat(內容同上)

    • 將快捷方式放入啟動文件夾:

      復制

      下載

      C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp
  2. Nginx

    • 創建批處理文件?start-nginx.bat

      batch

      復制

      下載

      @echo off
      C:\nginx\nginx.exe
    • 同樣將快捷方式放入啟動文件夾。


六、驗證部署

  1. 訪問前端頁面:

    復制

    下載

    http://服務器IP或域名/
  2. 檢查API請求:

    • 前端頁面調用?/api/xxx?應正常返回后端數據


常見問題解決

  1. 端口沖突

    • 修改Spring Boot端口:application.properties?中添加?server.port=9090

    • 或關閉占用端口的進程(如IIS默認占用80端口):

      bash

      復制

      下載

      net stop http /y
  2. Nginx代理404

    • 確保?proxy_pass?地址與Spring Boot運行地址一致

    • 檢查后端API路徑前綴(如?/api/v1?需在Nginx中匹配)

  3. 靜態資源加載失敗

    • 檢查Nginx?root?路徑是否正確

    • Vue打包時設置公共路徑(vue.config.js):

      js

      復制

      下載

      module.exports = {publicPath: process.env.NODE_ENV === 'production' ? '/frontend/' : '/'
      }

關鍵提示

  • 生產環境建議使用?PM2?管理Node進程(但Vue是靜態資源無需Node運行時)

  • 數據庫等依賴服務需獨立部署并配置連接信息

  • 使用HTTPS可配置Nginx SSL證書(Let's Encrypt)

通過以上步驟,即可完成全棧項目在Windows Server 的部署。

在同一臺Windows Server 服務器上完全可以同時運行多個JAR包。這是企業級部署的常見場景(如微服務架構)。以下是具體實現方法和注意事項:


? 關鍵實現步驟

1.?端口分配

為每個JAR分配不同端口(避免沖突):

  • 修改Spring Boot的?application.properties

    properties

    復制

    下載

    # 應用1
    server.port=8080
    # 應用2
    server.port=8081
  • 或啟動時指定端口:

    bash

    復制

    下載

    java -jar app1.jar --server.port=8080
    java -jar app2.jar --server.port=8081
2.?獨立目錄部署

為每個應用創建獨立目錄:

復制

下載

C:\apps
├─app1
│   ├─app1.jar
│   └─config/  # 配置文件
├─app2
│   ├─app2.jar
│   └─config/
3.?批處理腳本啟動

創建多個啟動腳本(如?start-app1.bat,?start-app2.bat):

batch

復制

下載

:: start-app1.bat
@echo off
cd /d C:\apps\app1
start javaw -Xmx512m -jar app1.jar --spring.config.location=config/application.properties
exit

關鍵參數

  • javaw:無控制臺窗口的后臺運行

  • -Xmx512m:限制內存用量

  • --spring.config.location:指定配置文件路徑

4.?Nginx反向代理配置

統一入口轉發到不同應用:

nginx

復制

下載

server {listen 80;# 應用1代理location /app1 {proxy_pass http://localhost:8080;proxy_set_header Host $host;}# 應用2代理location /app2 {proxy_pass http://localhost:8081;proxy_set_header Host $host;}
}

?? 注意事項

1.?資源監控
  • 檢查服務器資源占用:

    powershell

    復制

    下載

    # 查看內存/CPU使用
    Get-Process javaw | Format-Table Name, CPU, WorkingSet
  • 建議配置JVM內存限制(避免OOM):

    bash

    復制

    下載

    java -Xms256m -Xmx1024m -jar app.jar
2.?進程管理
  • 查看所有Java進程

    bash

    復制

    下載

    tasklist | findstr "javaw"
  • 停止特定應用

    bash

    復制

    下載

    taskkill /PID <進程ID> /F
3.?日志分離

為每個應用配置獨立日志文件:

properties

復制

下載

# application.properties
logging.file.name=logs/app1.log
4.?服務化部署(推薦)

使用?NSSM?將每個JAR注冊為Windows服務:

  1. 下載?nssm.exe

  2. 創建服務:

    powershell

    復制

    下載

    # 注冊應用1服務
    nssm install App1_Service "C:\Program Files\Java\jdk-17\bin\java.exe"
    nssm set App1_Service AppParameters "-jar C:\apps\app1\app1.jar"
    nssm set App1_Service AppDirectory "C:\apps\app1"# 啟動服務
    nssm start App1_Service
    • 服務管理:services.msc


📊 資源分配建議

應用規模JVM堆內存建議最大并發應用數
小型應用512MB4~6個
中型應用1-2GB2~3個
大型應用4GB+1個(獨占服務器)

經驗值:預留至少1GB內存給操作系統和Nginx


🔧 故障排查技巧

  1. 端口沖突

    powershell

    復制

    下載

    netstat -ano | findstr ":8080"
  2. 查看特定應用日志

    bash

    復制

    下載

    tail -f C:\apps\app1\logs\application.log
  3. 內存泄漏檢測

    bash

    復制

    下載

    jcmd <PID> GC.heap_info

通過以上方案,您可以穩定運行多個Spring Boot應用。對于生產環境,建議:

  1. 使用?Docker容器化部署(需Windows Server 2016+)

  2. 配置?APM監控(如SkyWalking)

  3. 重要服務配置?集群高可用

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

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

相關文章

CCF CSP 第37次(2025.03)(3_模板展開_C++)(哈希表+stringstream)

CCF CSP 第37次&#xff08;2025.03&#xff09;&#xff08;3_模板展開_C&#xff09; 解題思路&#xff1a;思路一&#xff08;哈希表stringstream&#xff09;&#xff1a; 代碼實現代碼實現&#xff08;思路一&#xff08;哈希表stringstream&#xff09;&#xff09;&…

數據安全管理進階:81頁 2024數據安全典型場景案例集【附全文閱讀】

《2024 數據安全典型場景案例集》聚焦政務數據安全&#xff0c;覆蓋數據細粒度治理、授權運營、接口安全、系統接入、批量數據共享、使用側監管、風險監測、賬號管控、第三方人員管理、密碼應用等十大典型場景&#xff0c;剖析各場景風險并提供技術方案&#xff0c;如基于 AI 的…

Leetcode 261. 以圖判樹

1.題目基本信息 1.1.題目描述 給定編號從 0 到 n - 1 的 n 個結點。給定一個整數 n 和一個 edges 列表&#xff0c;其中 edges[i] [ai, bi] 表示圖中節點 ai 和 bi 之間存在一條無向邊。 如果這些邊能夠形成一個合法有效的樹結構&#xff0c;則返回 true &#xff0c;否則返…

【ISAQB大綱解讀】LG 1-8:區分顯性陳述和隱性假設(R1)

軟件架構師&#xff1a; 應明確提出假設或先決條件&#xff0c;從而防止隱性假設 知道隱性假設可能會導致利益相關方之間的潛在誤解 1. 應明確提出假設或先決條件&#xff0c;防止隱性假設 為什么重要&#xff1f; 隱性假設是架構風險的溫床 例如&#xff1a;假設“所有服務都…

IT運維工具的選擇標準有哪些?

選擇IT運維工具時&#xff0c;可參考以下標準&#xff0c;確保工具適配業務需求且高效易用&#xff1a; 1. 明確業務需求與場景 ? 核心目標&#xff1a;根據運維場景&#xff08;如監控、自動化、安全等&#xff09;匹配工具功能。例如&#xff0c;監控大規模集群選Promethe…

MySQL 核心知識整理【一】

一、MySQL存儲引擎對比&#xff1a;InnoDB vs MyISAM 在使用MySQL時&#xff0c;選擇合適的存儲引擎對性能影響很大。最常見的兩個引擎是 InnoDB 和 MyISAM&#xff0c;它們各自的設計目標不同&#xff0c;適用場景也不一樣。 事務與數據安全性方面&#xff0c;InnoDB 支持事…

人工智能在智能制造業中的創新應用與未來趨勢

隨著工業4.0和智能制造的快速發展&#xff0c;人工智能&#xff08;AI&#xff09;技術正在深刻改變制造業的各個環節。從生產自動化到質量檢測&#xff0c;從供應鏈優化到設備維護&#xff0c;AI的應用不僅提高了生產效率&#xff0c;還提升了產品質量和企業競爭力。本文將探討…

arc3.2語言sort的時候報錯:(sort < `(2 9 3 7 5 1)) 需要寫成這種:(sort > (pair (list 3 2)))

arc語言sort的時候報錯&#xff1a;(sort < (2 9 3 7 5 1)) arc> (sort < (2 9 3 7 5 1)) Error: "set-car!: expected argument of type <pair>; given: 9609216" arc> (sort < (2 9 3 )) Error: "Function call on inappropriate object…

Ubuntu 24.04 LTS Chrome 中文輸入法(搜狗等)失效?一行命令解決

Ubuntu 24.04 LTS Chrome 中文輸入法&#xff08;搜狗等&#xff09;失效&#xff1f;一行命令解決 在 Ubuntu 24.04 LTS 中&#xff0c;如果你發現 Chrome 瀏覽器用不了搜狗輸入法或其他 Fcitx5 中文輸入法&#xff0c;可以試試下面的方法。 直接上解決方案&#xff1a; 打…

大模型前處理-CPU

前處理包含哪些流程 分詞 tokenizationembedding CPU可以做哪些優化 分詞 分詞在做什么&#xff1f; 什么是詞元化&#xff1f; 詞元化&#xff08;Tokenization&#xff09;是把一段自然語言文本拆分成更小的單元&#xff08;稱為“詞元”&#xff0c;即 Token&#xff0…

Kafka數據怎么保障不丟失

在分布式消息系統中&#xff0c;數據不丟失是核心可靠性需求之一。Apache Kafka 通過生產者配置、副本機制、持久化策略、消費者偏移量管理等多層機制保障數據可靠性。以下從不同維度解析 Kafka 數據不丟失的核心策略&#xff0c;并附示意圖輔助理解。 一、生產者端&#xff1a…

圖像處理篇---face_recognition庫實現人臉檢測

以下是使用face_recognition庫實現人臉檢測的詳細步驟、實例代碼及解釋&#xff1a; 一、環境準備 1. 安裝依賴庫 pip install face_recognition opencv-python # 核心庫 pip install matplotlib # 用于顯示圖像&#xff08;可選&#xff09;2. 依賴說明 face_recognitio…

vb.net oledb-Access 數據庫本身不支持命名參數,賦值必須和參數順序一致才行

參數順序問題&#xff1a;OleDb 通常依賴參數添加的順序而非名稱,為什么順序要一樣? OleDbParameter 順序依賴性的原因 OleDb 數據提供程序依賴參數添加順序而非名稱&#xff0c;這是由 OLE DB 規范和 Access 數據庫的工作機制共同決定的。理解這個問題需要從數據庫底層通信…

Syslog 全面介紹及在 C 語言中的應用

Syslog 概述 Syslog 是一種工業標準的日志記錄協議&#xff0c;用于在網絡設備之間傳遞日志消息。它最早由 Eric Allman 在 1980 年代為 BSD Unix 開發&#xff0c;現在已成為系統和網絡管理的重要組成部分。Syslog 協議允許設備將事件消息發送到中央服務器&#xff08;稱為 sy…

HackMyVM-Art

信息搜集 主機發現 ┌──(kali?kali)-[~] └─$ nmap -sn 192.168.43.0/24 Starting Nmap 7.95 ( https://nmap.org ) at 2025-05-31 03:00 EDT Nmap scan report for 192.168.43.1 Host is up (0.0047s latency). MAC Address: C6:45:66:05:91:88 (Unknown) Nmap scan rep…

[paddle]paddle2onnx無法轉換Paddle3.0.0的json格式paddle inference模型

使用PDX 3.0rc1 訓練時序缺陷檢測后導出的模型無法轉換 Informations (please complete the following information): Inference engine for deployment: PD INFERENCE 3.0-->onnxruntime Why convert to onnx&#xff1a;在端側設備上部署 Paddle2ONNX Version: 1.3.1 解…

DOCKER使用記錄

1、拉取鏡像 直接使用docker pull <image>&#xff0c;大概率會出現下面的報錯信息&#xff1a; (base) jetsonyahboom:~$ docker pull ubuntu:18.04 Error response from daemon: Get "https://registry-1.docker.io/v2/": net/http: request canceled while …

Java實習面試題

一、理想汽車一面 1、總結你這個人擅長什么&#xff0c;你的優勢是什么&#xff1f; 2、挑一個項目詳細講講&#xff0c;重點講下你怎么設計的&#xff0c;你的思路是什么&#xff0c;你做的過程中遇到什么難點&#xff0c;怎么克服這些難點&#xff1f; 3、使用RabbitMQ處理…

單元測試報錯

報錯信息如下所示&#xff1a; 五月 30, 2025 5:35:44 下午 org.junit.vintage.engine.descriptor.RunnerTestDescriptor warnAboutUnfilterableRunner 警告: Runner org.junit.internal.runners.ErrorReportingRunner (used on class redis.demo.RedisTemplateTest) does not…

00 QEMU源碼分析中文注釋與架構講解(v8.2.4版本)

QEMU-v8.2.4源碼中文注釋與架構講解 文檔會不定期更新 注釋作者將狼才鯨創建日期2025-05-30更新日期2025-06-02 CSDN閱讀地址&#xff1a;QEMU源碼中文注釋與架構講解Gitee源碼倉庫地址&#xff1a;才鯨嵌入式/qemu 一、前言 其它參考教程的網址&#xff1a; QEMU 源碼目錄…