2013-10-09 110 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
  • 相關問題