将 Java Web 应用程序部署到 Amazon Elastic Beanstalk

Posted

技术标签:

【中文标题】将 Java Web 应用程序部署到 Amazon Elastic Beanstalk【英文标题】:Deploying Java web application to 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 推送。 【参考方案1】:

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

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

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

    从 subversion 存储库中查看源代码 使用 Apache Ant 构建和创建 WAR 文件 将 WAR 文件分解到 git 存储库(使用 Amazon 初始化 EB 工具) 将分解后的文件添加到 git 存储库并提交更改。 使用 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 的部署的实验性支持

以上是关于将 Java Web 应用程序部署到 Amazon Elastic Beanstalk的主要内容,如果未能解决你的问题,请参考以下文章

使用 Amazon AWS 将 React、Node/Express 和 MySQL Web 应用程序部署到 Web 上

如何为 Amazon Web Service 重构 Java Web 应用程序?

在 Amazon 云上使用 Java Web 服务

部署 Web 应用程序 Amazon AWS

使用 Boxfuse 将播放框架应用程序部署到 Amazon AWS 时出现“不允许主机”错误

将 Django 应用程序部署到 Amazon AWS Elastic Beanstalk 时遇到问题