如何在 tomcat 上部署 Java Web 应用程序(.war)?

Posted

技术标签:

【中文标题】如何在 tomcat 上部署 Java Web 应用程序(.war)?【英文标题】:How to deploy a Java Web Application (.war) on tomcat? 【发布时间】:2011-01-14 03:10:42 【问题描述】:

我有一个 Java Web 应用程序的 .war 文件。现在我想将它上传到我的 ftp 服务器,以便我可以执行它。

我应该执行哪些步骤来运行它?

webapp的上下文路径是/mywebapp

编辑

实际上,我的 ftp 服务器名称是 ftp://bilgin.ath.cx/,我已将我的 TestWebApp.war 文件上传到此目录:ftp://bilgin.ath.cx/web

那么访问web应用的index.html页面的URL应该是什么

#2 编辑

Tomcat 正在收听8082

Apache 使用 jk 连接器访问 Tomcat。

【问题讨论】:

bilgin.ath.cx 的说明是什么意思? 【参考方案1】:

正如其他人指出的那样,部署 WAR 最直接的方法是将其复制到 Tomcat 安装的 webapps。另一种选择是使用管理器应用程序 if 它已安装(并非总是如此),if 它已正确配置(即,如果您拥有用户的凭据分配给适当的组)如果,您可以通过不安全的网络(如 Internet)访问它(但这不太可能,而且您没有提及任何 *** 访问)。所以这给你留下了webapp目录。

现在,如果 Tomcat 已安装并在 bilgin.ath.cx 上运行(因为这是您上传文件的机器),我注意到 Apache 正在侦听该机器上的端口 80,所以我敢打赌 Tomcat 不是直接暴露并且请求必须通过Apache。在这种情况下,我认为部署一个新的 webapp 并使其对 Internet 可见将涉及编辑 Apache 配置文件(mod_jk?、mod_proxy?)。您应该向我们提供更多详细信息或与您的托管服务提供商讨论。

更新: 正如预期的那样,bilgin.ath.cx 正在使用 Apache Tomcat + Apache HTTPD + mod_jk。配置通常涉及两个文件:worker.properties 用于配置工作人员的文件和httpd.conf 用于 Apache。现在,在没有看到当前配置的情况下,很难给出明确的答案,但基本上,您可能必须在 Apache httpd.conf 中为您的新 webapp1 添加一个 JkMount 指令。请参阅mod_jk 文档,它有一个简单的配置示例。请注意,修改 httpd.conf 将需要访问(显然)和适当的权限,并且您必须在修改后重新启动 Apache。

1 如果你要部署到一个已经使用过的 Tomcat 实例,我认为你不需要定义一个新的 worker,尤其是当这听起来像中文时 :)

【讨论】:

@Yatendra 我真的建议将敏感信息放在公共网站上,即使是很短的时间。而且你不应该让你不认识的人访问合理的资源,即使我实际上是一个好人:)【参考方案2】: 复制webapps文件夹中的.war文件 使用管理器应用程序上传文件 - http://host:port/manager。您必须事先设置一些用户。 (不推荐,但可行)- 手动将 .war 文件解压缩为 .zip 存档,并将解压缩的文件放在 webapps/webappname

有时管理员会配置 tomcat,以便将 war 文件部署在 tomcat 文件夹之外。即使在那种情况下:

部署后(检查/logs 目录是否有任何问题),它应该可以通过:http://host:port/yourwebappname/ 访问。所以在你的情况下,其中之一:

http://bilgin.ath.cx/TestWebApp/
http://bilgin.ath.cx:8080/TestWebApp/

如果您无法通过上述操作和谷歌搜索来解决问题,请寻求您的支持。可能有替代端口,或者应用程序可能有问题(因此在日志中)

【讨论】:

【参考方案3】:

tomcat manual 说:

将 Web 应用程序存档文件复制到目录 $CATALINA_HOME/webapps/ 中。当 Tomcat 启动时,它会自动将 Web 应用程序归档文件展开为解压后的形式,并以这种方式执行应用程序。

【讨论】:

上传到webapps目录后,我应该在浏览器中输入什么URL来访问它的index.html页面............我是J2EE的新手 顺便说一句,tomcat 4 已经过时了 ;) (上面的说法对于 6 仍然是正确的)【参考方案4】:

请注意,您可以deploy remotely using HTTP。

http://localhost:8080/manager/deploy

上传网络应用存档 (WAR) 文件,该文件被指定为 在这个 HTTP PUT 请求中请求数据, 安装到 appBase 目录 我们相应的虚拟主机,和 使用war文件名启动它 没有 .war 扩展名作为 小路。该应用程序可以稍后 未部署(以及相应的 应用程序目录已删除)通过使用 /取消部署。部署 ROOT 网络应用程序(应用程序与 “/”的上下文路径),命名战争 ROOT.war。

如果您使用的是 Ant,您可以使用 Tomcat Ant tasks 执行此操作(可能在成功构建之后)。

要确定您随后在浏览器上点击的路径,您需要知道 Tomcat 正在运行的端口、上下文和您的 servlet 路径。见here for more details。

【讨论】:

您的 FTP 位置(如您的问题中所列)在这种情况下基本上没有意义。 Tomcat 运行的端口号是什么,您的 servlet 名称是什么以及您的上下文名称是什么?这些构成您在浏览器中请求的路径。请参阅上面的编辑。 其次,FTP 是否会导致部署?您需要写入正确的目录,然后检查您的日志文件。【参考方案5】:

登录 :URL = "localhost:8080/" 输入用户名和密码 单击管理器应用程序 向下滚动并找到“要部署的 WAR 文件” 选择文件并点击部署

完成

转到 Apache tomcat 的 Webapp 文件夹,您将看到一个与您的 war 文件名匹配的文件夹名称。

在你的 url 地址栏中输入链接:: localhost:8080/HelloWorld/HelloWorld.html 并回车

完成

【讨论】:

以上是关于如何在 tomcat 上部署 Java Web 应用程序(.war)?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 tomcat 上部署 Java Web 应用程序(.war)?

java web项目怎么通过idea部署到阿里云服务器的tomcat上

项目如何部署到tomcat上?

Java Web开发Tomcat中三种部署项目的方法

TOMCAT如何部署两个java web项目?

TOMCAT如何部署两个java web项目?