【问题标题】:Deploying Java web application to Amazon Elastic Beanstalk将 Java Web 应用程序部署到 Amazon Elastic Beanstalk
【发布时间】:2012-07-04 19:07:19
【问题描述】:

我的团队正在开发一个 Java Web 应用程序,该应用程序将部署在 Amazon Elastic Beanstalk 中。开发环境是 Eclipse 和 Subversion。他们能够使用 Eclipse 插件部署它,但为了自动化部署,我正在尝试使用 Amazon 提供的 CLI 工具。

基本上,在将 subversion 存储库转换为 git 存储库后,我按照Amazon Blog post 中详述的步骤进行操作。我按照this SO answer中解释的步骤进行操作

按照以上步骤,我发出命令git aws.push,成功完成。但是在运行应用程序时,会出现错误和 .于是从Beanstalk环境下载了war文件,发现文件夹结构乱了,源文件没有编译成class文件。看起来源文件是这样上传的。

在使用 aws.push 之前,我是否需要构建应用程序(使用 ant)?还是我错过了什么?

【问题讨论】:

  • 为什么不用upload and deploy直接在弹性豆茎上部署war文件?
  • 当时我需要增量部署功能,使用 aws.push 真的很快
  • @DeepakMishra 你有更多关于如何通过 CLI 上传和部署战争文件的信息吗?我们正在构建我们的战争文件并希望推送这些文件,而不是从 Git 推送。

标签: java amazon-web-services git-svn amazon-elastic-beanstalk


【解决方案1】:

现在我的问题似乎有了答案。

aws.push 不仅适用于 PHP 应用程序,还可以用于部署 Java 和 PHP 应用程序。我已经成功地与 Apache Ant 一起使用,并且该设置在我们的 UAT 环境中运行良好。

我开发了一个 shell 脚本,它执行以下操作:

  1. 从 subversion 存储库中查看源代码
  2. 使用 Apache Ant 构建和创建 WAR 文件
  3. 将 WAR 文件分解到 git 存储库(使用 Amazon 初始化 EB 工具)
  4. 将分解后的文件添加到 git 存储库并提交更改。
  5. 使用 aws.push 将 war 文件部署到 EB。

(我现在无法访问 shell 脚本,所以我可能无法提供详细的命令)

这是基本形式的 Shell 脚本

source_dir="/home/libregeek/myapp"
workingcopy="$source_dir/trunk"
gitrepo="$source_dir/gitrepo"
cd $workingcopy
svn update
ant createwar
cd $gitrepo
unzip -o $workingcopy/build/myapp.war
git add *
git commit -m "Deployed new version"
git aws.push

此脚本存在与陈旧类文件相关的已知问题。要摆脱它,您可能需要清理 git 存储库。

这是蚂蚁目标:

<target name="createwar" depends="build" description="Create WAR file for deployment">
<war destfile="${alternate.path}/${name}.war" webxml="${web.dir}/WEB-INF/web.xml">
<fileset dir="${web.dir}">
<include name="**/*.*"/>
</fileset>
</war>
</target>

【讨论】:

  • 你什么时候这样做,Elastic Beanstalk 是否仍然捆绑爆炸的 WAR 以便你可以在版本之间来回切换?
  • 是的,您可以在版本之间切换。
  • @AaronGreenlee 我很高兴分享脚本,但我太忙了。很快就会尝试。
【解决方案2】:

如果您使用 Maven 和 Beanstalker,则 git aws.push 的等效功能可以恢复为单个命令,无论您是否使用 git。

$ mvn package beanstalk:fast-deploy

但请确保您的pom is ready

【讨论】:

    【解决方案3】:

    我遇到了同样的问题 - 似乎 git 方法仅适用于 PHP 应用程序。

    我目前正在寻找其他一些基于 Java 的工具,因为我不使用 Eclipse,而且 AWS 控制台是一种管理版本的笨拙方式(而且上传速度非常慢)。

    【讨论】:

    • 答案中不问更多问题,可以添加 cmets 来澄清/询问事情。
    • maven-beanstalk-plugin 的 -SNAPSHOT 版本包括对基于 maven 项目的基于 git 的部署的实验性支持
    猜你喜欢
    • 2016-11-12
    • 2013-01-20
    • 2016-07-06
    • 2014-03-31
    • 2015-02-18
    • 2015-09-21
    • 2020-09-02
    • 2012-07-13
    • 2015-08-09
    相关资源
    最近更新 更多