WinSW 是一个将任何应用程序包装为 Windows 服务的开源工具,它完美解决了命令行窗口关闭程序就退出的问题,并且支持开机自启、失败重启等生产级特性。
第一步:服务器环境准备
在部署应用之前,确保服务器满足以下基础要求:
-
安装 Java JDK/JRE (必须)
-
(可选) 防火墙配置
-
如果服务器防火墙开启,需要放行您的应用端口(例如 8080)。
-
操作:以管理员身份打开 PowerShell 或 CMD:
powershell
New-NetFirewallRule -DisplayName "Allow Spring Boot App Port" -Direction Inbound -LocalPort 8080 -Protocol TCP -Action Allow
或者使用图形界面在“高级安全 Windows 防火墙”中添加入站规则。
-
第二步:准备应用程序
-
打包项目:在开发环境,使用 Maven 打包为可执行 JAR 文件。
bash
mvn clean package
确保在
target/目录下生成了your-app-name-1.0.0.jar。 -
创建应用目录:在服务器上创建一个独立的目录来存放应用和相关文件,结构清晰便于管理。
text
C:\ └── Applications\ └── MySpringBootApp\ # 你的应用专属目录 ├── app.jar # 你的JAR包 (可重命名) ├── logs\ # 日志目录 ├── config\ # 外部配置文件目录 (可选) ├── myapp-service.exe # WinSW程序 └── myapp-service.xml # WinSW配置文件 -
上传文件:将打包好的 JAR 文件上传到服务器上的
C:\Applications\MySpringBootApp\目录。可以将其重命名为一个简单的名字,如app.jar。
第三步:配置 WinSW
-
下载 WinSW:
-
访问 WinSW 发布页面。
-
下载最新版本的
WinSW-x64.exe(根据你的系统位数选择)。
-
-
放置并重命名:
-
将下载的
WinSW-x64.exe也上传到C:\Applications\MySpringBootApp\目录。 -
将其重命名为与你的服务名相关的名称,例如
myapp-service.exe。这个exe的名字将决定最终服务的名称。
-
-
创建配置文件:
-
在同一目录下创建一个与
.exe文件同名的 XML 文件,即myapp-service.xml。 -
用文本编辑器(如 Notepad++ 或 VSCode)编辑此文件,填入以下配置:
xml
<service> <!-- 服务的唯一ID,不能与其他系统服务重复 --> <id>MySpringBootApplication</id> <!-- 服务的显示名称 --> <name>My Spring Boot Application (Production)</name> <!-- 服务的描述 --> <description>This service runs the MySpringBootApp production application.</description> <!-- 启动的可执行文件,这里是java --> <executable>java</executable> <!-- 传递给可执行文件的参数 --> <arguments> <!-- 指定JAR文件 --> -jar "C:\Applications\MySpringBootApp\app.jar" <!-- 指定激活的生产环境配置文件 --> --spring.profiles.active=prod <!-- 指定外部配置文件路径 (可选但推荐) --> --spring.config.location=C:\Applications\MySpringBootApp\config\application-prod.properties <!-- 设置JVM内存参数 (非常重要!根据你的服务器配置调整) --> -Xms512m -Xmx1024m <!-- 输出日志到文件 (Spring Boot默认也会输出到文件,这是WinSW的日志) --> >> "C:\Applications\MySpringBootApp\logs\service-out.log" </arguments> <!-- 日志模式:滚动日志 --> <log mode="roll-by-size"> <sizeThreshold>10240</sizeThreshold> <keepFiles>8</keepFiles> </log> <!-- 工作目录,jar包所在的目录 --> <workingdirectory>C:\Applications\MySpringBootApp</workingdirectory> <!-- 启动模式:自动 --> <startmode>Automatic</startmode> <!-- 失败时延迟10秒自动重启 --> <onfailure action="restart" delay="10 sec"/> </service>关键配置说明:
-
-Xms512m -Xmx1024m:根据服务器内存设置 JVM 堆内存初始值和最大值,防止内存溢出。 -
--spring.profiles.active=prod:激活名为prod的生产环境配置。 -
--spring.config.location:指向一个外部的配置文件。强烈推荐将数据库密码等敏感信息放在服务器上的这个文件里,而不是打包在 JAR 中,更安全。
-
第四步:安装并启动服务
-
以管理员身份打开命令提示符 (CMD) 或 PowerShell。这一步非常重要,否则会因权限不足而安装失败。
-
导航到你的应用目录:
cmd
cd C:\Applications\MySpringBootApp
-
安装服务:
cmd
myapp-service.exe install
如果成功,你会看到提示
Service 'MySpringBootApplication' was installed successfully.。 -
启动服务:
cmd
sc start MySpringBootApplication
或者使用:
cmd
net start MySpringBootApplication
-
验证服务:
-
打开 “服务” 管理窗口(运行
services.msc),在列表中找到 “My Spring Boot Application (Production)”,查看其状态应为“正在运行”。 -
检查
C:\Applications\MySpringBootApp\logs\目录下的日志文件,查看应用启动是否正常,是否有错误信息。 -
尝试在浏览器访问你的应用
http://服务器IP:端口/。
-
常用管理命令
-
停止服务:
sc stop MySpringBootApplication或net stop MySpringBootApplication -
卸载服务(需要先停止):
cmd
myapp-service.exe uninstall
-
查看服务状态:
sc query MySpringBootApplication -
重启服务:先
stop,再start。
1928

被折叠的 条评论
为什么被折叠?



