18

有没有办法在 Tomcat 服务器上部署给定的战争文件?我想在不使用 Web 界面的情况下执行此操作。

4

6 回答 6

23

部署 Tomcat webapp 有多种方法:

  • 如前所述,进入 $CATALINA_HOME/webapps。
  • 使用您的构建脚本通过管理器界面(Tomcat 附带)自动部署。这里有两种方式
    • 对于Maven:使用 tomcat 插件。您不需要将它包含在 中pom.xml,只需发出目标mvn tomcat:deploy,插件包含在 Maven 2 中。这假定文档中解释了几个默认值,您可以pom.xml. 还有其他目标可以让您部署为展开的存档
    • 对于蚂蚁:像这样:
    <property name="manager.url" value="http://localhost:8080/manager"/>
    <property name="manager.username" value="manager"/>
    <property name="manager.password" value="foobar"/>
    <!-- 任务定义 -->
    <taskdef name="deploy" classname="org.apache.catalina.ant.DeployTask"/>
    <taskdef name="list" classname="org.apache.catalina.ant.ListTask"/>
    <taskdef name="reload" classname="org.apache.catalina.ant.ReloadTask"/>
    <taskdef name="undeploy" classname="org.apache.catalina.ant.UndeployTask"/>
    <!-- 目标 -->
    <target name="install" depends="compile" description="将应用程序安装到 servlet 容器">
        <部署 url="${manager.url}"
                用户名="${manager.username}"
                密码="${manager.password}"
                path="${app.path}"
                localWar="file://${build.home}"/>
    </目标>
    <target name="list" description="列出 servlet 容器上已安装的应用程序">
        <list url="${manager.url}"
                用户名="${manager.username}"
                密码="${manager.password}"/>
    </目标>
    <target name="reload" depends="compile" description="在 servlet 容器上重新加载应用程序">
        <reload url="${manager.url}"
                用户名="${manager.username}"
                密码="${manager.password}"
                path="${app.path}"/>
    </目标>
    <target name="remove" description="删除 servlet 容器上的应用程序">
        <undeploy url="${manager.url}"
                用户名="${manager.username}"
                密码="${manager.password}"
                path="${app.path}"/>
    </目标>

所有这些都需要您拥有 Tomcat 用户配置。它存在$CATALINA_BASE/conf/tomcat-users.xml,但是由于您已经知道如何使用 Web 界面,我假设您知道如何配置用户和密码。

于 2008-09-27T08:56:37.857 回答
10

只需将 war 文件复制到 $TOMCAT_HOME/webapps/ 目录即可。Tomcat 将通过自动分解来部署 war 文件。仅供参考 - 如果您愿意,您可以直接对展开的目录进行更新,这对开发很有用。

于 2008-09-27T00:10:56.793 回答
2

您可以编辑 conf/server.xml 并添加一个像这样指向您的战争目录的条目

    <Context path="/strutsDisplayTag" 
        reloadable="true" 
        docBase="C:\work\learn\jsp\strutsDisplayTag" 
        workDir="C:\work\learn\jsp\strutsDisplayTag\work" />

否则,您可以将 .WAR 文件复制到 tomcat 的 webapps 目录。

于 2008-09-27T00:05:43.687 回答
2

我们从不使用网络界面,不喜欢它。战争被丢弃在 webapps 和 server.xml 中,根据需要进行编辑。如果您编辑 server.xml,则需要将其退回,但应自动获取 war 文件。我们通常首先删除从战争中扩展的目录,这样就不会混淆组件的来源。

于 2008-09-27T00:13:28.253 回答
1

Tomcat客户端部署程序包看起来是您需要从命令行部署到远程服务器的内容。从页面:

这是一个可用于验证、编译、压缩为 .WAR 并将 Web 应用程序部署到生产或开发 Tomcat 服务器的包。应该注意的是,此功能使用 Tomcat 管理器,因此目标 Tomcat 服务器应该正在运行。

于 2008-09-27T00:37:52.190 回答
1

你也可以试试这个名为 tomcat-manager的用于管理 tomcat 的命令行脚本。它需要 Python,并通过 HTTP 与包含在 tomcat 中的管理器应用程序对话。您可以从 *nix shell 执行以下操作:

$ tomcat-manager --user=admin --password=newenglandclamchowder \
> http://localhost:8080/manager/ stop /myapp

和:

$ tomcat-manager --user=admin --password=newenglandclamchowder \
> http://localhost:8080/manager deploy /myapp ~/src/myapp/myapp.war
于 2013-01-03T07:04:15.047 回答