如何在 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.war
和webapps\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?