Несколько конфигураций одной и той же войны - PullRequest
1 голос
/ 09 февраля 2012

В настоящее время у меня есть веб-приложение, я экспортирую его с помощью eclipse в войне, вручную копирую его с помощью scp на сервер, запускаю сценарий, который извлекает войну, использует локальные файлы конфигурации для перезаписи файлов войны и копируетИзвлеченная папка в tomcat / webapps.Это звучит легко для сервера или двух, но не для 100.

Как я могу улучшить это, чтобы лучше контролировать установленные версии / конфигурации и легче развернуть его?

Ответы [ 5 ]

3 голосов
/ 09 февраля 2012

См. Развертывание веб-приложения на нескольких серверах tomcat с помощью Kwatee Agile Deployment. После того, как вы настроили параметры развертывания с помощью веб-интерфейса, вы можете запускать из Ant с помощью задачи kwatee или из инструмента непрерывной интеграции с инструментами Python CLI.

3 голосов
/ 09 февраля 2012

Вы могли бы действительно выиграть от использования круиз-контроля или Hudson для создания непрерывных сборок для вас. Там вы можете иметь локальные конфигурации войны, встроенные в войну. Вы могли бы создать множество вкусов из них. Затем, для развертывания, нужно просто подтолкнуть соответствующие войны на свое законное место. Взрыв не требуется, повторное заполнение не требуется.

1 голос
/ 20 июня 2012

Чтобы помочь управлять этими несколькими конфигурациями, я запрограммировал очень легкую библиотеку с именем xboxng здесь

Она гибкая и довольно простая в использовании (не требуется JNDI).

0 голосов
/ 13 февраля 2012

Поскольку это не вопрос с единственным ответом, в зависимости от проекта и, если нет, личного вкуса, я опубликую некоторые шаги, которые, как я считаю, могут помочь всему процессу управления / развертывания.

Это не означает, что решения, предлагаемые другими авторами, неверны (некоторые из них получили мое одобрение), но то, что я обнаружил, будет работать лучше для меня.

1) Чтобы иметь только одну версию войны с несколькими конфигурациями, я использовал JNDI.Я установил переменную env в путь, где я мог бы найти конфигурацию.Это было добавлено в web.xml:

<env-entry>
<description>path to configuration files</description>
<env-entry-name>appName/pathToConfigFiles</env-entry-name>
<env-entry-type>java.lang.String</env-entry-type>
<env-entry-value>/configFolder/appName/</env-entry-value>
</env-entry>

Это значение по умолчанию, когда файлы конфигурации взяты из войны, но оно может быть переопределено context.xml.

<Environment name="appName/pathToConfigFiles" 
    type="java.lang.String" value="/etc/.."/>

Таким образом, если кому-то нужно, например, изменить параметры подключения к базе данных, мне не придется развертывать новую войну.Администратор может изменить файл в папке конфигурации.Файл конфигурации db и файл log4j - мои единственные внешние файлы.Остальная конфигурация выполняется через базу данных.

Основным преимуществом является то, что один и тот же артефакт может быть развернут как в тестировании, так и на производстве, и на любом из 100 серверов.В настоящее время я использую его в Tomcat, но переменные env должны быть доступны на других серверах приложений.

2) Изменено с сборки IDE на инструмент сборки.Я выбрал Maven, но вы можете использовать муравья / что угодно.Для этого мне пригодились следующие источники:

Для этого мне также потребуется установить Nexus в качестве зеркального хранилища.

3) Установить инструмент непрерывной интеграции, такой как Jenkins / Hudson.Это замечательный инструмент, но из-за его сложной природы, потребуется время, чтобы настроить его и расширить его функциональность.В настоящее время я читаю Jenkins: Полное руководство и пытаюсь получить следующие функциональные возможности:

  • Автоматизированный сервер сборки
  • Автоматизированный тестовый сервер Junit
  • Добавление показателей
  • Автоматизированное развертывание env и приемочное тестирование
  • Непрерывное развертывание

До тех пор, пока это не будет выполнено, войны будут развернуты с помощью сценариев bash.Я просто выкладываю войну на сервер (без взрыва и перезаписи).

0 голосов
/ 09 февраля 2012

Сохраните определенные файлы конфигурации каждого сервера в каталоге, поместите их под контроль версий и используйте что-то вроде Ant , чтобы начать «голую» войну, разархивировать ее, заменить файлы файлами конфигурациисервера, на котором вы хотите развернуть и перестроить войну.

Затем отправьте войну непосредственно на сервер.Это также можно сделать с помощью муравья.

configs
  - server1
     - file1.properties
     - file2.xml
  - server2
     - file1.properties
     - file2.xml

ant -Dserver=server2 war deploy
...