【问题标题】:How to deploy both Spring boot and angular project separately on apache tomcat如何在 apache tomcat 上分别部署 Spring Boot 和 Angular 项目
【发布时间】:2018-09-10 22:31:46
【问题描述】:

我已经分别创建了 Spring Boot 应用程序和 Angular 项目(Angular 1)。在我的本地,我使用 npm 为客户端应用程序提供服务,它调用我的后端应用程序服务。我在 Spring Boot 应用程序中使用嵌入式 tomcat。

现在我想在服务器中托管我的应用程序。我怎么做? 我可以嵌入tomcat并构建为jar,还是必须在服务器中安装独立的tomcat并将我的应用程序部署为war?

如何配置我的客户端代码,例如,在 Godaddy 中,我将 ip xx.xx.xx.xx 提供给 www.xyz.com。 ip地址是我的生产云服务器。如何重定向到 Angular 应用程序以及该应用程序调用服务器公开的 api。

我不能拥有具有客户端代码的单个应用程序。我应该只处理两个不同的应用程序。请帮助我以最佳方式部署它。如果嵌入式 tomcat 没有帮助,那么我可以在服务器中安装独立的 tomcat,并将我的应用程序构建为 war 并部署它。

【问题讨论】:

  • 您可以将客户端和服务器部署在同一个 Web 服务器(例如 Tomcat)中。为了部署客户端,您可以从 Angular 生成静态文件并复制到 tomcat web-app 文件夹。最终,您希望自动执行此任务。
  • @PrabinPaudel 如何配置虚拟主机?我在tomcat的webapp文件夹中有2个应用程序,一个是后端项目,另一个是前端项目。如果我从浏览器点击 www.xyz.com,tomcat 应该服务于前端 Angular 项目。您能帮忙配置一下吗?

标签: java angularjs spring-boot deployment


【解决方案1】:

当前的最佳实践是将 servlet 容器(Tomcat、Jetty 等)嵌入到工件中并构建一个胖 JAR。主要优点是简化的部署过程:将远程 JAR 推送到环境中并执行它就足够了。与具有 WAR 部署模型的通常 servlet 容器不同,嵌入式方法不必处理额外的配置层,例如不同 WAR 之间共享的线程池或数据源。

如何使用嵌入式 servlet 容器构建 far JAR 的一个示例是具有 spring-boot-maven-plugin:repackage 目标的 spring-boot-starter-web 依赖项。在这个构建胖 JAR 的设置中,运行 mvn clean package repackage 就足够了。

如果您在本地开发,您的 Web 客户端代码很可能会面临同源策略的问题。您很可能需要一个 CORS 过滤器,但它是 provided by Tomcat

【讨论】:

    猜你喜欢
    • 2021-01-03
    • 2018-06-21
    • 1970-01-01
    • 2020-03-30
    • 2019-04-12
    • 2019-01-28
    • 2020-06-17
    • 2013-05-28
    • 2016-06-17
    相关资源
    最近更新 更多