Windows 服务器中的 Spring Boot 应用程序
Posted
技术标签:
【中文标题】Windows 服务器中的 Spring Boot 应用程序【英文标题】:Spring boot application in windows server 【发布时间】:2016-12-18 21:21:15 【问题描述】:我打算在windows server中部署一个基于spring boot的web应用。
我想使用 tomcat 容器。
可以直接部署spring boot fat jar还是推荐部署war文件。
请建议如何部署和首选方法?
【问题讨论】:
您需要掌握基础知识,spring boot 是 tomacat 服务器的超集,这意味着它内部有 tomacat 服务器,它会将您的代码部署到它上面并运行服务器,所以当您编写应用程序时在spring boot中,你不需要部署它,只需执行它,它会为你带来一切。 【参考方案1】:在 Windows Server 中运行 Spring 应用程序的一种简单方法是将其作为服务运行。您可以使用 winsw 来完成,您可以在此处下载其 .bin 文件 winws download
然后,将其重命名为 my-app.exe 并创建一个 XML 文件,如下所示:
<service>
<id>my-app-service</id>
<name>my-app-service</name>
<description>Back end service for app</description>
<env name="HOME" value="YOUR_JAR_FILE_PATH"/>
<executable>java</executable>
<arguments>-Xrs -Xmx256m -jar "YOUR_JAR_FILE_PATH\YOUR_JAR_FILE.jar"</arguments>
<logmode>rotate</logmode>
</service>
然后,使用终端运行:
my-app.exe install service
您的应用程序现在是 Windows 服务,您可以在服务选项卡上的任务管理器中启动/停止它。
【讨论】:
感谢rodrigonunesdev.wordpress.com/2017/03/23/… 是否可以使用nssm.exe创建windows服务?【参考方案2】:Spring boot 内部有一个 tomcat 服务器。
-
如果您想在 tomcat 上部署它,那么在使用 maven 构建时将其构建为战争。
-
如果你想部署它有独立的应用程序然后构建有 jar 然后将它放在某个文件夹中并使用以下命令运行它
java -jar yourjarname
。
【讨论】:
【参考方案3】:从最新的 Windows 版本开始,您还可以在 Docker Windows 容器中部署您的 Spring Boot 应用程序。我写了一个完整的指南:https://blog.codecentric.de/en/2017/04/ansible-docker-windows-containers-spring-boot/(如前所述,Tomcat 已经嵌入在 Spring Boot 中)。
【讨论】:
【参考方案4】:正如 Josh Long 喜欢说的“让罐子不要战争!”它确实允许应用程序在可以运行的位置上具有灵活性,并允许将所有内容打包为一个工件。 Windows 运行作为 Spring Boot 一部分的嵌入式 Tomcat 没有问题,这正是它在 IDE 中运行它时所做的事情。对此的一个极端情况是保持进程在服务器上运行。通常在 Windows 中,您可以通过设置服务并让该服务运行java -jar myapp.jar
来实现。我个人还没有看到这样做,所以可能需要一些时间,但这是可能的。
【讨论】:
之前我在heroku cloud(unix)中部署了spring boot jar。在春季启动时,unix系统比windows有什么优势吗?参考:docs.spring.io/spring-boot/docs/current/reference/html/… 这就是我所说的。我不擅长 Windows 服务器管理,因此不确定如何创建类似于为 Linux 设置 init.d 脚本的服务。您将有同样的能力通过命令行定义您的环境设置以帮助调整。 我通常使用 maven clean install 创建 spring boot jar 文件。由于 jar 不包含 html 和 javascripts。我是否必须将整个工作空间与可执行 jar 一起保留在 windows 服务器中才能运行网页。 如果您使用的是 Spring Boot 项目的标准文件夹结构,那么它应该包含这些文件。请在此处查看我的答案,看看是否有帮助:***.com/a/38908589/1499549。如果 html 和 javascript 文件实际上不在项目目录结构中,那么我不确定在部署到 Heroku 时添加这些文件的通常过程是什么。 heroku 有一个 git 存储库,我在其中推送我的应用程序,它使用 maven 构建 jar,并且由于工作区与 jar 一起存在,它的工作非常好。在目前的情况下,我认为我必须将我的 web 文件保存在资源文件夹中,或者使用 maven 资源插件来包含我的 web 应用程序。【参考方案5】:Apache tomcat 是一个 Web 容器,您不能在 tomcat 服务器中部署 jar。如果你创建了一个 web 应用程序,然后将你的应用程序导出为 war 文件并将它放在 tomcat webapp 目录中,启动服务器,你的 war 将被部署。
How to deploy created .jar file in Apache Tomcat server in Eclipse IDE?
【讨论】:
以上是关于Windows 服务器中的 Spring Boot 应用程序的主要内容,如果未能解决你的问题,请参考以下文章
无法通过 Spring Boot 将 Docker Desktop Kubernetes (Windows) 服务连接到本地 Postgres db
Spring Boot项目生成jar包,并在windows服务器中注册成服务,开机启动
Docker,Mongodb,Windows 上的 Spring Boot 出现连接被拒绝错误
在 Windows 上通过 Maven spring-boot:build-image 构建 docker 映像时如何定义架构 arm64?