将 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 应用程序?