Ниже будет рассмотрен ворклог обновления существующей инсталляции 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=%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 описаны тут и нужно проверить версии уже установленного софта.
После удаления старой версии JDK и установки новой (я ставлю по примеру старых инструкций в c:\runtime\jdk и c:\runtime\jre) нужно дать команды:
ant -version
mvn -v
И убедиться во-первых что все пути работают, и во-вторых, что с версиями у нас всё в порядке.
Версию Tomcat можно проверить руками, если Tomcat нуждается в обновлении, не забудьте сохранить server.xml и пр. конфигурационные файлы, при обновлении старая директория удаляется.
2. Подготовка дистрибутива
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 собраны в одном файле. Как показывает практика, оно в общем работает, но есть частности. Мой поправленный вариант выглядит как-то так:
# 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 ранее.
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
Ну а теперь можно откинуться на спинку стула и понаблюдать за тем как maven собирает дистрибутив. На данном этапке как и прежде из сети скачивается около гигабайта исходников и деплоятся пакеты.
4. Обновление
4.1. Убеждаемся что Tomcat остановлен… ну мало ли, у меня просто запущен был 🙂
4.2. cd c:\RUNTIME\dspace-5.3-src-release\dspace\target\dspace-installer && ant update
4.3. Обновляем базу — C:\SERVICE\PGSQL\bin\psql.exe -U dspace -f c:\SERVICE\DSPACE\etc\postgres\update-sequences.sql
После этого потребуется ввести пароль на базу данных (тот что в db.password в build.properties)
4.4. даём команду dspace database migrate
Дождавшись её выполнения идём в c:\service\dspace\log\dspace.log.ТЕКУЩАЯ_ДАТА, находим в нём строки в самом конце
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 дожидаемся её выполнения.
4.6. Даём команду dspace cleanup -v дожидаемся её выполнения. Убеждаемся что либо сообщений об очистке нет, либо они все успешные.
Всё это можно делать на не обновлённых webapps и с выключенными tomcat.
5. Обновление WEBAPPS и SOLR индексов
5.1. Копируем jspui, oai и solr из c:\service\dspace\webapps в c:\service\tomcat\webapps
5.2. Запускаем Tomcat, ждем некоторое время, проверяем что у нас на http://ИМЯРЕК
5.3. Даём команды dspace stats-util -o && dspace oai import -o && dspace index-discovery -o
А дальше работа по кастомизации интерфейса, переносу настроек и пр…. но это уже совсем другая история.
Здравствуйте. Спасибо за ваш мануал!
Вот уже 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 выполняется, но запрос выполнятся бесконечность.
Если вы сталкивались с чем-то подобным, подскажите, плиз, куда копать? Спасибо.
В официальном мануале написано как поднять версию индексов SOLR вручную — https://wiki.duraspace.org/display/DSDOC5x/Upgrading+DSpace#UpgradingDSpace-ManuallyUpgradingSolrIndexes
Т.е. Вам необходимо скачать промежуточную версию licene, которая еще совместима со старыми индексами и уже совместима с новыми.
На сколько я понимаю, mvn package (или mvn -U clean package, как рекомендуют сейчас) у Вас проходит штатно, потом Вы выкачиваете (ДО ant update!) джарболл с люценой и руками обновляете индексы, а уже потом ant update.
а в БГУ же вроде уже 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-приложение подвисает:(
Я без знающего эту кухну в тонкостях этой всей фигни ладу не дам, так что прошу посильной помощи:(
Команды dspace database migrate и C:\SERVICE\PGSQL\bin\psql.exe -U dspace -f c:\SERVICE\DSPACE\etc\postgres\update-sequences.sql делают одно и тоже. Вторую рекомендуют запускать, елси не сработал автоматический режим обновления БД.
Обновление делать без дропа? Просто обновить?
Первая команда вбирала в себя функционал постепенно… обновление естественно без дропа, с дропом только разворачиваение базы.
Но, если Вы установили «новый» dspace и хотите подсунуть старую базу то:
1. дроп
2. подсовывание старой базы
3. обновление старой базы
Уведомление: Обновление DSpace 3.6 до DSpace 5.10 в среде Microsoft Windows | ideafix.name
При попытке выполнить пунк 4.4 dspace database migrate говорит что Command not found
Что-то у Вас на предыдущих этапах пошло не так и скорее всего бинарик (батник) остался старый. Т.е. где-то на уровне ant update проблема.
https://ideafix.name/?p=4392 вот аналогичная видео инструкция.