当前位置: 首页 > news >正文

如何在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.dtcms.com/a/334454.html

相关文章:

  • JVM垃圾回收器
  • 深度解析Java synchronized关键字及其底层实现原理
  • python学习DAY43打卡
  • C++实战
  • 如果构建企业本地的ERP智能ai系统,让先进的大模型数据处理ERP的各类数据,更加轻松智能,准确?从企业资源计划ERP变成企业资源智能EPA的升级
  • CUDA 编程笔记:CUDA内存模型概述
  • 【数据库】Oracle学习笔记整理之五:ORACLE体系结构 - 参数文件与控制文件(Parameter Files Control Files)
  • 虚拟专用网技术
  • Gradle#构建生命周期三个阶段
  • PyTorch神经网络工具箱(如何构建神经网络?)
  • 基于几何平面的寻路算法:SPEV1Auxiliary全面解析
  • 数据库Microsoft Access、SQL Server和SQLite三者对比及数据库的选型建议
  • Win11家庭版docker安装Minio
  • HTTP 1.0, 2.0 和 3.0 有什么区别?
  • Day11 栈与队列part2
  • 图论Day4学习心得
  • Git Revert 特定文件/路径的方法
  • 使用openssl创建自签名CA并用它签发服务器证书
  • 技术赋能与深度洞察:北京国标政务窗口第三方调查
  • 【攻防实战】红队攻防之Goby反杀
  • day34-LNMP详解
  • 数据结构:构建 (create) 一个二叉树
  • 【图论】分层图 / 拆点
  • 算法训练营day53 图论④ 110.字符串接龙、105.有向图的完全可达性、106.岛屿的周长
  • 树、哈夫曼树以及二叉树的各种操作
  • 【CF】Day128——杂题 (图论 + 贪心 | 集合 + 贪心 + 图论 | 二分答案 + 贪心)
  • 【完整源码+数据集+部署教程】植物病害检测系统源码和数据集:改进yolo11-RFAConv
  • ceph pools have too many placement groups
  • 0815 UDP通信协议TCP并发服务器
  • 【Java web】HTTP 协议详解