2

我目前正在测试大量的网络服务。我想尽可能快地通过终端命令部署和取消部署到 tomcat 应用程序服务器。对于需要部署的大量 Web 服务,使用 HTML GUI 是不合理的。谁能帮助我,如何通过终端命令进行部署?

此外,我正在编写一个自动化部署过程的 ash 脚本,所以如果有人能给我一些指导,那就太好了。

理想情况下,我希望在命令行上做这样的事情:

TOMCAT --parameter 指定 WAR 文件的路径 --parameter2 --specify 某种配置文件

4

3 回答 3

3

首先,您需要确保为tomcat-user.xml配置了正确的用户和角色。最低角色配置为“admin,manager-script”:

  1. 找出tomcat的安装位置。您可以在 bash 中执行此操作: catalina version
  2. 导航到上一个命令的输出中显示的 CATALINA_HOME 配置目录。
cd /usr/local/Cellar/tomcat/8.0.22/libexec/conf
  • 注意:在我的示例中,我使用 homebrew 安装 tomcat 8,用命令行输出中显示的任何内容替换此路径。
  1. 验证server.xml是否包含UserDatabase资源(如果未添加):
  <GlobalNamingResources>
      <Resource name="UserDatabase" auth="Container"
          type="org.apache.catalina.UserDatabase"
          description="User database that can be updated and saved"
          factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
          pathname="conf/tomcat-users.xml" />
  </GlobalNamingResources> 

默认情况下,tomcat 使用内存数据库来存储用户和角色。这是在 conf/server.xml 中配置的。并将用户和角色声明委托给 conf/tomcat-users.xml 文件。有关详细信息,请参阅:http: //tomcat.apache.org/tomcat-8.0-doc/realm-howto.html#UserDatabaseRealm

  1. 然后验证config/user-tomcat.xml 是否存在,如下所示:
  <tomcat-users xmlns="http://tomcat.apache.org/xml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="1.0" xsi:schemaLocation="http://tomcat.apache.org/xml tomcat-users.xsd">
     <role rolename="admin"/>
     <role rolename="manager-script"/>
     <user username="admin" roles="admin,manager-script" password="admin" />
  </tomcat-users>

现在,您已准备好部署战争!

这里有两种方法可以做到这一点......

使用 wget:

wget是一个漂亮的工具,可让您通过命令行执行 http 请求。我建议使用像homebrew这样的包管理器来安装它,否则,你可以使用这个wget install guide进行安装。

  1. 首先重新启动服务器以获取您可能已完成的任何配置更改。catalina stop, 然后catalina start, 将从 bash 中解决问题。
    *注意:使用wget启动部署war到tomcat时,需要先启动tomcat。
  2. 现在执行以下命令:
wget --http-user=admin --http-password=admin  "http://localhost:8080/manager/text/deploy?war=file:/Users/yourusername/app/target/APP-1.0.0.war&path=/app"

笔记:

  • 等待几秒钟让http请求发送并完全部署战争。(有时这需要一段时间)。

  • 您可能很想使用这样的主目录快捷方式来引用 war 文件file:~/app/target/APP-1.0.0.war,但这不起作用。

  • 要取消部署战争,只需在 wget 命令中替换deploy为。undeploy

使用 Tomcat Maven 插件:

如果您有源代码,您可以使用tomcat7-maven-plugin非常轻松地自己构建和部署战争。注意:在我写这篇文章的时候,还没有 tomcat8-maven-plugin;tomcat-7-maven-plugin 适用于 tomcat 8。

  1. 将插件添加到 pom.xml:
<plugin>
  <groupId>org.apache.tomcat.maven</groupId>
  <artifactId>tomcat7-maven-plugin</artifactId>
  <version>${version.tomcat.maven.plugin}</version>
  <configuration>
    <path>/${project.build.finalName}</path>
    <configurationDir>${env.CATALINA_HOME}</configurationDir>
    <additionalConfigFilesDir>${env.CATALINA_HOME}/conf</additionalConfigFilesDir>
    <uriEncoding>${project.build.sourceEncoding}</uriEncoding>
  </configuration>
</plugin>
  1. 导航到pom.xml所在的项目根目录,然后运行以下命令:mvn tomcat7:run
于 2015-07-11T00:23:25.447 回答
2

To deploy a WAR from the command line you can use wget (or curl)

wget "http://localhost:8080/manager/text/deploy?war=file:/path/to/MyWar.war&path=/MyApp" -O -
于 2013-10-09T19:29:13.580 回答
1

看看 Tomcat 的管理器 webapp。您可以使用“文本”界面从命令行执行操作。Tomcat 甚至附带一些 Apache Ant 任务,可以为您部署、取消部署等。

于 2013-10-09T17:37:14.877 回答