Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

  1. Download the latest DSpace release from the DSpace GitHub Repository. You can choose to either download the zip or tar.gz file provided by GitHub, or you can use "git" to checkout the appropriate tag (e.g. dspace-9.0) or branch.
    1. Unpack it using "unzip" or "gunzip".  If you have an older version of DSpace installed on this same server, you may wish to unpack it to a different location than that release.  This will ensure no files are accidentally overwritten during the unpacking process, and allow you to compare configs side by side.
    2. For ease of reference, we will refer to the location of this unzipped version of the DSpace release as [dspace-source] in the remainder of these instructions.
  2. 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

  3. Stop Tomcat (or servlet container). Take down your servlet container. 

    1. For Tomcat, use the $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.)
  4. Update your DSpace Configurations. Depending on the version of DSpace you are upgrading from, not all steps are required.  
    1. If you haven't already, please review the Release Notes for details about new features or configuration changes. There may be new configuration you wish to configure, or similar.
    2. Make sure your existing local.cfg is in the source directory (e.g. [dspace-source]/dspace/config/local.cfg).  That way your existing configuration gets reinstalled alongside the new version of DSpace.
    3. If you are upgrading from DSpace 7.x, you will need to perform the following steps. If you are upgrading from 8.x or a prior version of 9.x, skip this and move along.
      1. 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
      are upgrading from DSpace 7.x, you will need to perform the following steps. If you are upgrading from 8.x or a prior version of 9.x, skip this and move along.

        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
      1. You may wish to review the Release Notes for details about new features. There may be new configurations you may wish to tweak to enable/disable those features.
      2. Make sure your existing local.cfg is in the source directory (e.g. [dspace-source]/dspace/config/local.cfg).  That way your existing configuration gets reinstalled alongside the new version of DSpace.
  5. 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


  6. Upgrade your database (required for all upgrades). The DSpace code will automatically upgrade your database (from any prior version of DSpace).  By default, this database upgrade occurs automatically when you restart Tomcat (or your servlet container).  However, if you have a large repository or are upgrading across multiple versions of DSpace at once, you may wish to manually perform the upgrade (as it could take some time, anywhere from 5-15 minutes for large sites).
    1. (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.


    2. (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


    3. (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


    4. If the database upgrade process fails or throws errors, then look at the "Troubleshooting Upgrade Issues" section below for possible tips/hints.
    5. More information on the "database" command can be found in Database Utilities documentation.
    Note
    titleBy default, your site will be automatically reindexed after a database upgrade

    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 [dspace]/bin/dspace index-discovery -b (This must be run after restarting Tomcat)

    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.


  7. Deploy Server web application: Two deployment options are now available for the DSpace backend.

    1. 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

    2. Runnable JAR deployment (NEW in v8):  In this approach, you can remove any existing Tomcat installation. Instead you would run the DSpace backend from the "server-boot" JAR as described in the Installation Guide.
      Code Block
      languagebash
      titleServer-boot execution
      java -jar [dspace]/webapps/server-boot.jar
  8. Anchor
    new_solr_cores
    new_solr_cores
    Update/Install the Solr cores and rebuild your indexes. This may be done after starting the backend (e.g. via Tomcat), but is required for some features to function properly.
    1. 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


    2. Start Solr, or restart it if it is running, so that these new cores are loaded.

      Code Block
      [solr]/bin/solr restart


    3. 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.

      1. For example, to test that your "search" core is setup properly, try accessing the URL  ${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.
  9. Restart Tomcat (servlet container) or Runnable JAR. Now restart your servlet container (Tomcat/Jetty/Resin) or Runnable JAR and test out the upgrade.

    1. Upgrade of database: If you didn't manually upgrade your database in the previous step, then your database will be automatically upgraded to the latest version. This may take some time (seconds to minutes), depending on the size of your repository, etc. Check the DSpace log ([dspace]/log/dspace.log.[date]) for information on its status.
  10. 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.

    1. To reindex manually, just run:
      Code Block
      [dspace]/bin/dspace index-discovery -b
    2. You may also wish to reindex OAI-PMH content at this time:
      Code Block
      [dspace]/bin/dspace oai import
  11. Review / Update your scheduled tasks (e.g. cron jobs). For all features of DSpace to work properly, there are some scheduled tasks you MUST setup to run on a regular basis. Some examples are tasks that help create thumbnails (for images), do full-text indexing (of textual content) and send out subscription emails.  See the  Scheduled Tasks via Cron  for more details.
    1. If upgrading from 7.4 (or earlier) , you will want to make sure the new "subscription-send" task is added to your existing scheduled tasks (in cron or similar).  This new task is in charge of sending Email Subscriptions for any users who have subscribed to updates. (NOTE: "subscription-send" replaces the older "sub-daily" task from 6.x or below).  See the  Scheduled Tasks via Cron  for more details.
  12. Install or Upgrade the new User Interface (see below)

...

  1. Upgrade Node.js if necessary based on the version of Node.js listed in the Installing the Frontend (User Interface) documentation
  2. Download the latest dspace-angular release from the DSpace GitHub repository. You can choose to either download the zip or tar.gz file provided by GitHub, or you can use "git" to checkout the appropriate tag (e.g.  dspace-9.0) or branch.
    1. If you've cloned or copied this code into your own GitHub or GitLab repository, you may wish to simply pull the latest tagged code into your codebase using Git. That will allow you to more easily address any "code conflicts" between your local changes and the new version of DSpace (if any are found).
    2. NOTE: For the rest of these instructions, we'll refer to the source code location as  [dspace-angular].
  3. 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


  4. 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


  5. (Optional) Review Configuration changes to see if you wish to update any new configurations
    1. See the Release Notes
  6. Update your theme (if necessary), if you've created a custom theme in "src/themes" (or modified the existing "custom" or "dspace" themes in that location).  Pay close attention to the following...
    1. 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
      titlesrc/themes/eager-themes.module.ts
      import { EagerThemeModule as MyThemeEagerThemeModule } from './my-theme/eager-theme.module';
      ...
      @NgModule({
        imports: [
          MyThemeEagerThemeModule,
        ],
      })


    2. If you are upgrading from 7.x, you must migrate to standalone components.  To migrate your theme, you need to convert its components to the standalone architecture. To do so, simply follow the following steps:
      1. Fix any errors in all "<...>.module.ts" files in your theme folder. These errors may be mostly caused by importing old modules that are now deleted: simply delete any lines that refer to such modules;
      2. Run the command "ng generate @angular/core:standalone --path src/themes/<theme-folder>" to migrate the theme components to the standalone architecture, replacing <theme-folder> as necessary. WARNING: running the command while there are still errors on any <...>.module.ts will not produce the correct result, so make sure you have remedied those errors as mentioned in the previous step.
    3. If you are upgrading from 8.x, you must migrate to using Angular Control Flow syntax in all HTML templates (*.component.html file). This means that all usages of "ngIf" and "ngFor" are now replaced with their equivalent "control flow" syntax (e.g. "@if" and "@for"). If your theme has any custom HTML templates, they may require updates. Angular provides an automated migration tool which can be used to perform this migration (this is the same tool that was used to migrate all DSpace code in #3997).
    4. As of 9.0, all SASS/CSS styles use Bootstrap 5. This means that some CSS and SASS styles have changed slightly.  This may also impact your themes, as they may need to migrate Bootstrap 4 styles into Bootstrap 5 styles.  See the Bootstrap 5 migration guide for details.  For additional examples, see #3506 which updated DSpace to use Bootstrap 5.
    5. Additional minor changes may have been made. It's usually best to look for changes to whichever theme you started from.  If you started your theme from the "custom" theme, look for any new changes made under "/src/themes/custom".  If you started your theme from the "dspace" theme, look for any new changes made under "/src/themes/dspace". 
      1. 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/


    6. For the "custom" theme, the largest changes are often:
      1. New themeable components (subdirectories) may be added under "src/themes/custom/app", allowing you the ability to now change the look & feel of those components.
      2. The "src/themes/custom/theme.module.ts" file will likely have minor updates. This file registers any new themeable components (in the "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!
      3. Sometimes, new styles may be added in the "styles" folder, or new imports to "styles/theme.scss"
      4. If you have locally customized the styles or look & feel of any component, you should also verify that the component itself (in src/app) hasn't had updates.
    7. For the "dspace" theme, the largest changes are often:
      1. Existing customized components (subdirectories) under "src/themes/dspace/app/" may have minor updates, if improvements were made to that component.
      2. The "src/themes/custom/theme.module.ts" file will likely have minor updates. This file registers any new themeable components (in the "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!
      3. Sometimes, new styles may be added in the "styles" folder, or new imports to "styles/theme.scss"
      4. If you have locally customized the styles or look & feel of any additional component, you should also verify that the component itself (in src/app) hasn't had updates.
  7. Restart the User Interface.   
    1. 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


    2. 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


  8. Verify the UI and REST API are both working properly. 
    1. If you hit errors, see the "Troubleshooting Upgrade Issues" section below.  Additionally, check the "Common Installation Issues" section of the Installing DSpace documentation for other common misconfiguration or setup issues.

...