应用程序上传云部署(Windows云主机版)

背景

最近在windows Server 2022的云主机上部署docker弄了大半天没搞好,也没有底层权限,幸好用到的组件不多(redis&mysql)索性直接裸装了。

核心思路

我们将采用经典的部署方式:在本地将应用打包成一个可执行的JAR文件,然后上传到Windows云主机,最后使用 winsw 工具将其注册为一个可以开机自启、稳定在后台运行的Windows服务。

阶段一:在您的本地电脑上 - 准备部署包

在部署之前,我们需要对项目进行最后的配置检查,并打包成一个独立的可执行文件。

步骤 1.1: 最终化配置文件 (application.properties)
  • 请打开您项目中的 application.properties 文件,检查并修改数据库和Redis的连接地址。它们不应该再是Docker的服务名,而应该是您云主机将要使用的地址。
  • 如果MySQL和Redis也安装在同一台云主机上:您应该使用 localhost。如果它们安装在不同的服务器上:请将 localhost 替换为MySQL和Redis服务器的内网IP地址。
点击查看代码
# 服务器端口号
server.port=8080

# ===============================================
# DATABASE CONFIGURATION (for Windows Server)
# ===============================================
# 确认主机地址指向您云主机上的MySQL服务
spring.datasource.url=jdbc:mysql://localhost:3306/XXXXX
useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai
spring.datasource.username=your_mysql_username # 请替换为您的MySQL用户名
spring.datasource.password=your_mysql_password # 请替换为您的MySQL密码
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

# ===============================================
# REDIS CONFIGURATION (for Windows Server)
# ===============================================
# 确认主机地址指向您云主机上的Redis服务
spring.data.redis.host=localhost
spring.data.redis.port=6379
# spring.data.redis.password=your_redis_password

# ===============================================
# JPA & HIBERNATE CONFIGURATION
# ===============================================
spring.jpa.database-platform=org.hibernate.dialect.MySQLDialect
spring.jpa.hibernate.ddl-auto=update
spring.jpa.show-sql=false

# ===============================================
# ASYNC THREAD POOL CONFIGURATION
# ===============================================
spring.task.execution.pool.core-size=50
spring.task.execution.pool.max-size=100
spring.task.execution.pool.queue-capacity=1000
spring.task.execution.thread-name-prefix=recharge-task-

步骤 1.2: 打包成可执行的 JAR 文件

我们需要将整个项目打包成一个 .jar 文件:

  • 在IntelliJ IDEA的右侧,找到并打开 Maven 标签。
  • 展开您的项目 -> Lifecycle。
  • 首先,双击 clean 来清理旧的构建文件。
  • 然后,双击 package 来开始打包。为了避免测试失败,请确保已在Maven设置中添加 -DskipTests=true。
  • 打包成功后,您会在项目的 target 目录下找到一个名为 XXXXXX-0.0.1-SNAPSHOT.jar 的文件。这个JAR文件就是我们唯一需要部署到服务器上的东西。
阶段二:在您的Windows云主机上 - 准备运行环境

现在,请通过远程桌面连接到您的Windows云主机,并完成以下环境准备工作。

步骤 2.1: 安装 Java (JRE)

您的云主机需要Java环境才能运行我们的 .jar 文件。

在云主机的浏览器中,访问 Adoptium (Eclipse Temurin)。

下载并安装与我们开发时使用的版本相匹配的 JRE (例如 JRE 17)。

安装完成后,打开命令提示符(CMD),输入 java -version,如果能看到版本信息,说明安装成功。

步骤 2.2: 安装并运行 MySQL 和 Redis

请确保您的云主机上已经安装并正在运行MySQL和Redis服务。

步骤 2.3: 开放防火墙端口

我们需要告诉Windows防火墙,允许外部用户访问我们应用所需的端口。
在Windows服务器上,搜索并打开“高级安全 Windows Defender 防火墙。
在左侧点击“入站规则”,然后在右侧点击“新建规则”。
为8080端口创建规则:
规则类型: 选择“端口”。
协议和端口: 选择“TCP”,特定本地端口填 8080。
操作: 选择“允许连接”。
配置文件: 全选“域”、“专用”、“公用”。
名称: 填写一个清晰的名称,如 WebApp-Port-8080。
重复以上步骤,分别为MySQL的 3306 端口和Redis的 6379 端口创建允许访问的入站规则。

阶段三:在您的Windows云主机上 - 部署并运行应用

环境准备好后,我们就可以正式部署了。

步骤 3.1: 上传 JAR 文件

将您在本地电脑上打包好的 batch-recharge-0.0.1-SNAPSHOT.jar 文件,通过远程桌面的复制粘贴功能,上传到您云主机的一个专门的文件夹里,例如 C:\apps\batch-recharge\。

步骤 3.2: 从命令行运行 (用于测试)

在正式部署为服务之前,我们先从命令行启动一次,确保它能在服务器上正常工作。

在云主机上打开命令提示符(CMD)。

使用 cd 命令进入您存放JAR文件的目录,例如 cd C:\apps\batch-recharge\。

执行命令:
java -jar batch-recharge-0.0.1-SNAPSHOT.jar

观察日志,如果应用成功启动并且没有报错,说明环境一切正常。按 Ctrl+C 关闭它,准备进行下一步。

步骤 3.3: 将应用注册为Windows服务 (生产级做法)

为了让我们的应用能够开机自启,并且在关闭命令行窗口后依然在后台稳定运行,我们将使用一个名为 winsw 的小工具来完成。

下载 winsw:

在您的云主机上,访问 winsw的GitHub发布页面。

下载最新版本的 WinSW-x64.exe 文件。

准备文件:

在您的应用目录(C:\apps\XXXXXXXXX\)下,将下载的 WinSW-x64.exe 文件放进去,并将它重命名为一个您喜欢的服务名,例如 my-app-service.exe。

在同一个目录下,创建一个名为 my-app-service.xml 的配置文件(注意,XML文件名必须和EXE文件名完全一样)。

编辑 my-app-service.xml 配置文件:
用记事本或任何文本编辑器打开这个XML文件,将以下内容复制进去:

点击查看代码
<service>
  <id>batch-recharge-app</id>
  <name>Batch Recharge Service</name>
  <description>This service runs the Batch Recharge application.</description>

  <executable>java</executable>
  <arguments>-jar "C:\appsXXXXXX\XXXX-0.0.1-SNAPSHOT.jar"</arguments>

  <log mode="roll-by-size">
    <sizeThreshold>10240</sizeThreshold> <keepFiles>8</keepFiles>
  </log>
</service>

请务必将 中的JAR文件路径修改为您自己的实际路径。

安装并启动服务:

以管理员身份打开一个新的命令提示符(CMD)。

cd 到您的应用目录 C:\apps\XXXXXX\。

安装服务:

my-app-service.exe install

启动服务:

my-app-service.exe start

验证服务:

在Windows搜索框中输入 services.msc 并打开“服务”。

在服务列表中,您应该能找到名为 “XXXXXXX Service” 的服务,并且它的状态是“正在运行”。

阶段四:最终验证

现在,您的应用已经作为一项Windows服务在云主机上7x24小时不间断地运行了。

您可以在您自己的电脑上,打开Apifox或JMeter,将请求的IP地址改为您云主机的公网IP地址,然后调用您的API接口进行最终的功能和性能测试。

恭喜您,您已成功完成了整个项目的开发、测试与部署!

posted @ 2025-07-24 15:30  浪矢-CL  阅读(22)  评论(0)    收藏  举报