应用程序上传云部署(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>
请务必将
安装并启动服务:
以管理员身份打开一个新的命令提示符(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接口进行最终的功能和性能测试。
恭喜您,您已成功完成了整个项目的开发、测试与部署!

浙公网安备 33010602011771号