All Versions
DSpace Documentation
| Info | ||
|---|---|---|
| ||
These instructions are valid for any of the following upgrade paths:
For major upgrades, you may also want to consider Migrating DSpace to a new server. This guide provides a walkthrough of installing a fresh copy of latest DSpace, and migrating your existing production data into it. For more information about new features or major changes in previous releases of DSpace, please refer to following:
|
| Info | ||
|---|---|---|
| ||
DSpace offers two approaches to getting your installation up-to-date.
The approach you choose is up to you. Upgrading is often easiest for minor upgrades (e.g. 8.x → latest 8.x). Migrating may be useful for major upgrades (e.g. 7.x → 8.x), or if you need to move your DSpace installation. |
| Note | ||
|---|---|---|
| ||
As DSpace automatically upgrades your database structure (using FlywayDB migrations), we highly recommend AGAINST customizing the DSpace database tables/structure or backporting any features that change the DSpace tables/structure. Doing so will often cause the automated database upgrade process to fail (and therefore will complicate your next upgrade). If you must add features requiring new database tables/structure, we recommend creating new tables (instead of modifying existing ones), as that is usually much less disruptive to our automated database upgrade. |
| Warning | ||
|---|---|---|
| ||
In order to minimize downtime, it is always recommended to first perform a DSpace upgrade using a Development or Test server. You should note any problems you may have encountered (and also how to resolve them) before attempting to upgrade your Production server. It also gives you a chance to "practice" at the upgrade. Practice makes perfect, and minimizes problems and downtime. Additionally, if you are using a version control system, such as git, to manage your locally developed features or modifications, then you can do all of your upgrades in your local version control system on your Development server and commit the changes. That way your Production server can checkout your well tested and upgraded code. |
| Note |
|---|
In the notes below |
| Table of Contents | ||||||
|---|---|---|---|---|---|---|
|
DSpace 9.0 features some breaking changes which you may wish to be aware of before beginning your upgrade:
Before you start your upgrade, it is strongly recommended that you create a backup of your DSpace content. Backups are easy to recover from; a botched install/upgrade is very difficult if not impossible to recover from. The DSpace specific things to backup are: configs, source code modifications, database, and assetstore. On your server that runs DSpace, you might additionally consider checking on your cron/scheduled tasks, servlet container, and database.
Make a complete backup of your system, including:
Database: Make a snapshot/dump of the database. For the PostgreSQL database use Postgres' pg_dump command. For example:
| Code Block |
|---|
pg_dump -U [database-user] -f [backup-file-location] [database-name] |
[dspace]/assetstore by default, and any other assetstores configured in [dspace]/config/spring/api/bitstore.xml)[dspace]/config. [dspace]/solr/statistics. A simple copy of the logs or the Solr core directory tree should give you a point of recovery, should something go wrong in the update process. We can't stress this enough: your users depend on these statistics more than you realize. You need a backup.[dspace]/solr/authority. As with the statistics data, making a copy of the directory tree should enable recovery from errors.DSpace 9.x requires the following updated versions of prerequisite software (when compared to DSpace 8.x).
Refer to the Backend Requirements section of "Installing DSpace" for more details around configuring and installing these prerequisites.
| Info | ||
|---|---|---|
| ||
If during the upgrade you are migrating your DSpace backend to a new server/machine, see Migrating DSpace to a new server instead. The migration process documented on that page can be used as an alternative to this upgrade procedure. |
| Note | ||
|---|---|---|
| ||
| If upgrading from 6.x or below, you will need to follow some additional steps. These steps have been moved to our guide for Upgrading from DSpace 6.x or lower. |
dspace-9.0) or branch.Build DSpace Backend. Run the following commands to compile DSpace :
| Code Block |
|---|
cd [dspace-source] mvn -U clean package |
The above command will re-compile the DSpace source code and build its "installer". You will find the result in [dspace-source]/dspace/target/dspace-installer
Stop Tomcat (or servlet container). Take down your servlet container.
$CATALINA_HOME/shutdown.sh script. (Many Unix-based installations will have a startup/shutdown script in the /etc/init.d or /etc/rc.d directories.)As of DSpace 8, the "db.dialect" configuration has changed from "org.hibernate.dialect.PostgreSQL94Dialect" to "org.dspace.util.DSpacePostgreSQLDialect". Therefore, MAKE SURE that your dspace.cfg or local.cfg has this setting:
| Code Block |
|---|
db.dialect = org.dspace.util.DSpacePostgreSQLDialect |
[dspace-source]/dspace/config/local.cfg). That way your existing configuration gets reinstalled alongside the new version of DSpace.Update DSpace Installation. Update the DSpace installation directory with the new code and libraries. Issue the following commands:
| Code Block |
|---|
cd [dspace-source]/dspace/target/dspace-installer ant update |
(Optional) If desired, you can optionally verify which migrations have not yet been run on your database. You can use this to double check that DSpace is recognizing your database version appropriately
| Code Block |
|---|
[dspace]/bin/dspace database info # The response will be a list all migrations which were previously run, # along with any which are "PENDING" or "IGNORED" # that need to be run to upgrade your database. |
(Optional) In some rare scenarios, if your database's "sequences" are outdated, inconsistent or incorrect, a database migration error may occur (in your DSpace logs). While this is seemingly a rare occurrence, you may choose to run the "update-sequences" command PRIOR to upgrading your database. If your database sequences are inconsistent or incorrect, this "update-sequences" command will auto-correct them (otherwise, it will do nothing).
| Code Block |
|---|
# This command only works if upgrading from DSpace 7.x or later [dspace]/bin/dspace database update-sequences # If upgrading from DSpace 6 or below, this script had to be run via psql from [dspace]/etc/postgres/update-sequences.sql # For example: # psql -U [database-user] -f [dspace]/etc/postgres/update-sequences.sql [database-name] # NOTE: It is important to run the "update-sequences" script which came with the OLDER version of DSpace (the version you are upgrading from)! If you've misplaced # this older version of the script, you can download it from our codebase & run it via the "psql" command above. # DSpace 6.x version of "update-sequences.sql": https://github.com/DSpace/DSpace/blob/dspace-6_x/dspace/etc/postgres/update-sequences.sql # DSpace 5.x version of "update-sequences.sql": https://github.com/DSpace/DSpace/blob/dspace-5_x/dspace/etc/postgres/update-sequences.sql |
(REQUIRED) Then, you can upgrade your DSpace database to the latest version of DSpace. (NOTE: check the DSpace log, [dspace]/log/dspace.log.[date], for any output from this command)
| Code Block |
|---|
# If upgrading from DSpace 6.x or below [dspace]/bin/dspace database migrate ignored # If upgrading from DSpace 7.x, 8.x or an earlier version of 9.x [dspace]/bin/dspace database migrate |
| Note | ||
|---|---|---|
| ||
If any database migrations are run (even during minor release upgrades), then by default DSpace will automatically reindex all content in your site. This process is run automatically in order to ensure that any database-level changes are also immediately updated within the search/browse interfaces. See the notes below under "Restart Tomcat (servlet container)" for more information. However, you may choose to skip automatic reindexing. Some sites choose to run the reindex process manually in order to better control when/how it runs. To disable automatic reindexing, set discovery.autoReindex = false in config/local.cfg or config/modules/discovery.cfg.As you have disabled automatic reindexing, make sure to manually reindex your site by running WARNING: It is not recommended to skip automatic reindexing, unless you will manually reindex at a later time, or have verified that a reindex is not necessary. Forgetting to reindex your site after an upgrade may result in unexpected errors or instabilties. |
Deploy Server web application: Two deployment options are now available for the DSpace backend.
WAR Deployment via Tomcat (traditional approach): In this approach, you must have Tomcat (or a different servlet container) installed locally. You will need to deploy the "server" webapp (in [dspace]/webapps/server ) into your Servlet Container (e.g. Tomcat). Generally, there are two options (or techniques) which you could use...either configure Tomcat to find the DSpace "server" webapp, or copy the "server" webapp into Tomcat's own webapps folder. For more information & example commands, see the Installation Guide
| Code Block | ||||
|---|---|---|---|---|
| ||||
java -jar [dspace]/webapps/server-boot.jar |
| Anchor | ||||
|---|---|---|---|---|
|
Copy the new, empty Solr cores to your new Solr instance.
| Code Block |
|---|
cp -R [dspace]/solr/* [solr]/server/solr/configsets chown -R solr:solr [solr]/server/solr/configsets |
Start Solr, or restart it if it is running, so that these new cores are loaded.
| Code Block |
|---|
[solr]/bin/solr restart |
You can check the status of Solr and your new DSpace cores by using its administrative web interface. Browse to ${solr.server} (e.g. http://localhost:8983/solr/) to see if Solr is running well, then look at the cores by selecting (on the left) Core Admin or using the Core Selector drop list.
${solr.server}/search/select. It should run an empty query against the "search" core, returning an empty JSON result. If it returns an error, then that means your "search" core is missing or not installed properly.Restart Tomcat (servlet container) or Runnable JAR. Now restart your servlet container (Tomcat/Jetty/Resin) or Runnable JAR and test out the upgrade.
[dspace]/log/dspace.log.[date]) for information on its status.Reindexing of all content for search/browse: If your database was just upgraded (either manually or automatically), all the content in your DSpace will be automatically re-indexed for searching/browsing. As the process can take some time (minutes to hours, depending on the size of your repository), it is performed in the background; meanwhile, DSpace can be used as the index is gradually filled. But, keep in mind that not all content will be visible until the indexing process is completed. Again, check the DSpace log ( [dspace]/log/dspace.log.[date]) for information on its status. If you wish to skip automatic reindexing, please see the Note above under the "Upgrade your Database" step.
| Code Block |
|---|
[dspace]/bin/dspace index-discovery -b |
| Code Block |
|---|
[dspace]/bin/dspace oai import |
dspace-9.0) or branch.[dspace-angular].Install any updated local dependencies using NPM in the [dspace-angular] source code directory:
| Code Block |
|---|
# change directory to our repo cd [dspace-angular] # install/update the local dependencies npm install |
Build the latest User Interface code for Production: This rebuilds the latest code into the [dspace-angular]/dist directory
| Code Block |
|---|
npm run build:prod |
If you are upgrading from 7.0, 7.1 or 7.2, a new "eager-theme.module.ts" and "lazy-theme.module.ts" has been added to both the "custom" and "dspace" themes to improve performance. Make sure to copy those to your custom theme. Additionally, this new "eager-theme.module.ts" for your theme MUST be imported/enabled in "src/themes/eager-themes.module.ts". For example, for a local theme under "src/theme/my-theme":
| Code Block | ||
|---|---|---|
| ||
import { EagerThemeModule as MyThemeEagerThemeModule } from './my-theme/eager-theme.module';
...
@NgModule({
imports: [
MyThemeEagerThemeModule,
],
}) |
Using a tool like "git diff" from the commandline is often an easy way to see changes that occurred only in that directory.
| Code Block |
|---|
# Example which will show all the changes to "src/themes/dspace" (and all subfolders) # between dspace-8.1 (tag) and dspace-9.0 (tag) git diff dspace-8.1 dspace-9.0 -- src/themes/dspace/ |
const DECLARATIONS" section), and also registers new Modules, i.e. new UI features, (in the "@NgModule" → "imports" section). Make sure those sections are updated in your copy of this file!const DECLARATIONS" section), and also registers new Modules, i.e. new UI features, (in the "@NgModule" → "imports" section). Make sure those sections are updated in your copy of this file!If you are using PM2 as described in the Installing DSpace instructions, you'd stop it and then start it back up as follows
| Code Block |
|---|
# Stop the running UI pm2 stop dspace-ui.json # If you had to update your PM2 configs, you may need to delete your old configuration from PM2 # pm2 delete dspace-ui.json # Start it back up pm2 start dspace-ui.json |
If you are using a different approach, you simply need to stop the running UI, and re-run:
| Code Block |
|---|
# First stop the running UI process by killing it (or similar) # You MUST restart the UI from within the deployment directory # See Installation Instructions for more info on this directory cd [dspace-ui-deploy] # Then restart the UI via Node.js node ./dist/server/main.js |
At times the upgrade process may involve configuration changes which could result in one of our "Common Installation Issue" error messages. So, make sure to check that section of the Installing DSpace documentation, especially if you find your UI is no longer connecting to your REST API.
If you are upgrading to DSpace 7.x and receive either of the two following errors after running "./dspace database migrate ignored":
| Code Block |
|---|
Migration V5.7_2017.04.11__DS-3563_Index_metadatavalue_resource_type_id_column.sql failed [or] Migration V5.7_2017.05.05__DS-3431.sqln failed |
This means your database never ran those older migrations during a past upgrade from 5.x→6.x (or similar).
Luckily, though, these migrations are both obsolete in DSpace 7.x (and later). This means you can skip these migration safely.
As of DSpace 7.5, a new "./dspace database skip" command is provided to easily skip one (or both) of these failing migrations as follows:
| Code Block |
|---|
# If you need to skip "V5.7_2017.04.11__DS-3563_Index_metadatavalue_resource_type_id_column.sql", run this: ./dspace database skip "5.7.2017.04.11" # If you need to skip "V5.7_2017.05.05__DS-3431.sql", run this: ./dspace database skip "5.7.2017.05.05" |
For more information on the "./dspace database skip" command see Database Utilities.
If you have modified your database structure directly (or installed custom plugins which do so), then it is possible a "./dspace database migrate" will fail if it encounters an unexpected database structure. In this scenario, you may need to do some manual migrations before the automatic migrations will succeed. The general process would be something like this:
[dspace-src]/dspace-api/src/main/resources/org/dspace/storage/rdbms/sqlmigration/)./dspace database migrate)During some upgrades, a Flyway database migration will be "ignored." One known instance of this is documented in https://github.com/DSpace/DSpace/issues/6762. If you are upgrading from DSpace 5.x to a later version of DSpace, the migration put in place to address https://github.com/DSpace/DSpace/pull/1128 will be "ignored" because it is not necessary. There is a special command you can run which will un-flag this migration as "ignored."
| Code Block |
|---|
dspace database migrate ignored |
The database migration (./dspace database migrate) should automatically trigger your metadata/file registries to be updated (based on the config files in [dspace]/config/registries/). However, if this update was NOT triggered, you can also manually run these registry updates (they will not harm existing registry contents) as follows:
| Code Block |
|---|
cd [dspace]/bin/ ./dspace registry-loader -metadata ../config/registries/dcterms-types.xml ./dspace registry-loader -metadata ../config/registries/dublin-core-types.xml ./dspace registry-loader -metadata ../config/registries/eperson-types.xml ./dspace registry-loader -metadata ../config/registries/local-types.xml ./dspace registry-loader -metadata ../config/registries/sword-metadata.xml ./dspace registry-loader -metadata ../config/registries/workflow-types.xml |