Обновление существующей инсталляции DSpace до версии 5.3 на платформе Windows

Ниже будет рассмотрен ворклог обновления существующей инсталляции DSpace, выполненной по технологии, описанной в моих прошлых статьях. Пути, системные переменные и пр. вещи соответствуют таковым в прошлых статьях.

В данном конкретном примере будет обновляться Dspace 4.1. Небольшая оговорка — в данной инсталляции dspace, tomcat и pgsql «живут» в c:\service, а java, maven и ant — в c:\runtime.

0. Бэкап

0.1. Бэкап assetstore — копируем [dspace]\assetstore куда-нибудь
0.2. Бэкап [dspace] — копируем [dspace] куда-нибудь (можно совместить с предыдущим пунктом, если расположение стандартное)
0.3. Бэкап кастомизированных webapps — копируем [tomcat]\wbapps\ куда-нибудь
0.4. Бэкап базы данных — в принципе, сделать дамп можно и с помощью графической утилиты PGadminIII, но я делаю бэкап базы в рамках такого вот батника:

set now=%TIME:~0,-3%
set now=%now::=%
set now=%now: =0%
set now=%DATE:~-4%.%DATE:~3,2%.%DATE:~0,2%_%now%
SET PGPASSWORD=ТУТ_ВАШ_ПАРОЛЬ
mkdir c:\BACKUP\%now%\db && C:\RUNTIME\POSTGRE\bin\pg_dump.exe -i -h 127.0.0.1 -p 5432 -U dspace -F c -b -v -f C:\BACKUP\%now%\db\database-%now%.dmp dspace && mkdir c:\BACKUP\%now%\content && dspace packager -d -a -u -t AIP -e ideafix@ideafix.name -i 10995/0 c:\backup\%now%\content\elarurfu.zipp && mkdir c:\backup\%now%\metadata && dspace metadata-export -a -f c:\BACKUP\%now%\metadata\data.csv

Данный код создаёт в в c:\backups\ папку с именем ГГГГ.ММ.ДД_ЧЧММСС и в ней папки db, content и metadata соответственно с базой, контентом в формате METS и метаданными в CSV. Подробнее об этом можно почитать в статье про Бэкап.

1. Подготовка RUNTIME

Нам понадобится:

1.1 Дистрибутив DSPACE 5.3 (dspace-5.3-src-release.zip)
1.2 Дистрибутив JDK 8 (jdk-8u60-windows-x64.exe)
1.3 Дистрибутив Apache Maven 3.0.5 или новее.
1.4 Apache Ant 1.8 или новее
1.5 Apache tomcat 7.0.30 или новее

Собственно, все требования по runtime описаны тут и нужно проверить версии уже установленного софта.

000После удаления старой версии JDK и установки новой (я ставлю по примеру старых инструкций в c:\runtime\jdk и c:\runtime\jre) нужно дать команды:

java -version
ant -v
mvn -version

И убедиться во-первых что все пути работают, и во-вторых, что с версиями у нас всё в порядке.

001

Версию Tomcat можно проверить руками, если Tomcat нуждается в обновлении, не забудьте сохранить server.xml и пр. конфигурационные файлы, при обновлении старая директория удаляется.

2. Подготовка дистрибутива

003

2.1. Извлекаем исходники в c:\runtime\dspace-5.3-src-release. По картинке видно, что изначально на машине был установлен Dspace 4.0, а потом обновлен до 4.1.
2.2. Вносим необходимые изменения в c:\runtime\dspace-5.3-src-release\build.properties. Идея появления данного файла в том, чтобы избавить пользователя от правок dspace.cfg и некоторых других конфигов в процессе сборки. Все критичные переменные dspace собраны в одном файле. Как показывает практика, оно в общем работает, но есть частности. Мой поправленный вариант выглядит как-то так:

# DSpace build.properties
# This file should be customised to suit your build environment.
# Note that not all configuration is handled here, only the most common
# properties that tend to differ between build environments.
# For adjusting global settings or more complex settings, edit the relevant config file.
#
# IMPORTANT: Do not remove or comment out settings in build.properties
# When you edit the "build.properties" file (or a custom *.properties file),
# take care not to remove or comment out any settings. Doing so, may cause
# your final "dspace.cfg" file to be misconfigured with regards to that
# particular setting. Instead, if you wish to remove/disable a particular
# setting, just clear out its value. For example, if you don't want to be
# notified of new user registrations, ensure the "mail.registration.notify"
# setting has no value, e.g. "mail.registration.notify="
#

##########################
# SERVER CONFIGURATION #
##########################

# DSpace installation directory. This is the location where you want
# to install DSpace. NOTE: this value will be copied over to the
# "dspace.dir" setting in the final "dspace.cfg" file. It can be
# modified later on in your "dspace.cfg", if needed.
dspace.dir = C:/SERVICE/DSPACE

# DSpace host name - should match base URL. Do not include port number
dspace.hostname = ИМЯРЕК

# DSpace base host URL. Include port number etc.
dspace.baseUrl = http://ИМЯРЕК

# The user interface you will be using for DSpace. Common usage is either xmlui or jspui
dspace.ui = jspui

# Full link your end users will use to access DSpace. In most cases, this will be the baseurl followed by
# the context path to the UI you are using.
#
# Alternatively, you can use a url redirect or deploy the web application under the servlet container root.
# In this case, make sure to remove the /${dspace.ui} from the dspace.url property.
dspace.url = http://ИМЯРЕК

# Name of the site
dspace.name = COMMON ARCHIVE

# Solr server
solr.server=http://localhost/solr

# Default language for metadata values
default.language = ru

##########################
# DATABASE CONFIGURATION #
##########################

# Uncomment the appropriate block below for your database.
# postgres
db.driver=org.postgresql.Driver
db.url=jdbc:postgresql://localhost:5432/dspace
db.username = dspace
db.password = ИМЯРЕК

# oracle
#db.driver= oracle.jdbc.OracleDriver
#db.url=jdbc:oracle:thin:@//localhost:1521/xe
#db.username=dspace
#db.password=dspace

# Schema name - if your database contains multiple schemas, you can avoid
# problems with retrieving the definitions of duplicate object names by
# specifying the schema name that is used for DSpace.
# ORACLE USAGE NOTE: In Oracle, schema is equivalent to "username". This means
# specifying a "db.schema" is often unnecessary (i.e. you can leave it blank),
# UNLESS your Oracle DB Account (in db.username) has access to multiple schemas.
db.schema =

# Maximum number of DB connections in pool
db.maxconnections = 30

# Maximum time to wait before giving up if all connections in pool are busy (milliseconds)
db.maxwait = 5000

# Maximum number of idle connections in pool (-1 = unlimited)
db.maxidle = -1

# Determine if prepared statement should be cached. (default is true)
db.statementpool = true

# Specify a name for the connection pool (useful if you have multiple applications sharing Tomcat's dbcp)
# If not specified, defaults to 'dspacepool'
db.poolname = dspacepool

#######################
# EMAIL CONFIGURATION #
#######################

# SMTP mail server
mail.server = ИМЯРЕК

# SMTP mail server authentication username and password (if required)
# mail.server.username = myusername
# mail.server.password = mypassword
mail.server.username = ИМЯРЕК
mail.server.password = ИМЯРЕК

# SMTP mail server alternate port (defaults to 25)
mail.server.port = 25

# From address for mail
mail.from.address = elib@ИМЯРЕК

# Currently limited to one recipient!
mail.feedback.recipient = dspace-help@myu.edu

# General site administration (Webmaster) e-mail
mail.admin = elib@ИМЯРЕК

# Recipient for server errors and alerts
#mail.alert.recipient = email-address-here
mail.alert.recipient=elib@ИМЯРЕК

# Recipient for new user registration emails
#mail.registration.notify = email-address-here
mail.registration.notify=elib@ИМЯРЕК

########################
# HANDLE CONFIGURATION #
########################

# Canonical Handle URL prefix
#
# By default, DSpace is configured to use http://hdl.handle.net/
# as the canonical URL prefix when generating dc.identifier.uri
# during submission, and in the 'identifier' displayed in JSPUI
# item record pages.
#
# If you do not subscribe to CNRI's handle service, you can change this
# to match the persistent URL service you use, or you can force DSpace
# to use your site's URL, eg.
#handle.canonical.prefix = ${dspace.url}/handle/
#
# Note that this will not alter dc.identifer.uri metadata for existing
# items (only for subsequent submissions), but it will alter the URL
# in JSPUI's 'identifier' message on item record pages for existing items.
#
# If omitted, the canonical URL prefix will be http://hdl.handle.net/
handle.canonical.prefix = http://ИМЯРЕК/handle/

# CNRI Handle prefix
handle.prefix = 123456789

#######################
# PROXY CONFIGURATION #
#######################
# uncomment and specify both properties if proxy server required
# proxy server for external http requests - use regular hostname without port number
http.proxy.host =

# port number of proxy server
http.proxy.port =

#####################
# LOGLEVEL SETTINGS #
#####################
loglevel.other = INFO
# loglevel.other: Log level for other third-party tools/APIs used by DSpace
# Possible values (from most to least info): DEBUG, INFO, WARN, ERROR, FATAL
loglevel.dspace = INFO
# loglevel.dspace: Log level for all DSpace-specific code (org.dspace.*)
# Possible values (from most to least info): DEBUG, INFO, WARN, ERROR, FATAL

Тут нужно обратить внимание на то, что порт у меня по умолчанию 80, а JSPUI будет лежать в ROOT, поэтому dspace.url и dspace.base.url одинаковые.

2.3. Вноисм необходимые изменения в c:\runtime\dspace-5.3-src-release\dspace\config\dspace.cfg

Т.к. build.properties не даёт явно задать assetstore и некоторые другие параметры, придётся править конфиг. На данном этапе я вовсе рекомендую не надеяться на переменные и казуальное их хранилище в виде build.preperties, а открыть одновременно оба dspace.cfg, старый и новый и сравнить их построчно. Такой способ позволит не забыть никакую модификацию или кастомизацию.

Как минимум стоит обратить внимание на эти параметры, даже если Вы ничего не меняли в dspace.cfg ранее.

default.locale
webui.supported.locales
jspui.google.analytics.key (и аналог для xmlui)

3. Собственно сборка dsapce

3.1. Еще раз перечитываем это
3.2. Читаем это
3.2. cd c:\runtime\dspace-5.3-src-relese\dspace && mvn -U clean package
Если по каким-то причинам нужен Oracle, Mirage2, LNI или еще что-то из нестандартного — внимательно читаем пункт 4

004

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

005

 

4. Обновление

4.1. Убеждаемся что Tomcat остановлен… ну мало ли, у меня просто запущен был 🙂
4.2. cd c:\RUNTIME\dspace-5.3-src-release\dspace\target\dspace-installer && ant update

006007

4.3. Обновляем базу — C:\SERVICE\PGSQL\bin\psql.exe -U dspace -f c:\SERVICE\DSPACE\etc\postgres\update-sequences.sql

008

После этого потребуется ввести пароль на базу данных (тот что в db.password в build.properties)

4.4. даём команду dspace database migrate

008

Дождавшись её выполнения идём в c:\service\dspace\log\dspace.log.ТЕКУЩАЯ_ДАТА, находим в нём строки в самом конце

2015-08-29 03:40:55,201 INFO org.dspace.storage.rdbms.DatabaseRegistryUpdater @ All Bitstream Format Regitry and Metadata Registry updates were completed.
2015-08-29 03:40:55,216 INFO org.flywaydb.core.internal.command.DbMigrate @ Current version of schema "public": 4.0
2015-08-29 03:40:55,216 INFO org.flywaydb.core.internal.command.DbMigrate @ Migrating schema "public" to version 5.0.2014.08.08
2015-08-29 03:40:55,247 INFO org.flywaydb.core.internal.command.DbMigrate @ Migrating schema "public" to version 5.0.2014.09.25
2015-08-29 03:40:55,497 INFO org.flywaydb.core.internal.command.DbMigrate @ Migrating schema "public" to version 5.0.2014.09.26
2015-08-29 03:40:56,326 INFO org.flywaydb.core.internal.command.DbMigrate @ Successfully applied 3 migrations to schema "public" (execution time 00:01.125s).
2015-08-29 03:40:56,435 INFO org.dspace.eperson.Group @ anonymous::update_group:group_id=0
2015-08-29 03:40:56,466 INFO org.dspace.eperson.Group @ anonymous::update_group:group_id=1
2015-08-29 03:40:56,466 INFO org.dspace.event.EventManager @

радуемся.

4.5. Даём команду dspace index-db-browse -f -d дожидаемся её выполнения.

009

4.6. Даём команду dspace cleanup -v дожидаемся её выполнения. Убеждаемся что либо сообщений об очистке нет, либо они все успешные.

010

Всё это можно делать на не обновлённых webapps и с выключенными tomcat.

5. Обновление WEBAPPS и SOLR индексов

5.1. Копируем jspui, oai и solr из c:\service\dspace\webapps в c:\service\tomcat\webapps
5.2. Запускаем Tomcat, ждем некоторое время, проверяем что у нас на http://ИМЯРЕК

011
5.3. Даём команды dspace stats-util -o && dspace oai import -o && dspace index-discovery -o

012

А дальше работа по кастомизации интерфейса, переносу настроек и пр…. но это уже совсем другая история.

Запись опубликована в рубрике Библиотека с метками . Добавьте в закладки постоянную ссылку.

4 комментария: Обновление существующей инсталляции DSpace до версии 5.3 на платформе Windows

  1. Олег говорит:

    Здравствуйте. Спасибо за ваш мануал!
    Вот уже 3-тий месяц обновляю DS с версии 1.6.2 на версию 5.4, на CentOS 5.11. Делаю все по вашей инструкции в совокупности с пристальном изучением официального мануала: Upgrading ANY prior version (1.x.x, 3.x or 4.x) of DSpace to DSpace 5.x
    У меня возникает проблема при обновлении SOLR индексов, а именно выполнении команд:
    /usr/dspace/bin/dspace stats-util -o
    /usr/dspace/bin/dspace index-discovery -o
    /usr/dspace/bin/dspace solr-reindex-statistics
    Их выполнение зависает без выдачи каких либо сообщений. При игнорировании оптимизации, у меня после успешного выполнения ant update перестает открываться страница DS (UI у меня jspui), обращение к странице DS выполняется, но запрос выполнятся бесконечность.
    Если вы сталкивались с чем-то подобным, подскажите, плиз, куда копать? Спасибо.

    • IdeaFix говорит:

      В официальном мануале написано как поднять версию индексов SOLR вручную — https://wiki.duraspace.org/display/DSDOC5x/Upgrading+DSpace#UpgradingDSpace-ManuallyUpgradingSolrIndexes

      Т.е. Вам необходимо скачать промежуточную версию licene, которая еще совместима со старыми индексами и уже совместима с новыми.

      На сколько я понимаю, mvn package (или mvn -U clean package, как рекомендуют сейчас) у Вас проходит штатно, потом Вы выкачиваете (ДО ant update!) джарболл с люценой и руками обновляете индексы, а уже потом ant update.

    • IdeaFix говорит:

      а в БГУ же вроде уже dspace 6 snapshot, или я что-то путаю?

      • Олег говорит:

        Спасибо за ответ! Я обновляю DS не в БГУ, а в БелГУ, тут у нас 1.6.2, причем я новичок не то что в DS, а вообще всех этих админских делах и даже линуксоподобных ОС и тем более CentOS. Меня просто хорошие люди попросили обновить. Это так — крик души:( и к тому, что все в основном делаю как мартышка, куда просят в мануалах, туда и тыкаю:) Во то, что вы написали про ручное обновление индексов через lucene-core-3.5.0.jar я выполняю, и данная процедура проходит у меня штатно и успешно. Я делаю: mvn, потом ручками (ну, полуручками:)) индексы и…. и тут я внимательно прочитал мануал по вашей ссылке и увидел, что то, что я у вас спрашивал нужно выполнять только при обновлении от версии 3+, то есть, если я верно понял, мне это делать не надо, так как у меня 1.6? Однако, вопрос не пропадает, после того, как я обновляю индексы, делаю ant, обновляю уже перенесенную базу, у меня web-интерфейс не грузится, просто бесконечно висит. Webapps у меня не перенесены в сервлет, а сам сервлет (томкат) настроен на папку /dspace/wepapps/jspui. Примечательно, что у меня DS 1.6.2 фурычит на всем обновленном (java 1.7.0.79, tomcat 8, ant 1.9, maven 3.3, pgsql 9.4 с перенесенной базой), однако после ant update, web-приложение подвисает:(
        Я без знающего эту кухну в тонкостях этой всей фигни ладу не дам, так что прошу посильной помощи:(

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *