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

时间:2012-07-04 09:35:23

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

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

基本上,在将subversion存储库转换为git存储库后,我遵循了Amazon Blog post中详述的步骤。我按照this SO answer

中说明的步骤进行操作

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

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

3 个答案:

答案 0 :(得分:6)

现在看来我的答案就是我的问题。

aws.push 不仅适用于PHP应用程序,而且还可用于部署Java和PHP应用程序。我已经成功地与 Apache Ant 一起使用,并且设置在我们的UAT环境中正常工作。

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

  1. 查看来自subversion存储库的源代码
  2. 使用Apache Ant构建和创建WAR文件
  3. 将WAR文件分解为git存储库(使用Amazon初始化) EB工具)
  4. 将展开的文件添加到git repo并提交更改。
  5. 使用aws.push将war文件部署到EB。
  6. (我现在无法访问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。

    这是蚂蚁目标:

    <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>
    

答案 1 :(得分:1)

你正在使用Maven和Beanstalker,无论你是否使用git,git aws.push的等效功能都可以恢复为单个命令。

$ mvn package beanstalk:fast-deploy

但请确保您的pom is ready

答案 2 :(得分:-1)

我遇到了同样的问题 - 看起来git方法只适用于PHP应用程序。

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