Обновление XWiki

Last modified by Eugen Colesnicov on 2010/08/09 21:35

Общее описание процесса

Обновление XWiki - достаточно нетривиальная процедура, сложность которой связана с тем, что XWiki фактически "размазана" по огромному количеству файлов, расположенных в сложной структуре папок и подпапок, причем в кучу файлов приходится вносить собственные исправления, да и еще добавлять в разные папки свои файлы. А как такового инсталлятора у XWiki нет вообще. Соответственно всему этому, нельзя просто распаковать новую версию "поверх" поверх старой. 

Фактически, процесс обновления XWiki превращается в процедуру сравнения огромного количества файлов, составляющих само приложение (как перечня файлов, так и их содержимого). Чтобы не сравнивать содержимое вообще всех файлов подряд (а их тысячи) в процессе повседневной работы и настройки необходимо фиксировать, в какие файлы вносились изменения и какие файлы добавлялись.

Итак, процедура обновления версии XWiki состоит из следующих этапов:

  1. Подготовительные действия - backup, настройка окружения, вспомогательные утилиты и пр.
  2. Сравнение и обновление содержимого измененных файлов - необходимо вести их учет
  3. Сравнение перечня файлов по папкам - здесь правда легче: в основном все "добавки" располагаются в папке \xwiki\WEB-INF\lib
  4. Запуск новой версии XWiki - хорошо, что при этом хотя бы база в Oracle обновляется автоматом.
  5. Обновление xar-файла XWiki (набор базовых web-страниц)

Далее эти этапы будут рассмотрены более подробно.

Подготовительные действия

  • Сделайте backup базы данных средствами Oracle. Вот примеры bat-файлов на импорт/экспорт данных в/из Oracle (directory в Oracle должен быть заранее определен):
Экспорт: expdp \"sys/sys@orcl as sysdba\" schemas=(xwiki) directory=archiv dumpfile=xwiki
Импорт: impdp \"sys/sys@orcl as sysdba\" schemas=(xwiki) directory=archiv dumpfile=xwiki
  • Также можно сделать экспорт всего содержимого XWiki стандартными средствами приложения:
    меню "XWiki", далее "Управление Wiki", далее - "Export". Правда для больших БД эта процедура может занять очень много времени.
  • Далее останавливаем используемый Application Server (Jetty или Glassfish), под которым и крутится XWiki.
  • Копируем всю папку xwiki из папки \glassfishv3\glassfish\domains\domain1\applications (или аналогично для jetty) в заранее определенную папку - например C:\Temp\Update\old.
  • В соседнюю папку, например C:\Temp\Update\new распаковываем содержимое war-файла с новой версией XWiki.

На этом подготовительный этап можно считать законченным.

Примечание. Также не забываем читать release notes к новой версии с сайта http://XWiki.org, где могут быть описаны дополнительные действия, требуемые при обновлении версий.

Сравнение содержимого измененных файлов

Предварительные комментарии:

  • Для выполнения этой процедуры нам понадобиться удобное средство сравнения содержимого файлов, например Beyond Compare.
  • Также в процессе ежедневной работы, по мере внесения ваших изменений в файлы XWiki, необходимо вести перечень таких изменяемых файлов, т.к. проверять все файлы на предмет изменения их содержимого нереально. Сопоставлять содержимое будем только у тех файлов, которые были нами учтены ранее.

Список файлов для сравнения содержимого:

Имя файлаПуть к файлу
hibernate.cfg.xml    \xwiki\WEB-INF\
xwiki.cfg            \xwiki\WEB-INF\
xwiki.properties     \xwiki\WEB-INF\
web.xml              \xwiki\WEB-INF\
attachmentsinline.vm \xwiki\templates\
macros.vm            \xwiki\templates\
print.css            \xwiki\skins\colibri\
tablefilterNsort.js  \xwiki\resources\js\xwiki\table\

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

Сравнение перечня файлов по папкам

Следует сравнить все папки из старой и новой версии, на предмет выявления файлов, которые были добавлены нами. Обычно все они представляют собой плагины, которые все лежат в папке \xwiki\WEB-INF\lib\, но могут быть и исключения. Добавленные плагины также должны быть прописаны в файле xwiki.cfg, в соответствующем разделе.

Запуск новой версии XWiki

  • Следует скопировать уже новую папку XWiki (с приложением новой версии) в соответствующую папку Application Server \glassfishv3\glassfish\domains\domain1\applications (или аналогично для Jetty).
  • Запускаем сервис Glassfish (или Jetty).

На этом обновление приложения можно считать законченным. Приложение XWiki новой версии запущено и готово к использованию.

Обновление xar-файла XWiki

В принципе данный этап можно пропускать, однако его целесообразно проводить, так как в часть "системных" страниц, где содержится вспомогательный код или сервисная функциональность (макросы, приложения, скрипты) также могут вноситься изменения. Следует также внимательно читать release notes к новой версии, на предмет обязательной замены тех или иных страниц.

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

Перечень страниц для исключения:

Название страницы     Описание
XWiki.XWikiPreferences общие настройки самой XWiki
XWiki.WebPreferences   настройки раздела XWiki
Main.WebPreferences    настройки раздела Main
SandBox.WebPreferences настройки раздела SandBox
XWiki.XWikiAllGroup -  список пользователей в группе AllGroup
XWiki.XWikiAdminGroup  список администраторов
Main.WebHome           начальная страница
???                    слетает логотип