在Tomcat上部署war文件

时间:2008-09-27 00:02:15

标签: java linux tomcat deployment release-management

有没有办法在Tomcat服务器上部署给定的war文件?我想在不使用网络界面的情况下这样做。

6 个答案:

答案 0 :(得分:23)

有多种方法可以部署Tomcat webapp:

  • 正如已经提到的那样,放入$ CATALINA_HOME / webapps。
  • 使用构建脚本通过管理器界面(Tomcat附带)自动部署。以下是两种方式
    • for Maven :使用tomcat插件。您无需在pom.xml中包含它,只需发出目标mvn tomcat:deploy,该插件包含在Maven 2中。这假设在documentation中解释了几个默认值,您可以{{ 3}} pom.xml中的行为。还有其他目标可以将您部署为展开的存档
    • for Ant :类似这样:
    <property name="manager.url"   value="http://localhost:8080/manager"/>
    <property name="manager.username" value="manager"/>
    <property name="manager.password" value="foobar"/>
    <!-- Task definitions -->
    <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"/>
    <!-- goals -->
    <target name="install" depends="compile" description="Install application to servlet container">
        <deploy url="${manager.url}"
                username="${manager.username}"
                password="${manager.password}"
                path="${app.path}"
                localWar="file://${build.home}"/>
    </target>
    <target name="list" description="List installed applications on servlet container">
        <list    url="${manager.url}"
                username="${manager.username}"
                password="${manager.password}"/>
    </target>
    <target name="reload" depends="compile" description="Reload application on servlet container">
        <reload url="${manager.url}"
                username="${manager.username}"
                password="${manager.password}"
                path="${app.path}"/>
    </target>
    <target name="remove" description="Remove application on servlet container">
        <undeploy url="${manager.url}"
                username="${manager.username}"
                password="${manager.password}"
                path="${app.path}"/>
    </target>

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

答案 1 :(得分:10)

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

答案 2 :(得分:2)

您可以编辑conf / server.xml并添加指向您的war目录的条目

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

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

答案 3 :(得分:2)

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

答案 4 :(得分:1)

Tomcat Client Deployer Package看起来是您需要从命令行部署到远程服务器的内容。从页面:

  

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

答案 5 :(得分:1)

您也可以尝试这个名为tomcat-manager的command-line script for managing 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