2013-10-09 61 views
2

我目前正在测试大量的web服务。我想通过终端命令尽可能快地部署和取消部署到tomcat应用服务器。对于我需要部署的大量Web服务,使用HTML GUI不太合理。任何人都可以协助我,如何通过终端命令进行部署?另外,我正在编写一个ash脚本,可以自动执行部署过程,所以也许如果有人能给我一些方向,那就太棒了。如何通过终端命令将web应用程序部署到tomcat应用程序服务器

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

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

回答

1

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

2

部署从您可以使用wget命令行一个WAR(或卷曲)

wget "http://localhost:8080/manager/text/deploy?war=file:/path/to/MyWar.war&path=/MyApp" -O - 
+0

谢谢你。我忘了提及我正在通过可执行jar运行Tomcat。我在这里找到了说明:http://tomcat.apache.org/maven-plugin-trunk/executable-war-jar.html。接下来我想知道的是如何为特定的Web服务创建参数。就我而言,我将webservice部署到数据库,我希望用户在运行webservice时指定凭据。我将如何设置这些参数?我在想: java -jar tomcat.war.jar --xmlconfigFileforMyapp/path/to/config/--user foo --password random – AspiringGeek

+0

'将webservice部署到数据库'对不起,我不知道不明白。 – anubhava

+0

请注意,只有在Tomcat服务器上有WAR文件时,此解决方案才有效。可以在部署点上载WAR文件,这非常方便。 –

1

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

  1. 找出安装tomcat的位置。您可以在bash中执行此操作:catalina version
  2. 导航到上一个命令的输出中显示的CATALINA_HOME配置目录。
cd /usr/local/Cellar/tomcat/8.0.22/libexec/conf 
  • 注:在我的例子中,我使用自制安装Tomcat 8,替换任何显示在您的命令行输出这条路。
  • 验证的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了解更多信息。

  • 然后验证配置/用户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开始将战争部署到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请求发送,并全面部署了战争。 (有时这需要一段时间)。

    • 您可能会试图使用主目录快捷方式(如file:~/app/target/APP-1.0.0.war)引用war文件,但这样做不起作用。

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

    使用Tomcat Maven插件:

    如果你的源代码,你可以建立并很容易与tomcat7-maven-plugin部署自己的战争。注意:在我写这个的时候,没有tomcat8-maven-plugin; Tomcat的-7-行家-插件工作得很好为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> 
    
  • 导航到你的项目的根,其中pom.xml的是,并运行以下命令:mvn tomcat7:run
  • 相关问题