如何在 Amazon EC2 上部署 Eclipse Java Web 动态项目?

Posted

技术标签:

【中文标题】如何在 Amazon EC2 上部署 Eclipse Java Web 动态项目?【英文标题】:How to deploy a Eclipse Java Web Dynamic Project on Amazon EC2? 【发布时间】:2013-04-06 11:29:47 【问题描述】:

我正在尝试创建一个能够与 Amazon RDS 通信的 Web 项目。我知道如何使用 JDBC 使 localhost 项目连接到 RDS。

但是,问题是我从未尝试过部署我的项目(例如,有人可以输入somePage.com,然后转到我的网页)。

我有一个Amazon EC2 实例,并且我已经编写了一个简单的hello world jsp 页面。我可以编译它并使用安装的 Apache Tomcat 服务器 运行 Eclipse Web 动态项目,然后输入 localhost:8080/somePage 然后我可以看到我的 hello world 弹出。

但是,如何在此 EC2 实例上部署我的项目?我使用的是 Windows Server 2012 版本。

我的整个想法是,一旦我设置了一个 AMI 图像,我就可以使用自动缩放来使用该 AMI 图像缩放我的网页。

谁能指出我正确的方向?

【问题讨论】:

你所说的这个简单的hello world,你在哪里运行的?在你的日食中?另外,您是否在 Amazon EC2 实例中安装了 Apache Tomcat? 是的,我在 Eclipse 中运行了它。我还没有在我的 Amazon EC2 实例中安装 Apache Tomcat,我认为这是第一步?我实际上去过那个网站,但 zip 文件中没有 EXE 文件。编辑:我刚刚找到它 【参考方案1】:

Boxfuse 完全符合您的要求。

对于您的 Java Web 应用程序,您实际上只需要执行:

boxfuse create my-tomcat-app -apptype=load-balanced
boxfuse scale my-tomcat-app -capacity=1-16:t2-micro:cpu25-75
boxfuse run my-tomcat-app-1.0.war -env=prod

这会

    将您的应用程序配置为使用 ELB 将其设置为根据 CPU 使用情况在 1 到 16 个 t2.micro 实例之间自动缩放(以 25% 及以下的比例缩小,以 75% 及以上的比例缩小) 创建包含 Tomcat 的 AMI 和准备启动的应用程序 创建 ELB 使用正确的端口创建安全组 创建自动缩放组 启动您的实例

任何后续更新都将作为零停机蓝/绿部署完成。

对于您的域,您可以简单地将您的 samepage.com DNS 记录映射到 ELB 的 CNAME。

更多信息:https://boxfuse.com/blog/auto-scaling

【讨论】:

【参考方案2】:

按照以下步骤操作:

    在您的 Amazon EC2 实例上设置 Apache Tomcat。 通常你所要做的就是download the current version,解压它,然后运行apache-tomcat-folder\bin\startup.bat启动它。 (您也可以下载安装程序并将其设置为 Windows 服务。请查看this link 了解更多详细信息)。 确保在继续之前对其进行测试(在浏览器中打开其地址,例如http://yourinstaceaddress.com:8080/)。 导出您的网络应用程序.war 文件 在 Eclipse 中,右键单击 Web 项目并选择导出。然后在 Export 窗口中选择 WAR 文件,然后选择 Next。选择要导出的项目、.war 文件名和文件夹。更详细的解释可以看here和here (with pictures)。 .war 文件部署到您的Tomcat 服务器 到目前为止,最简单的方法是将.war(比如myapp.war)文件放在apache-tomcat-folder\webapps\ 文件夹中。 还有其他方法,例如通过Tomcat Manager。但它们可能很棘手,作为新用户,您应该避免使用它们。 (不用担心:简单的方法可以用于生产部署)。 测试您的网络应用 访问网址:说您的.war 的名字是myapp.war。你应该访问http://yourinstaceaddress.com:8080/myapp

就是这样。如果您曾经编辑过应用,请重复步骤 2-4(但删除在执行步骤 3 之前创建的 webapps\myapp\ 文件夹)。

【讨论】:

感谢您的帮助,它有效,哇哦!是否可以将 myapp 更改为 index 以便 wwww.yourinstanceaddrss.com 可以工作? 实际上我尝试连接到 localhost/myapp,它可以工作,但是当我尝试将它连接到 instance-public-dns.com/mypass 时却没有。会不会是防火墙问题?编辑:固定,我去了防火墙并为所有端口设置了一个全部允许入站策略。 是的,将myapp.war 重命名为ROOT.war 并照常部署(不要忘记删除之前的ROOT.warwebapps\ROOT 文件夹)。 @user1157751 是的,可以。您是否将端口从默认的 8080 更改为?确保您使用浏览器访问正确的端口。您也可以check if the port is open 确保您可以(通过网络)访问您的实例。 非常感谢您的帮助。我一直在寻找有关如何执行此操作的答案,但许多网站都使用弹性豆茎。顺便说一句,我从未处理过并发访问。我想你已经帮了我很多了,我会努力解决的!谢谢!!!!

以上是关于如何在 Amazon EC2 上部署 Eclipse Java Web 动态项目?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Amazon Auto-scaling 组中的多个 ec2 实例上部署和更新应用程序?

如何在 Amazon EC2 上部署 Eclipse Java Web 动态项目?

在 amazon ec2 (beanstalk) 上编辑已部署文件的权限

如何在 Amazon EC2 上配置基于内存的 Auto Scaling?

使用 FCM 解析部署在 Amazon EC2 Android 通知上的服务器

在 EC2 上运行 Java EE 应用程序