Скрипт развертывания Tomcat возвращает 405 - PullRequest
0 голосов
/ 28 июня 2019

Я настраиваю Jenkins, чтобы узнать, как реализовать автоматическое развертывание проекта maven в tomcat.

В tomcat-users.xml определены роли и имя пользователя, которые представляют интерес

<role rolename="manager-script"/>
<user username="jenkins" password="jenkins" roles="manager-script"/>

Я настроил web.xml, чтобы разрешить метод PUT

<init-param>
  <param-name>readonly</param-name>
  <param-value>false</param-value>
</init-param>      

и даже пытался настроить приложение менеджера, чтобы разрешить метод PUT для /text/* шаблона

<security-constraint>
  <web-resource-collection>
    <web-resource-name>Text Manager interface (for scripts)</web-resource-name>
      <url-pattern>/text/*</url-pattern>
      <http-method>PUT</http-method>
    </web-resource-collection>
   <auth-constraint>
     <role-name>manager-script</role-name>
  </auth-constraint>
</security-constraint>

Но когда я запрашиваю сценарий развертывания менеджера из командной строки, я получаю ответ 405.

curl -u jenkins:jenkins -F filedata=target/**.war "http://localhost:8080/manager/text/deploy?path=/devops&update=true"

Это вывод:

<!doctype html><html lang="es"><head><title>Estado HTTP 405 ÔÇô Method Not Allowed</title><style type="text/css">h1 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:22px;} h2 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:16px;} h3 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:14px;} body {font-family:Tahoma,Arial,sans-serif;color:black;background-color:white;} b {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;} p {font-family:Tahoma,Arial,sans-serif;background:white;color:black;font-size:12px;} a {color:black;} a.name {color:black;} .line {height:1px;background-color:#525D76;border:none;}</style></head><body><h1>Estado HTTP 405 ÔÇô Method Not Allowed</h1><hr class="line" /><p><b>Tipo</b> Informe de estado</p><p><b>mensaje</b> El Metodo HTTP POST no est├í soportado por esta URL</p><p><b>descripci├│n</b> El m├®todo HTTP especificado no est├í permitido para el recurso requerido.</p><hr class="line" /><h3>Apache Tomcat/8.5.42</h3></body></html>

, который является HTML-ответом о том, что метод HTTP POST не поддерживается для этого маршрута.

Я использую -F filedata = target / **. War, потому что, если я использую опцию -T в Windows, файл войны не может быть открыт

curl -v -u jenkins:jenkins -T target/**.war "http://localhost:8080/manager/text/deploy?path=/devops&update=true"

Выход: curl: Не могу открыть 'target / **. war'!

И, кажется, запрос Tomcat с опцией filedata - это метод POST, который не допускается. Как я могу убедиться, что глагол POST включен для приложения менеджера?

1 Ответ

0 голосов
/ 30 июня 2019

У меня одна и та же версия (8.5.x) в нескольких средах.

Я просто добавляю права доступа и пользователя в файлы xml tomcat в следующих конфигурациях:

https://stackoverflow.com/a/40722537/3957754

Затем я смог развернуть военные файлы из любого места.

Нет необходимости изменять web.xml или менеджера.

Также проверьте эту ссылку, чтобы просмотреть, как развернуть войны для кота и получить статус:

https://stackoverflow.com/a/54292858/3957754

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...