将Java Web应用程序部署到Amazon Elastic Beanstalk
我的团队正在开发一个Java Web应用程序,该应用程序将部署在Amazon Elastic Beanstalk中。 开发环境是Eclipse和Subversion。 他们能够使用Eclipse插件部署它,但为了自动化部署,我正在尝试使用亚马逊提供的CLI工具。
基本上,在将subversion存储库转换为git存储库之后,我遵循了亚马逊博客文章中详述的步骤。 我按照本SO答案中解释的步骤进行操作
按照上面的步骤,我发出了命令git aws.push ,该命令已成功完成。 但是在运行应用程序时,有错误和。 所以我从Beanstalk环境下载了war文件,发现文件夹结构搞砸了,源文件没有编译成类文件。 看起来源文件是这样上传的。
在使用aws.push之前,我是否需要构建应用程序(使用ant)? 或者我错过了什么?
现在看来我的答案就是我的问题。
aws.push不仅适用于PHP应用程序,而且还可用于部署Java和PHP应用程序。 我已经成功地与Apache Ant一起使用,并且设置在我们的UAT环境中工作正常。
我开发了一个shell脚本,它执行以下操作:
- 查看subversion存储库中的源代码
- 使用Apache Ant构建和创建WAR文件
- 将WAR文件分解为git存储库(使用Amazon EB工具初始化)
- 将展开的文件添加到git repo并提交更改。
- 使用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 repo。
这是ant目标:
你正在使用Maven和Beanstalker ,无论你是否使用git,git aws.push的等效function都可以恢复为单个命令。
$ mvn package beanstalk:fast-deploy
但要确保你的pom准备好了
我遇到了同样的问题 – 看起来git方法只能用于PHP应用程序。
我目前正在寻找其他一些基于Java的工具,因为我不使用Eclipse,而AWS控制台是一种管理版本的笨重方式(并且上传速度非常慢)。