Tomcat manager remote deploy script

Piszę skrypt powłoki do automatycznego wdrażania/undeploy przy użyciu menedżera tomcat.

Postępując zgodnie z instrukcjami na http://tomcat.apache.org/tomcat-6.0-doc/manager-howto.html#Deploy_A_New_Application_Remotely, używam curl do mojego wdrożenia

curl --anyauth -u username:pwd -d path=/something -d war=file:target/someWar.war https://someurl.com/manager/deploy

I dostaję odpowiedź, że metoda HTTP POST nie jest obsługiwana przez ten adres URL.

Więc zmieniam loki na get using-G

curl --anyauth -u username:pwd -G -d path=/something -d war=file:target/someWar.war https://someurl.com/manager/deploy

Otrzymuję odpowiedź FAIL - nie udało się wdrożyć aplikacji w ścieżce kontekstowej / coś i wygląda na to, że szuka pliku lokalnie na serwerze, a nie na moim komputerze. Są pluingi, które zdalnie wdrażają się bez konieczności przeszukiwania pliku, więc zastanawiam się, co mi umyka.

Obecnie nie mam pomysłów(nie widzę innej opcji na stronie konfiguracji menedżera tomcat).

 34
Author: Braiam, 2010-12-13

5 answers

Ten sposób działa u mnie na Tomcat 6 (Zobacz odpowiedź jevelopers dla tomcat 7):

curl --upload-file <path to warfile> "http://<tomcat username>:<tomcat password>@<hostname>:<port>/manager/deploy?path=/<context>&update=true"

Przykład:

curl --upload-file target\debug.war "http://tomcat:tomcat@localhost:8088/manager/deploy?path=/debug&update=true"
Bardzo łatwy peasy. Wyjście wygląda tak:
OK - Undeployed application at context path /debug
OK - Deployed application at context path /debug
 38
Author: s3v1,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-04-09 16:17:04

/ Align = "left" /

Tomcat 7 zmienił interfejs API menedżera.

Proszę odnieść się do: Polecenia Menedżera

Po nowym wzorze URL:

http://{host}:{port}/manager/text/{command}?{parameters}

Przykład

curl -T "myapp.war" "http://manager:manager@localhost:8080/manager/text/deploy?path=/myapp&update=true"

Bezpieczeństwo

Pamiętaj, że serwer musi być w stanie zaakceptować Twój zdalny adres IP. Jest to przykładowa konfiguracja:

<Context privileged="true" antiResourceLocking="false"
         docBase="${catalina.home}/webapps/manager">
  <Valve className="org.apache.catalina.valves.RemoteAddrValve"
         allow="127\.0\.0\.1" />
</Context>

Jest to opcjonalne ustawienie i nie jest wymagane, ale posiadanie roli między domenami i odpowiedniego menedżera referencje są koniecznością.

Tomcat 8 - obowiązują te same zasady co Tomcat 7. Te same polecenia.

Oto pełna dokumentacja:

Http://tomcat.apache.org/tomcat-8.0-doc/manager-howto.html

 45
Author: jeveloper,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-09-20 13:43:12

Dla tych, którzy używają Jenkins i chcą wdrożyć skrypt powłoki w GitBash na komputerze z systemem Windows zamiast wtyczki Jenkins deploy

tomcat_host=192.10.10.100
tomcat_port=8080
tomcat_username=admin
tomcat_password=12345

context_path=myApplication

curl -v -u ${tomcat_username}:${tomcat_password} -T ${artifact} 'http://'${tomcat_host}':'${tomcat_port}'/manager/text/deploy?path=//'${context_path}''

Uwaga:

  1. opcja curl-v jest słowna (opcjonalna)
  2. // dwa ukośniki przed uruchomieniem ścieżki kontekstowej dla GitBash na komputerze z systemem Windows (/pojedynczy ukośnik nie będzie w jakiś sposób)
  3. również podczas wdrażania na zdalnym serwerze, rozważ swoją zaporę tak!
 3
Author: Jet,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-06-03 22:31:17

Najprostszym sposobem wdrożenia aplikacji jest napisanie skryptu Ant. Jedyną inną rzeczą (poza Ant), którą będziesz potrzebował to catalina-ant.jar, aby być obecnym w classpath.

Spójrz na ten rozdział podręcznika: http://tomcat.apache.org/tomcat-6.0-doc/manager-howto.html#Executing_Manager_Commands_With_Ant

Skrypt robi podobną rzecz: używa HTTP do wdrożenia twojego .wojna do aplikacji manager. Możesz nawet chcieć przechwycić pakiety, aby zobaczyć dokładne nagłówki, jeśli nadal chcesz aby użyć curl. Nie polecam jednak curl, ponieważ uważam, że rozwiązanie Ant jest bardziej przenośne i podatne na błędy(np.).

 1
Author: mindas,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-12-14 10:43:42

Poprawiając odpowiedź Jet, działa to dla mnie w tomcat 8, java 64 bity.

Oto co wykonuję:

curl -v -u some_user:some_password -T /../my_app.war 'http://127.0.0.1:tomcat_port/manager/text/deploy?path=/my_app&update=true'

To zadziała, jeśli skonfigurujemy użytkowników tomcat w :

/.../.../apache-tomcat-8.5.0_001/conf/tomcat-users.xml

Z:

<role rolename="manager-gui"/>
<role rolename="manager-script"/>
<role rolename="manager-jmx"/>
<role rolename="manager-status"/>
<role rolename="admin-gui"/>
<role rolename="admin-script"/>

<user username="some_user" password="some_password" roles="manager-gui,manager-script,manager-jmx,manager-status,admin-gui,admin-script"/>

Uruchom ponownie tomcat i jego gotowy do użycia curl whit jenkins!!

 0
Author: JRichardsz,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-06-19 14:57:38