Показаны сообщения с ярлыком tomcat. Показать все сообщения
Показаны сообщения с ярлыком tomcat. Показать все сообщения

среда, 23 октября 2013 г.

как выполнить deploy приложения maven на tomcat по протоколу https?

Как выполнить deploy приложения maven на tomcat по протоколу https?

Столкнулся с проблемой удалённой установки приложения на tomcat из-под maven, когда протоколом удалённого подключения является ssl (https). Тут несколько проблем наслаиваются друг на друга. Сначала надо решить вопрос удалённой установки в принципе. 

Пару слов о конфигурации: 
Среда разработки:Windows x64, jdk 1.7.0_45, Eclipse 4.2.2, maven 3.1.1
Среда сервера приложений: Oracle-Linux 6 x64 (без GUI), tomcat 7.0.42, доступ через putty по ssh.

Для освежения памяти, напомню, что tomcat не сам по себе позволяет выполнять удалённую установку приложений. Для этого у него есть приложение deploy, которое идёт в стандартной поставке (его можно отключить, если оно не нужно, тогда tomcat будет работать, а удалённый deploy - нет). Кроме того, политика пользователей в стандартной поставке такова, что по-умолчанию отключены все пользователи, поэтому сразу после установки tomcat нельзя запустить приложение manager, чтобы посмотреть всякую административную информацию о сервере. Кроме того, не стоит забывать, что сам процесс удалённой установки как правило содержит в себе ещё один важный шаг, который за очевидностью не всегда обращает на себя внимания - это шаг отправки приложения на удалённый сервер tomcat. Этот шаш может быть выполнен несколькими путями (я насчитал 4) - с помощью curl с исходной машины методом PUT протокола http(s), утилитой pscp из набора утилит putty с указанием пути к каталогу \webapp, с помощью manager-а tomcat ручным указанием файла приложения для установки (после настройки пользователей), с помощью maven-овского плагина tomcat7-maven-plugin.

Учитывая, что работа идёт в Eclipse, то наиболее предпочтительный вариант - это использование maven (поскольку он уже встроен в eclipse).

Учитывая эту информацию начнём постепенно настраивать удалённую установку приложения.
Самое правильно и простое настроить её по простому протоколу http, без шифрования (чтобы быть уверенным, что проблема именно в протоколе ssl, а не, скажем, в пароле подключения к tomcat-овскому компоненту deploy).

В сети много советов, когда предлагают настроить удалённую установку приложения с использованием файла settings.xml, являющимся файлом настроек maven, но есть и метод поинтереснее, когда все данные для удалённой установки приложения можно указать в настройках плагина. Самое первое, что надо сделать - правильно настроить пользователя tomcat, который будет выполнять удалённую установку приложения:


 Перезапустим сервер. Проверим, что указанный пользователь может зайти в manager:



Теперь нужно выполнить настройку плагина maven для выполнения remote-deploy. Все настройки можно указать в настройках плагина:



важно указать параметры url, чтобы maven знал куда делать deploy приложения, username/password, чтобы знать как подключиться к серверу. path - контекст приложения. Этих параметров вполне достаточно. Теперь надо выполнить команду:

mvn tomcat7:redeploy
или в настройках eclipse:


 и нажать кнопку debug, то должна выполниться удалённая установка. Отлично, значит сама процедура удалённой установки настроена, осталось перевести её на рельсы https. Для этого надо в настройках приложения pom.xml поменять порт назначения и протокол:


Но это ещё не всё. Поскольку мы имеем дело с протоколом ssl, то он будет проверять сертификаты, которые присылает ему сервер. Проверка заключается в том, что он должен выявить наличие корневого узла, от которого идёт доверие к сертификатам, которые предоставляет ему сервер, на который выполняется удалённая установка. Поэтому строчка вызова maven должна выглядеть так:



Этот результат я и добивался. Теперь можно удалённо устанавливать приложения war на tomcat по ssl.