一、安裝jdk的環境:
這一步很簡單,直接拿到安裝包雙擊安裝即可。
二、配置jdk的環境變量
- 默認安裝的路徑為:C:\Program Files (x86)\Java\jdk1.7.0_51
- 安裝完成之后進行環境變量配置
- 右擊計算機(此電腦)
- 點擊屬性
- 點擊高級系統設置
- 點擊環境變量
- 鼠標隨便點擊下面的系統變量
- 新建,變量名為:JAVA_HOME ,變量值為:C:\Program Files (x86)\Java\jdk1.7.0_51(安裝路徑)
- 到系統環境變量的path,點擊編輯,然后點擊編輯文本
- 在變量值里面的最前面或者最后面追加:[ ;%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin; ]括號里面的內容都追加,然后點擊確定
- 繼續點擊新建,變量名為:CLASSPATH,變量值為:[ .;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar ]中括號里面的內容,包括小數點和分號,點擊確定即可。
- 測試環境變量是否配置好,win+r,輸入cmd,然后回車。
- 直接輸入java,然后回車看看是不是有一大推漢字
- 直接輸入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窗口,需要一直開啟,不然服務就掛了。
? 驗證服務
- 瀏覽器訪問
訪問 http://yourdomain.com ,應能看到 Vue 前端頁面。
訪問 http://yourdomain.com/api/xxx ,應能正確代理到 Spring Boot 后端。 - 檢查日志
如果遇到問題,可以查看 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