在Tomcat上部署war文件

有没有办法在Tomcat服务器上部署一个给定的战争文件? 我想这样做,而不使用Web界面。

只需将war文件复制到$ TOMCAT_HOME / webapps /目录中。 Tomcat会通过自动爆炸来部署war文件。 仅供参考 – 如果您想要,您可以直接更新到爆炸目录,这对开发很有用。

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

  • 放到$ CATALINA_HOME / webapps中,如前所述。
  • 使用您的构建脚本通过管理器界面(Tomcat附带)自动部署。 这是两种方法
    • 对于Maven :使用tomcat插件。 您不需要将其包含在pom.xml ,只需发出目标mvn tomcat:deploy ,该插件就包含在Maven 2中。这里假定文档中解释了几个默认值,您可以在pom.xml 配置行为。 还有其他目标可以让你部署为分解档案
    • 对于Ant :这样的事情:
     <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容器”>
         <deploy url =“$ {manager.url}”
                用户名= “$ {} manager.username”
                密码= “$ {} manager.password”
                 PATH = “$ {} app.path”
                 localWar = “文件:// $ {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”
                路径= “$ {app.path}”/>
     </目标>
     <target name =“remove”description =“删除servlet容器上的应用程序”>
         <undeploy url =“$ {manager.url}”
                用户名= “$ {} manager.username”
                密码= “$ {} manager.password”
                路径= “$ {app.path}”/>
     </目标>

所有这些都需要你有一个Tomcat的用户配置。 它的生命$CATALINA_BASE/conf/tomcat-users.xml ,但既然你已经知道如何使用Web界面,我假设你知道如何配置用户和密码。

我们从来不使用网络界面,不喜欢它。 战争被放置在必要时编辑的webapps和server.xml中。 如果你编辑server.xml,你需要反弹它,但战争文件应该自动获取。 我们通常先删除战争扩展的目录,这样就不会混淆组件的来源。

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

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

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

Tomcat 客户端部署包看起来是你需要从命令行部署到远程服务器的东西。 来自页面:

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

您也可以尝试使用这个命令行脚本来管理名为tomcat-manager的tomcat。 它需要Python,并通过HTTP与包含在tomcat中的管理器应用程序通信。 你可以从一个* nix外壳做些东西,比如:

 $ 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