针对多个Java web应用程序的自动化部署解决方案

针对多个Java web应用程序的自动化部署解决方案,java,deployment,web-applications,configuration,maven-2,Java,Deployment,Web Applications,Configuration,Maven 2,我正在寻找能够管理多个相互依赖的JavaWeb应用程序部署的解决方案,最好是开源的 该解决方案需要能够创建和存储一个发布规范,其中包含每个应用程序特定于发布版本的多个项目以及相关的其他工件(数据库配置、apache配置等)。 然后需要解析规范,然后需要在目标环境中部署/执行每个项目。目标环境是基于linux的。Web应用程序在j2ee标准应用程序服务器上运行 有很多问题要问吗 目前,我认为所有的位都已经到位-二进制工件是通过maven发布插件发布的,因此可以从我们的maven repo进行部署,

我正在寻找能够管理多个相互依赖的JavaWeb应用程序部署的解决方案,最好是开源的

该解决方案需要能够创建和存储一个发布规范,其中包含每个应用程序特定于发布版本的多个项目以及相关的其他工件(数据库配置、apache配置等)。

然后需要解析规范,然后需要在目标环境中部署/执行每个项目。目标环境是基于linux的。Web应用程序在j2ee标准应用程序服务器上运行

有很多问题要问吗

目前,我认为所有的位都已经到位-二进制工件是通过maven发布插件发布的,因此可以从我们的maven repo进行部署,数据库使用dbdeploy进行版本控制,apache配置使用svn进行版本控制。然而,我不知道有哪种工具可以将所有这些步骤放在多个应用程序上

我目前首选的方法是使用一种参数化的hudson构建形式来创建规范。然后是第二个参数化构建,用于选择预先创建的规范,并在所选环境中部署/执行它

然而,这似乎是一个大量的工作和低于最佳定制解决方案

有人知道任何预先构建的更好的想法吗?或者如何实现这一点的建议——也许工作流引擎会比哈德逊更好?也许是一个定制的网络应用程序

注:

目标环境是预先构建的,所有要求都已到位-例如,安装了java和app server,数据库正在运行等。这不是一个环境配置问题,而是一个部署问题


自动部署单个应用程序是许多解决方案的一个问题,例如cargo、ant部署脚本等。但是,我需要一些可以包装多个部署的东西。例如,启动多个应用程序的特定版本及其需求。

听起来您需要一个新的配置:)

部署是一项复杂的工作。Maven有许多管理部署所需的插件,但需要进行一些配置才能让它完全按照您的要求运行。 下面介绍如何解决您的每个问题。尽管这取决于你的环境,但可能会带来更多的麻烦

可以使用来部署应用程序。显然,这可能涉及很多问题,但Cargo是管理部署的一个非常好的工具

apache配置可以由构建过程打包为一个单独的jar,并部署到存储库中,然后下载/发布以在部署jar中使用(可以使用从存储库中提取配置jar)。或者,Maven有一个scm api,可用于对scm存储库调用任意命令(请参阅使用scm api的插件示例)

据我所知,dbdeploy没有Maven插件,但这显示了如何使用来编写部署脚本。

签出,一个基于配置管理数据库(CMDB)的开源部署工具存储库,旨在成为一个完整的、企业就绪的系统,用于自动化多层和分布式应用程序服务的部署和管理。根据its:

ControlTier是一个社区驱动的跨平台软件系统,用于跨多个节点和应用程序层协调应用程序服务管理活动。该项目是完全开源的,许多项目贡献来自DTO解决方案正在进行的大规模电子商务、软件即服务和应用程序管理的咨询工作金融服务运营。转到获取并安装软件

也值得一看。

似乎是自动化部署的一个非常好的选择。 其网站上的说明:

什么是谷氨酸? glu是一个免费/开源的部署和监控自动化平台

glu解决了什么问题? glu正在解决以下问题:

  • 将应用程序部署(和监视)到任意大型节点集:
    • 有效地
    • 最少/无人机交互
    • 稳妥
    • 以可复制的方式
  • 确保随时间变化的一致性(防止漂移)
  • 出现问题时快速检测并排除故障
它是如何工作的? glu采用了一种非常
声明性的方法,在这种方法中,您可以描述/建模您想要的内容, 然后glu可以:

  • 计算部署/升级应用程序的操作集
  • 确保它随时间保持一致
  • 当出现不匹配时检测并提醒您

它是由Yan Pujante维护的,起源于LinkedIn,LinkedIn内部使用它。

由于这条旧线索首先出现在谷歌搜索上,我想添加一个新的替代方案:

通过SSH执行命令,安装和使用非常简单。理解概念和开始编写自己的任务只需要几个小时

摘自网站:

除了不需要任何守护进程或引导外,Ansible的Playbook语言是最简单的系统管理语言。它读起来像英语。我们相信您还有其他工作要做,所以我们希望您能够快速完成任务,不要碍事


我有非常相似的要求。专注于应用程序部署而不是环境部署,似乎非常适合

  • 用于创建/配置和控制部署的Web界面
  • 多平台部署支持
  • 版本管理、增量更新和部署
  • 需要时使用plan shell命令
  • 轻便易用的鞋底