如何在win服務器中部署若依項目

一、安裝jdk的環境:

這一步很簡單,直接拿到安裝包雙擊安裝即可。

二、配置jdk的環境變量

  1. 默認安裝的路徑為:C:\Program Files (x86)\Java\jdk1.7.0_51
  2. 安裝完成之后進行環境變量配置
  3. 右擊計算機(此電腦)
  4. 點擊屬性
  5. 點擊高級系統設置
  6. 點擊環境變量
  7. 鼠標隨便點擊下面的系統變量
  8. 新建,變量名為:JAVA_HOME ,變量值為:C:\Program Files (x86)\Java\jdk1.7.0_51(安裝路徑)
  9. 到系統環境變量的path,點擊編輯,然后點擊編輯文本
  10. 在變量值里面的最前面或者最后面追加:[ ;%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin; ]括號里面的內容都追加,然后點擊確定
  11. 繼續點擊新建,變量名為:CLASSPATH,變量值為:[ .;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar ]中括號里面的內容,包括小數點和分號,點擊確定即可。
  12. 測試環境變量是否配置好,win+r,輸入cmd,然后回車。
  13. 直接輸入java,然后回車看看是不是有一大推漢字
  14. 直接輸入javac,然后回車看看是不是有一大堆漢字

三、安裝caddy,主要用來替代nginx的反向代理

需要先去下載caddy,下載地址: https://caddyserver.com/download?spm=5176.29317386.0.0.178d1db8z0ticM 。
將下載的 caddy.exe 文件復制到一個目錄,例如: C:\caddy 。
可選:將 C:\caddy 添加到系統環境變量 PATH ,以便在任意位置運行 caddy 命令。
? 配置 Caddyfile
15. 創建 Caddyfile
在 C:\caddy 目錄下創建一個名為 Caddyfile 的文本文件,內容如下:

yourdomain.com {# 反向代理后端 APIroute /api/* {reverse_proxy localhost:8090}
# 靜態資源托管(Vue 前端)root * C:\vue\distfile_server
# 自動 HTTPS(可選)tls your-email@example.com
}

說明:
yourdomain.com:替換為你自己的域名。
/api/*:所有以 /api 開頭的請求都會被代理到 localhost:8090 。
root * C:\vue\dist:將 Vue 打包后的靜態文件路徑指向本地目錄(請根據實際情況修改)。
file_server:啟用靜態文件服務。
tls your-email@example.com :啟用自動 HTTPS,Caddy 會自動申請并續訂 Let’s Encrypt 證書(需要域名解析到當前服務器)。
? 運行 Caddy
16. 測試配置文件
在命令行中運行以下命令,測試 Caddyfile 是否有語法錯誤:
caddy validate
如果沒有報錯,說明配置文件是正確的。

17. 啟動 Caddy
運行以下命令啟動 Caddy:
caddy run
如果一切正常,Caddy 將開始監聽 80 和 443 端口,并自動申請 SSL 證書(如果配置了 tls )。

這里需要注意的是,caddy run命令運行完后,不能關掉cmd窗口,需要一直開啟,不然服務就掛了。

? 驗證服務

  1. 瀏覽器訪問
    訪問 http://yourdomain.com ,應能看到 Vue 前端頁面。
    訪問 http://yourdomain.com/api/xxx ,應能正確代理到 Spring Boot 后端。
  2. 檢查日志
    如果遇到問題,可以查看 Caddy 的日志:
    caddy logs
    ? 附:若依的caddy的配置文件

127.0.0.1:3308 {
# 啟用日志
#log {
# output file logs/access.log
# format json
}
# 靜態文件服務 - 前端文件
root * C:\wechat\project\dist# 開啟gzip壓縮
encode gzip# 處理SPA路由 - 所有不存在的路徑重定向到index.html
#try_files {path} /index.html# API請求反向代理 - 將/dev-api開頭的請求轉發到后端
handle /prod-api/* {uri strip_prefix /prod-apireverse_proxy localhost:9900
}# 處理WebSocket連接 (如果有需要)
#handle /websocket/* {#  reverse_proxy localhost:8080
#}# 默認處理前端靜態文件
handle {file_server
}
自動 HTTPS(可選)
#tls your-email@example.com
}

四、打包項目,并拷貝到指定路徑下

打包在這里就不做解釋,將后端打包成jar,前端打包成dist,放在指定的路徑下:C:\wechat\project,然后我們就可以寫一個bat腳本來實現啟動項目了:


@echo off

rem jar平級目錄
set AppName=us-chen-wechat.jar
set LOGFILE=admin.log

rem JVM參數(新增-Xloggc:gc.log 輸出GC日志)
set JVM_OPTS="-Dname=%AppName% -Duser.timezone=Asia/Shanghai -Xms512m -Xmx1024m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=512m -XX:+HeapDumpOnOutOfMemoryError -XX:+PrintGCDateStamps -XX:+PrintGCDetails -XX:NewRatio=1 -XX:SurvivorRatio=30 -XX:+UseParallelGC -XX:+UseParallelOldGC -Xloggc:gc.log"

ECHO.
ECHO.  [1] 啟動 %AppName%
ECHO.  [2] 關閉 %AppName%
ECHO.  [3] 重啟 %AppName%
ECHO.  [4] 查看運行狀態 %AppName%
ECHO.  [5] 退 出
ECHO.

ECHO.請輸入選擇項目的序號:
set /p ID=IF "%ID%"=="1" GOTO startIF "%ID%"=="2" GOTO stopIF "%ID%"=="3" GOTO restartIF "%ID%"=="4" GOTO statusIF "%ID%"=="5" EXIT
PAUSE
goto:eof

:startset pid=for /f "usebackq tokens=1-2" %%a in (`jps -l ^| findstr %AppName%`) do (set pid=%%aset image_name=%%b)if defined pid (echo %AppName% 已經在運行,PID: !pid!PAUSEgoto:eof)
echo 正在啟動 %AppName% ...start  /B javaw %JVM_OPTS% -jar %AppName% >> admin.log 2>&1&echo 啟動成功...
goto:eof

:stopset pid=for /f "usebackq tokens=1-2" %%a in (`jps -l ^| findstr %AppName%`) do (set pid=%%aset image_name=%%b)if not defined pid (echo %AppName% 沒有運行) else (echo 正在關閉 %image_name%,PID: %pid% ...taskkill /f /pid %pid%)
goto:eof

:restartcall :stoptimeout /t 3 >nulcall :start
goto:eof

:statusset pid=for /f "usebackq tokens=1-2" %%a in (`jps -l ^| findstr %AppName%`) do (set pid=%%aset image_name=%%b)if not defined pid (echo %AppName% 當前未運行) else (echo %AppName% 正在運行,PID: %pid%)
goto:eof

在這里插入圖片描述

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

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

相關文章

CSS從入門到精通完整指南

第一部分:CSS基礎入門1.1 什么是CSSCSS(層疊樣式表,Cascading Style Sheets)是用于描述HTML文檔外觀和格式的樣式語言。CSS將內容與表現分離,讓HTML專注于內容結構,CSS專注于視覺效果。1.2 CSS語法結構選擇…

重溫k8s基礎概念知識系列二(Pod)

文章目錄1、Pod概念2、K8s 中的 Pod 的兩種用法3、定義Pod4、Pod的創建資源5、Pod 模板6、容器探針7、總結干貨8、 K8s Pod 經典面試題速查表Pod是Kubernetes中最小的單元: 1、Pod概念 Pod 是可以在 Kubernetes中創建和管理的、最小的可部署的計算單元。它由一組、一…

設計模式之靜態代理

一些個人理解 顧名思義,就是代理一個對象。 那么,既然要代理一個東西,就要傳入它吧? 【1】所以將代理對象當作屬性【【2】往往通過構造方法傳入被代理的目標對象】。 既然要代理,那必然要和代理對象擁有相同的功能吧? 所以實現了…

牛津大學xDeepMind 自然語言處理(1)

牛津大學xDeepMind 自然語言處理 Natural Language Processing 詞向量與詞匯語義學 Word Vectors and Lexical Semantics 詞語表示的基本問題與分布語義思想 傳統詞語表示(如獨熱向量)存在稀疏、正交、語義弱的問題,無法表達語義相似性。分布…

StarRocks數據庫集群的完整部署流程

目錄 依賴環境 下載安裝包 部署FE 部署BE 搭建集群 停止集群 依賴環境 詳見&#xff1a;StarRocks 部署&#xff1a;依賴環境-CSDN博客 下載安裝包 在官方網站下載安裝包&#xff1a;StarRocks 部署FE 創建元數據目錄。 mkdir -p <meta_dir> 修改 FE 配置文件 f…

簡單的 VSCode 設置

以下是我使用的vscode設置。雖然有些主觀&#xff0c;但很實用。1 主題。我放棄了那些炫酷的主題。我選擇了Tokyo Night (Storm)。理由是&#xff1a;它平靜、賞心悅目&#xff0c;并且與代碼形成了美麗的對比&#xff0c;卻又不顯得刺眼。2. 字體。我切換到了 JetBrains Mono …

Rust 條件語句

Rust 條件語句 在編程語言中&#xff0c;條件語句是程序流程控制的重要組成部分。Rust 作為一種系統編程語言&#xff0c;其條件語句的設計簡潔而強大。本文將詳細介紹 Rust 中的條件語句&#xff0c;包括其語法、用法以及一些高級特性。 1. 基本條件語句 Rust 中的基本條件語句…

【Java EE進階 --- SpringBoot】初識Spring(創建SpringBoot項目)

樂觀學習&#xff0c;樂觀生活&#xff0c;才能不斷前進啊&#xff01;&#xff01;&#xff01; 我的主頁&#xff1a;optimistic_chen 我的專欄&#xff1a;c語言 &#xff0c;Java, Java EE初階&#xff0c; Java數據結構 歡迎大家訪問~ 創作不易&#xff0c;大佬們點贊鼓勵…

腦潛在進展:基于潛擴散模型的三維腦磁共振成像個體時空疾病進展研究|文獻速遞-深度學習人工智能醫療圖像

Title題目Brain Latent Progression: Individual-based spatiotemporal diseaseprogression on 3D Brain MRIs via latent diffusion腦潛在進展&#xff1a;基于潛擴散模型的三維腦磁共振成像個體時空疾病進展研究01文獻速遞介紹神經退行性疾病是現代醫療保健領域最緊迫的挑戰之…

專題:2025AI技術應用與發展報告|附600+份報告PDF、數據儀表盤匯總下載

原文鏈接&#xff1a;https://tecdat.cn/?p43632 當企業管理者看著后臺65%的任務被AI自動分配&#xff0c;卻仍在為下周的營銷方案熬夜改稿時&#xff0c;一個現實的矛盾浮出水面&#xff1a;AI到底能幫企業做什么&#xff1f; 2025年&#xff0c;算法研發投入占企業AI預算的…

【筆記】擴散模型(一一):Stable Diffusion XL 理論與實現

論文鏈接&#xff1a;SDXL: Improving Latent Diffusion Models for High-Resolution Image Synthesis 官方實現&#xff1a;Stability-AI/generative-models 非官方實現&#xff1a;huggingface/diffusers Stable Diffusion XL (SDXL) 是 Stablility AI 對 Stable Diffusion 進…

學習安卓APP開發,10年磨一劍,b4a/Android Studio

學習安卓APP開發 記得上次學APP都是在2016年前了&#xff0c;一晃就過去了10年。 當時用ANDROID studio打開一個空項目和編繹分別用了300秒&#xff0c;一下就用了10分鐘。 后來買了一臺一萬多的電腦&#xff0c;CPU換成了I5 8600K 4.2GHZ*6核&#xff0c;再加上M2固態硬盤。 編…

調試技巧(vs2022 C語言)

調試之前首先要保證我們的腦袋是清晰的&#xff0c;我們調試的過程主要是看代碼有沒有按照我們的想法去運行調試最常使用的幾個快捷鍵F5啟動調試&#xff0c;經常用來直接跳到下一個斷點處&#xff08;F5通常和F9配合使用&#xff0c;打了斷點按F5程序可以直接運行到斷點處&…

MySQL深度理解-Innodb底層原理

1.MySQL的內部組件結構大體來說&#xff0c;MySQL可以分為Server層和存儲引擎層兩部分。2.Server層Server層主要包括連接器、查詢緩存、分析器、優化器和執行器等&#xff0c;涵蓋MySQL的大多數核心服務功能&#xff0c;以及所有的內置函數&#xff08;如日期、時間、數據和加密…

QFtp在切換目錄、上傳文件、下載文件、刪除文件等一系列操作時,如何按照預期操作指令順序執行

FTP服務初始化時&#xff0c;考慮到重連、以及commandFinished信號信號執行完成置m_bCmdFinished 為true; void ICore::connectFtpServer() {if(g_pFile nullptr){g_pFile new QFile;}if(g_pFtp){g_pFtp->state();g_pFtp->abort();g_pFtp->deleteLater();g_pFtp n…

JavaSE高級-02

文章目錄1. 多線程1.1 創建線程的三種方式多線程的創建方式一&#xff1a;繼承Thread類多線程的創建方式二&#xff1a;實現Runnable接口多線程的創建方式三&#xff1a;實現Callable接口三種線程的創建方式對比Thread的常用方法1.2 線程安全線程同步方式一&#xff1a;同步代碼…

從舒適度提升到能耗降低再到安全保障,樓宇自控作用關鍵

在現代建筑的發展歷程中&#xff0c;樓宇自動化控制系統&#xff08;BAS&#xff09;已從單純的設備管理工具演變為集舒適度優化、能耗控制與安全保障于一體的核心技術。隨著物聯網和人工智能的深度應用&#xff0c;樓宇自控系統正以數據為紐帶&#xff0c;重構人與建筑的關系。…

圖像分類精度評價的方法——誤差矩陣、總體精度、用戶精度、生產者精度、Kappa 系數

本文詳細介紹 “圖像分類精度評價的方法”。 圖像分類后&#xff0c;需要評估分類結果的準確性&#xff0c;以判斷分類器的性能和結果的可靠性。 常涉及到下面幾個概念&#xff08;指標&#xff09; 誤差矩陣、總體精度、用戶精度、生產者精度和 Kappa 系數。1. 誤差矩陣&#…

【科普向-第一篇】數字鑰匙生態全景:手機廠商、車廠與協議之爭

目錄 一、協議標準之爭&#xff1a;誰制定規則&#xff0c;誰掌控入口 1.1 ICCE&#xff1a;中國車企主導的自主防線 1.2 ICCOA&#xff1a;手機廠商的生態突圍 1.3 CCC&#xff1a;國際巨頭的高端壁壘 1.4 協議對比 二、底層技術路線&#xff1a;成本與安全的博弈 2.1B…

dockerfile及docker常用操作

1: docker 編寫 Dockerfile 是用于構建 Docker 鏡像的文本文件&#xff0c;包含一系列指令和參數&#xff0c;用于定義鏡像的構建過程 以下是關鍵要點&#xff1a; 一、基本結構 ?FROM?&#xff1a;必須作為第一條指令&#xff0c;指定基礎鏡像&#xff08;如 FROM python:3.…