Статьи

Сверхбыстрая установка Tomcat с использованием FTP и контроля версий

Говоря о непрерывной доставке, один из тестов, которые часто упоминают Мартин Фаулер и Джез Хамбл, это их тест «огнемет». Это выглядит примерно так: Джез скажет: «Сколько времени вам понадобится, чтобы начать работать, если мы с Мартином войдем в ваши машинные отделения, вооруженные огнеметами и топорами, и начнем атаковать ваши серверы»?

Ответ, конечно, должен быть: «Около часа — сразу после того, как мы потушили пожар, наметили беспорядок, нашли несколько новых серверов, подключили их и связались с нашими лучшими юристами, чтобы мы могли подать на вас в суд. за преступный ущерб ». В большинстве случаев это не так, поскольку развертывание слишком часто выполняется вручную, когда парень выполняет установку, просто следуя списку инструкций, написанных в документе Word. А что такое список инструкций? Компьютерная программа. Теперь поднимите руки всем, кто любит писать документы Word. Хорошо, теперь раздайте всем, кто любит писать код … В вашем воображении вы должны увидеть комнату, полную людей, голосующих за написание кода, так почему же, когда есть возможности для написания сценариев развертывания, мы предпочитаем (или теряем)? написание документов Word? Должно быть веселее, продуктивнее и экономически выгоднее писать сценарии, которые выполняют наше развертывание для нас за считанные секунды, а не писать документы Word, а затем выполнять каждое развертывание самостоятельно.

Если предположить, что ваша машинная комната была перегружена, тогда давайте рассмотрим, что вам нужно, чтобы снова начать работать. Для начала вам понадобится машина с несколькими обычными настройками. Я упрощаю здесь; однако вам, вероятно, понадобится:

  • некоторые учетные записи пользователей.
  • щепотка сетей (знание того, где находится ваш DNS и т. д.)
  • правильная версия Java
  • клиент Subversion (или другой версии)
  • кот (или другой сервер)
  • некоторые файлы конфигурации
  • ваш файл WAR

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

Если вы когда-нибудь читали книгу « Непрерывная доставка» Джеза Хамбла и Дэвида Фарли, вы поймете, что одним из основных замечаний, которые они делают, является то, что при настройке процесса развертывания вы должны хранить файлы конфигурации в вашей системе контроля версий. Для меня это звучит как одна из тех действительно очевидных и полезных идей, которые вы делаете, только когда кто-то другой указывает вам на это. Обычно это означает файлы конфигурации вашего приложения, но также должно ссылаться на файлы конфигурации вашего сервера.

Еще одна вещь, которую вы заметите в Continuous Delivery, это то, что, хотя она полна хороших идей, она намеренно не содержит практических примеров кодирования 1 . Если вы читаете мой блог, вы можете вспомнить, что я упоминал об обновлении большинства файлов конфигурации моего кота в тот или иной момент; например, добавление сведений об источнике данных или конфигурации SSL . Имея это в виду, остальная часть этого блога принимает звуковые идеи Джеза и Дэвида и демонстрирует создание простого сценария установки для моего сервера Tomcat.

Если вы загрузите вашу кандидатную версию tomcat и развернете файл tar / zip, вы заметите, что если есть каталог conf , поэтому первое, что нужно сделать, это добавить этот каталог в систему управления версиями и удалить его из расширенных двоичных файлов tomcat. Теперь вы можете проверить файлы conf и изменить их, добавив SSL, пользователя-администратора, источник данных MySQL или что угодно. Не забудьте проверить их снова.

Следующее, что нужно сделать, это поместить оставшиеся двоичные каталоги на FTP-сервер 2 в доступное безопасное место.

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

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

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#!/bin/sh
#
echo Running Tomcat install Script
 
TOMCAT_VERSION=apache-tomcat-7.0.33-blog
 
# The FTP server holding the tomcat binaries
SERVER=<your server name>
TOMCAT_LOCATION=/Public/binaries/
SERVER_USER=<your FTP User Name>
SERVER_PASSWORD=<your FTP password>
CUT_DIRS=3
 
# The version control details
SVN_USER=<your Subversion username>
SVN_PASSWORD=<your Subversion Password>
SVN_URL=https:<the URL to your subversion repository>/Tomcat/apache-tomcat-7.0.33/conf
 
mkdir ../$TOMCAT_VERSION
pwd
echo changing directory
cd ../vim $TOMCAT_VERSION
pwd
 
wget -r -nH -nc --cut-dirs=$CUT_DIRS ftp://$SERVER_USER:$SERVER_PASSWORD@$SERVER$TOMCAT_LOCATION$TOMCAT_VERSION
 
echo ..
echo The directory looks like this:
ls
echo ..
echo Getting the config files from config..
 
svn --username=$SVN_USER --password=$SVN_PASSWORD co $SVN_URL
 
bin/startup.sh
 
# At this point handover to the application deploy script.

В моем сценарии вы увидите, что все, что я делаю, — это использование трех простых команд. Сначала я использую wget для копирования файлов с моего FTP-сервера на новое место на сервере. Вторая команда — команда svn co , которая проверяет мои файлы конфигурации tomcat, а последняя команда просто запускает сервер. Остальная часть скрипта — это все переменные, комментарии и отступы.

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

Итак, у вас есть простой способ создания установок сервера Tomcat за считанные секунды. Очевидно, что следующим шагом будет передача сценария установки сервера другому сценарию, который устанавливает ваше веб-приложение (я) на сервере, но об этом позже.

Заметки

1 Я полагаю, что основная причина отсутствия конкретных примеров заключается в том, что не существует фиксированной структуры, такой как структура каталогов Maven, для создания серверов или развертывания кода, поскольку каждая организация отличается. Это хорошо? Вероятно, нет, возможно, следует предпринять шаги для создания «стандартного сервера», чтобы он соответствовал «стандартному» способу, которым мы выкладываем код.

2 Это также может быть файловый сервер, SFTP или веб-сервер, и двоичные файлы tomcat могут быть заархивированы или разархивированы.

Ссылка: супер быстрая установка Tomcat с использованием FTP и контроля версий от нашего партнера JCG Роджера Хьюза в блоге Captain Debug’s Blog .