Skip to content


Subversion checkout URL

You can clone with
Download ZIP
Self-Contained Islandora 7.x Repository Service
XSLT CSS PHP Shell Perl Ruby JavaScript
Branch: master

Fetching latest commit…

Cannot retrieve the latest commit at this time

Failed to load latest commit information.
drupal @ e623464
fcrepo @ 911e0ad
gsearch @ 7e568f6
islandora @ 5e78890
islandora_batch @ bbde87a
islandora_book_batch @ 13f28fa
islandora_drupal_filter @ d69c15e
islandora_fits @ 5615052
islandora_importer @ 0dc49a3
islandora_internet_archive_bookreader @ f578b3f
islandora_ip_embargo @ be3eba7
islandora_marcxml @ 6a24a98
islandora_ocr @ 3ac5a65
islandora_openseadragon @ 3b603ad
islandora_paged_content @ cda46fe
islandora_simple_workflow @ f7a0d2a
islandora_solr_search @ 0b38158
islandora_solr_views @ dcf740d
islandora_solution_pack_book @ 485180b
islandora_solution_pack_collection @ 92d6ff0
islandora_solution_pack_compound @ 1d9d8b8
islandora_solution_pack_image @ 2ec699a
islandora_solution_pack_large_image @ d0baae5
islandora_solution_pack_newspaper @ 087e1e2
islandora_solution_pack_pdf @ e406349
islandora_theme_flvc @ 71adc9c
islandora_utils @ 2f302a3
islandora_xml_forms @ b34f510
objective_forms @ f62d741
php_lib @ 912f1fa
tuque @ 0feccf2

Self-Contained Islandora 7.x Repository Service

This repository contains git submodules, configuration template system, and supplemental scripts for running an Islandora 7.x repository service. See the Building Instructions file for mostly accurate guidance on getting started with this setup. (In other words, it is a little dated, but will be mostly helpful.)

Goals of this setup

  • Put (most) everything in a self-contained directory using relative paths for most components with a configuration script that generates configuration files for absolute paths.
  • Make it easy to track the upstream Islandora work so that you can bring selected commits into your own environment, if desired.
  • Put the configuration of Fedora Commons, FedoraGSearch, SOLR, and other associated components under version control.
  • Use Drupal Features to store the Drupal configuration and put it under version control.
  • Support multi-site setups for separate Islandora/Drupal instances using a common Fedora Commons, SOLR, and djatoka installation.

What is outside this setup

  • Apache HTTPD (with some specific configuration directives specific to Islandora)
  • MySQL RDBMS for Drupal and Fedora Commons
  • Java JVM
  • ImageMagick
  • Poppler Utils
  • Ghostscript
  • Tesseract

Description of key files, directories, and scripts - Shell environment setup

This bash script in the root directory will set environment variables, command aliases, and other important activities to prepare your shell environment for running the repository service. It will check the relative modification dates of the configuration files (in sed_templates/) versus the generated setup script (bin/reposervice-env) and warn if the configuration generator (bin/reposervice-config) needs to be run again.

Run this script whenever you start a new shell in order to pick up the repository setup. Important: run this script with the shell source command so that it affects the currently running environment:

    cd reposervice
    source ./

If you haven't yet run the bin/reposervice-config script, you'll be prompted to do so.

config-values.sed - Configuration values

Copy the config-values.sed-sample file to the config-values.sed name. This file contains command directives that are fed into sed that modify placeholders in configuration file templates (sed_templates directory) with real values. This file is explicitly not stored in version control (e.g., it is in .gitignore) so you can have separate files for development, staging, and production servers. The names of the placeholders should be self explanatory.

sed_templates/ directory - Template files

Files in this directory contain templates of configuration files that are under version control. Each template file is run through sed using the commands in config-values.sed (plus others added by bin/reposervice-config) to the a file of the same name in the sed_substituted_files directory. Some special files of note:

sed_templates/binaries#tomcat#conf#Catalina#localhost/ files

These files will be processed and copied into the Tomcat conf/Catalina/localhost/ directory. It is the tricks in these files that will allow us to:

  • put the FedoraGSearch configuration outside of the expanded WAR file
  • set the fedora_home/ path to a location within the reposervice/ directory
  • make Tomcat file WAR files in locations outside of the webapps/ directory

sed_templates/fedora_home#gsearch#fgsconfigFinal/ directory

These are FedoraGSearch configuration files based on the per-datastream-type transformation model first found in the Discovery Garden GitHub repo.

reposervice/binaries/ directory

There are several perquisite binaries that are not included in the git repo for reasons of size and/or relatively static nature (e.g., Apache Tomcat, Apache SOLR, djatoka, FITS). The bin/reposervice-config script checks for the existence of these prerequisites and prompts if they are not there.

repository_sites/ directory

This directory contains the configuration (e.g., Drupal settings, features and themes, Fedora server setup, and Islandora XML Builder forms) that are specific to a site. See the repositesetup script for more discussion about how this directory is used. This directory is in the reposervice .gitignore file; you probably want to create private Git repo to version control this content outside of reposervice.

site_tempate/ directory

This directory is the template of a new Islandora site. It will be copied to the repository_sites/ directory and named as the hostname of the new Islandora site as part of the site setup process.

bin/reposervice-config shell script

This shell script has several purposes in setting up the reposervice/ setup:

  • Checks for prerequisites to be downloaded, expanded, and symlinked appropriately in the reposervices/binaries/ directory.
  • Figures out the necessary djakota setup environment.
  • Generates the bin/reposervice-env shell script, use subsequently by the script to set up the shell environment.
  • Runs the sed replacements on the configuration template files, checks to see if they match the current configuration, shows context-sensitive diffs and prompts the user for file replacement.
  • Verifies that binary files that have been copied into reposervice/ tree are at their latest versions (e.g., the compile Fedora Commons WARs, the Islandora Drupal Filter JAR file)

bin/repositesetup script

This Perl script creates and updates an Islandora repository instance under the Drupal multisite setup. See the "Building Instructions" document for details on using the script.

bin/upstreamcheck script

This script contains a mapping of git submodules to their upstream mainline development branches. Running this script will fetch upstream commits and show a brief git log between the HEAD and the upstream mainline development. This is useful on development instances when you are closely tracking upstream development.

bin/updaterepoenv script

This script runs through a series of steps necessary to sync the local environment with reposervice.git. The environment is somewhat complex, so it is easy to forget some of the steps.

Something went wrong with that request. Please try again.