Setup and Configuration

This tutorial is the second part of a three part series of blog posts where we walk you through the process in which to successfully deploy the default UC Berkeley CollectionSpace Django web application on a production server. The first part, ‘’Installing and Configuring the Dependencies,” can be found here. In this tutorial we will perform the following in order to successfully deploy our Django web application:

  • Getting the source code
  • Setting up our Python virtual environment
  • Editing the script
  • Collecting the static files
  • Configuring the Apache2 web server
  • Deploying and troubleshooting
  • Next steps

Before we get started, let’s recap on CollectionSpace, the Django web application, and what was covered in the preceding tutorial.

CollectionSpace is an open-source, community based, web application built for museum and collection institutions to manage their internal collections. You can learn more about CollectionSpace by visiting

The CollectionSpace Django web application is also open-source and community based, but represents a public facing site with many available internal applications such as:

  • public search and reporting,
  • internal search and reporting,
  • collection browsing,
  • image browsing,
  • bulk Media uploading,
  • batch image uploading,
  • and more.

To preview several deployments of the Django web application, navigate to In addition, the source code can be found at

In part one of this tutorial, we installed and configured the various dependencies needed to run the Django web application in a production environment, these included:

  • Installing the Apache2 web server to run as a service on your Ubuntu 14.04 machine.
  • Installing Apache Solr, a powerful enterprise search server, with a “REST-like” API, to also run as a service.
  • Ensuring Python, Python’s package manager, PIP and Virtual Environment were installed on your machine, and if not, providing resources to do so.

Now that we have all of the background thoroughly covered, let’s begin with part two of this series. Our assumptions are that you’ve successfully completed the preceding tutorial and you currently have Solr and Apache2 running as a service on your machine. If not, feel free to contact us for help or post on the CollectionSpace Talk list.

Getting the source code

Navigate to the shared directory at /usr/local/share or more specifically:

$ cd /usr/local/share/

From within the above directory, make a new directory called “django” and within this django directory, a new subdirectory called “webapp” by executing:

$ sudo mkdir -p django/webapp

Next, navigate into the webapp directory:

$ cd /usr/local/share/django/webapp/

Now, get the source code by cloning the remote GitHub repository, locally:

$ sudo git clone

On the off chance that you may not have ‘git’ installed on your machine, run:

$ sudo apt-get install git

That should do it, as far as obtaining the latest and greatest source code.

Now, copy all of the files found in the ‘cspace_django_project’ directory to the parent directory, ‘webapp’, by executing, from within the ‘webapp’ directory:

$ sudo cp -r cspace_django_project/* .

Then, after effectively copying all the files, remove the ‘cspace_django_directory’ by executing:

$ sudo rm -r cspace_django_directory

Setting up our Python virtual environment

Now that we have the source code, we need to ensure that the dependencies required for this project remain separate of other Python projects on our machine. This is accomplished by isolating our project using the Virtual Environment tool, which was installed in part of this series. However, in order to begin, we still need to set some path variables for our virtual environments. To do so, execute the following commands, from within the webapp directory:

Note: although it’s possible to use the virtual environment wrapper (virtualenvwrapper) tool, you are likely to run into various permission issues that can easily be avoided by using the simple virtual environment tool (virtualenv).

$ sudo su

Warning: we are now the root user of the machine, be careful and mindful of what you do as the root user.

Now, create a virtual environment for our project, while still in the webapp directory, by running:

# virtualenv cspace_venv

Note: the ’#’ indicates that the current user is the root user. And (cspace_venv) indicates the current working virtual environment.

We are now ready to begin working in our dedicated virtual environment, ‘cspace_venv.’  You may now see the prefix ‘(cspace_venv)’ on the current line, defining the current working virtual environment. If not, run:

# source cspace_venv/bin/activate

A couple of useful commands to take note of:

(cspace_venv) # deactivate

Deactivates the current working virtual environment.


# rm -rf [name of the virtual environment to remove]

Which will remove any defined virtual environment, by simply deleting its directory.

Moving on, install the web application’s requirements within ‘cspace_venv’ by executing:

(cspace_venv) # pip install -r pycharm_requirements.txt

As suggested in the project readme, the dependencies found in the pycharm_requirements.txt are the least resource intensive, and simplest to install.

If that fails with something like “Command ‘python egg_info’ failed with error code 1 in /tmp/pip-build-dUM8oT/PyGreSQL/”, try the following:

# apt-get install python-psycopg2
# apt-get install libpq-dev
(cspace_venv) # pip install -r pycharm_requirements.txt

The dependency requirements should now install fully, and you should be prompted with “successfully installed Pillow-2.5.3 PyGreSQL-4.1.1 …..” If not, we would suggest searching for the error you may receive and posting to the CollectionSpace Talk list.

Next, install the Apache mod_wsgi module by executing:

# apt-get install libapache2-mod-wsgi

This module is used to host Python standard WSGI applications on an Apache server. You can read more about it here:

The next step is to ensure that all of the configuration files are in the right place for our deployment. Example configuration files can be found in the ‘config.examples’ directory. For a default deployment on a production server, these configuration files are adequate. Therefore, will will need to move them to the ‘config’ directory in order to satisfy the applications configuration requirements. To do so, from within the ‘webapp’ directory, execute the command’:

# cp -r config.examples/*.cfg config
(cspace_venv) # ./ configure pycharm
(cspace_venv) # ./ deploy default

You will likely see a bunch of warnings, ignore them for now.

Editing the script

We’ll need to make some additions to the script found in the ‘django/webapp/cspace_django_site’ directory in order to activate and point to the dedicated virtual environment, containing module dependencies we installed earlier, upon deployment.

Using your preferred command line text editing tool, add the following statements and expressions at the specified line numbers. We are not removing any lines, just adding them:

 1 import site



 11 # Activate virtual environment

 12 activate_env = os.path.expanduser('/usr/local/share/django/webapp/cspace_venv/bin/')

 13 execfile(activate_env, dict(__file__=activate_env))

Configuring the Apache2 server

Configure the Apache2 server to communicate with the Django web application by copying the provided file 000-default.conf found in ‘django/webapp/config.examples’ and overriding Apache2’s default configuration file. However, before doing so, following the instructions in the provided configuration file and then ensure that lines 50-52 are the following, adding them if necessary:

 50      WSGIDaemonProcess webapp_wsgi python-path=/usr/local/share/django/webapp:/usr/local/share/django/webapp/cspace_venv/lib/python2.7/site-packages
 51      WSGIProcessGroup webapp_wsgi
 52      WSGIScriptAlias /webapp /usr/local/share/django/webapp/cspace_django_site/ process-group=webapp_wsgi

Do not remove any lines, just comment them out to be safe.

Then, save your edits and copy the provided configuration file to the Apache2 directory by executing:

# cp -f ./000-default.conf /etc/apache2/site-enabled/

Collecting the static files for the webapp

Excellent, now collect the static files by executing, from within the ‘webapp’ directory:

(cspace_venv)# python collectstatic

Note: make sure you are still working in the ‘cspace_venv’ dedicated virtual environment, otherwise you will receive errors.

Type ‘yes’, effectively collecting all of the static files in STATIC_ROOT.

Then, restart the Apache2 server:

# service apache2 restart

Deploying and Troubleshooting

Visit ‘<your_ip_address>/webapp’ in your browser to ensure the webapp was deployed successfully. If all went well, you should be seeing:


And, clicking the ‘search’ button, effectively directing us to the search application, you should see:


However, if you run into errors, check the Apache2 server log located at /var/logs/apache2/error.log by executing:

# tail -f /var/logs/apache2/error.log

Back in the ‘webapp’ directory, you may need to disable many of the pre-installed web applications by first, listing the currently installed apps:

(cspace_venv)# ./setup show

And, disabling any that may be causing problems, for example:

(cspace_venv)# ./setup disable hello

Next steps

If all went well, you should now be able to access and view your new UCB CollectionSpace Django web application from your browser, including the the public search application. If not, continue to troubleshoot by using the Apache2 error.log, and as always, feel free to post any difficulties on the CollectionSpace Talk list.

Okay, so we are not completely out of the woods yet. You’ll notice that any queries performed in the search application returns no list of records. Now you’re likely asking, “Yousuf, what gives?”

Well, this is due to the fact that we have yet to configure Solr to talk to our CollectionSpace PostgreSQL database. That, we will cover in the next post in this series, along with:

  • understanding the Solr tools, scripts, and files built by UCB,
  • configuring the imageserver so that images are provided in search results,
  • and next steps.

As always, we hope you found this tutorial useful and we look forward to seeing you as part of the growing CollectionSpace community. For questions about how CollectionSpace can help manage your museum collections, feel free to contact us and our development team here at Granite Horizon.

Read More

With the countless Museum Collection Management (MCM) platforms that exist, choosing one that fits your organization’s workflows and budget can be a headache. We’ll attempt to relieve this headache, ever so slightly, by comparing two popular MCM platforms, CollectionSpace (CS) and PastPerfect (PP). The information that follows, other than comments, is sourced directly from CS (v4.3) and PP (v5.0) current release documentation. We even provide links, so you can easily research a discussed feature of the corresponding platform.

The categories for comparison include:

  • System Architecture
  • Available Profiles
  • User Interface
  • Security
  • Support
  • Development
  • Pricing
  • Content Management

Let’s begin with a brief description of each MCM platform, derived directly from their web-pages, before moving on to our side-by-side comparisons.


CollectionSpace is a web-based, open source collections management and information system for museums and other collecting institutions. You can use it to manage your museum’s cataloging, acquisitions, loans, and many other activities.”

“The CollectionSpace team and community is made up of museum professionals, software engineers, and interaction designers.”


PastPerfect is the world’s leading software program for collection and contact management. Over 9,000 organizations worldwide have achieved their goals using PastPerfect”

“It handles accessions, descriptive cataloging, loans, exhibits, capital campaigns, membership development, pledges, dues, donation receipts, research, lexicons, and reports.”

System Architecture

Feature CollectionSpace PastPerfect Comments
Platform Nuxeo, Apache Tomcat, PostgreSQL or MySQL, Java, HTML, CSS, Javascript, and XML Microsoft Visual FoxPro SQL, CSS, HTML CS: built on the popular Nuxeo Enterprise Content Management platform, CS uses a variety of free and open source developer community supported software and languages
PP: the remaining information about the PP platform is unknown. We can assume that it uses Microsoft based languages and technologies at its core. Unfortunately, the database back-end (FoxPro) is no longer supported by Microsoft. However, the team at PP assure users that this will not affect the quality and reliability of current and future releases.
Interface Web application Desktop application CS: can be accessed from any computer through the web browser, unless otherwise configured for specific ip-addresses
PP: access is done on a single computer, or with an upgrade, over a network for authorized computers
Supported Host Server OS Linux, Mac, Windows Windows CS: setting up on a Linux Ubuntu distribution is preferred
PP: requires purchase of Windows OS and other Windows software
Installation Requires developer knowledge * CD (single computer). Requires sysadmin knowledge (network). CS: installing can be development heavy, but the process is second nature to CS developers. The CS server can be installed on any OS listed above
 PP: installing on a single computer is simple for anyone with basic computer knowledge. Installing on a network, however, requires knowledge of Windows Network OS, a dedicated network computer, network cards on each computer, and purchase of the PP network upgrade
Upgrading Requires a CS developer to successfully upgrade from older versions Provides an import feature to migrate data from older versions CS: the steps to upgrade from an older version accommodate every new release
PP: thanks to the import feature upgrading from older version appears easy. Upgrades must be purchased from PP


Feature CollectionSpace PastPerfect Comments
Core YES YES CS: includes fields and procedures common to most collecting organizations
PP: conforms to latest standards for cataloging archive, library, historic object, art object, natural history, archeology, and photographic collections
Anthropology YES NO CS: includes fields and procedures useful for collections of anthropology and ethnography
PP: see core comments
Botanical Gardens YES NO CS: includes fields and procedures useful for living plant collections
PP: see core comments
Fine and Contemporary Art YES NO CS: includes fields and procedures useful for collections of fine and contemporary art
PP: see core comments
Herbarium YES NO CS: includes fields and procedures useful for preserved plant specimen collections
PP: see core comments
Local History and Material Culture YES NO CS: includes fields and procedures useful for local history and material culture collections
PP: see core comments

Platform UI

Feature CollectionSpace PastPerfect Comments
User Friendly YES YES CS: easy to navigate, clear distinction between features, concise labeling
PP: easy to navigate, clearly labeled features, simple
Attractive * ? ? CS: colorful, modern, and uncluttered. See screen-shots below.
PP: somewhat sterile, grey, and slightly cluttered. See screen-shots below.
Easily Customizable YES NO CS: a web application that can be easily customized
PP: a desktop application that is not customizable

* This is entirely subjective, ultimately it’s up to you to decide.

CollectionSpace UI:

Image 1: The standard look and layout of collection record in Collection Space.
Image 2: Creating a new record or term in Collection Space.

PastPerfect UI:

In order to avoid any copyright infringement, we have chosen not to provide any screen-shots of the PastPerfect platform, but you can find many of them in the user manual found at


Feature CollectionSpace PastPerfect Comments
Custom Groups and Permissions YES YES CS: each custom user role you create is defined by 22 parameters and the refined even further with read, write, delete, and none. Read more.
PP: an optional feature when creating a new user, it’s possible to create groups and refine permissions in all program areas. Read more.
Custom User Permissions YES YES CS: this is configured from the Administration tab of the platform. Can specify the specific role of the user.
PP: by adding a users to a custom group, the security settings of the group are enforced upon the user. Read more.
User Forgot Password YES NO CS: a link is provided at the login page to reset your password. Clicking the link sends a message to your email with password reset. Instructions. Read more.
PP: as far as we can tell, PP does not provide the user the ability to reset a forgotten password.


Feature CollectionSpace PastPerfect Comments
User Documentation YES YES CS: a constantly evolving document, the user manual is not very comprehensive and you’ll find some sections that are missing. However, having access to the various profile demos answers a lot of questions. Read more.
PP: a comprehensive and well written online user guide is available through the website. Read more.
Developer Documentation YES YES, but limited to only the public facing site or Virtual Exhibit CS: extensive developer documentation can be found through CS on the project’s Wiki page. This includes both the platform itself and the deployable public facing site. Read more.
PP: you can find documentation on how to configure your Virtual Exhibit using the built in tools, HTML, and CSS. Read more.
Active Q&A Forum YES YES CS: a very active email list is used by both CS implementers and developers. Responses, on average, are heard within 24 hours. Read more.
PP: questions and answers can be found on PP’s support page, under Knowledge Base. Read more.
Software Help YES YES CS: available through contacting service providers, asking a question on the CS Talk list, and even contacting the CS program staff regarding core technical information.
PP: in general, PP provides 24 hour support, giving priority towards customers who pay for annual support services. Read more.

Public Facing Site

Feature CollectionSpace* PastPerfect** Comments
Deployment Requires developer knowledge Require purchase of addon and setup, see pricing for details CS: the source code for a public facing site is free. Uses Django and CS Rest API’s. Built by the development team at UC Berkeley. It is highly configurable to the look and feel of your organization. Read more.
PP: called the Virtual Exhibit (VE), a web tool is available through the PP interface. Read more.
Public Collection Search YES NO, but see comments for more details CS: “public (non-authenticating) search appliance”
PP: provides the ability to search the collections of all PP accounts. The VE does not provide a search feature.
Internal Collection Search YES NO CS: “internal (authenticating) search appliance”
Browse Collection YES, but see comments for further details YES CS: is accomplished through other web apps such as ‘Image Browser’ (below)
PP: the primary functionality of the VE is the ability to browse the accounts collections
Records Export YES NO CS: returned search results can be exported as a CSV or XML document
Image Browser YES NO CS: “a ‘lightbox-like’ app that tiles images based on a keyword query to Solr backend”
Image Server YES NO CS: “cacheing proxy server to serve images from CSpace server”
Imaginator YES NO CS: “‘google-lookalike’ search app — provides ‘N blue links’ for a keyword search”
Bulk Media Upload YES NO CS: uses the REST API to bulk upload Media Handlers up to 100 at a time to the CS server
Batch Image Upload YES NO CS: uses the REST API to upload images in bulk to the CS server
Mobile Compatible YES ? CS: provides mobile device support for public facing site
PP: no documentation could be found on mobile compatibility of the VE

* The code for all available CS apps can be found on the UC Berkeley CSpace Django Project GitHub repository, found here.

** The page found at provides a basic online PP Virtual Exhibit.


Feature CollectionSpace PastPerfect Comments
REST API YES NO CS: you’ll find API’s for each layer of the CollectionSpace platform, which include the service layer, application layer, and interface layer. Read more
PP: not applicable, since the software is owned and operated by PastPerfect Software, Inc
Customization YES NO CS: as an Open Source Initiative and operating under a Educational Community License, the source code is available for anyone to view, download, and modify as they see fit. Read more.
PP: see REST API notes.


Feature CollectionSpace PastPerfect * Comments
Software Free $870 for initial install and $375 for version upgrades CS: opensource and free to download. Licensed under the Educational Community License, Version 2.0. Membership is available to help support the project and ensure the software is available for years to come. Read more.
PP: covers a single single user/machine, additional users would require the Network Upgrade. Read more.
Multimedia Included MultiMedia Upgrade: $385 CS: this comes included with your CSpace instance
PP: attach digital images and multimedia files to collection records. Read more.
Users Free $515 (2-5 users), $900 (6-10 users), $1240 (11-25 users), $1650 (unlimited users) CS: web based software can be accessed from anywhere for authorized users
PP: allows shared access to data by setting up multiple workstations
Public Facing Site Free, but see comment  $285 (setup), $450 (hosting first 10,000 records),  $245 (each additional 10,000) CS: requires development knowledge to deploy the web application, and other web applications already developed by UC Berkeley
PP: one time setup fee with subsequent scaling fees
Inventory Management Free $295 CS: included in the ‘iReports’ web app, and through the CS platform
PP: provides to tools to implement “successful collection tracking projects”. “This add-on product makes it simple to create inventory lists, print barcode labels, track collections electronically, and ensure accurate records”
Barcode Printing See comment $125 CS: not available, but can be added by a developer and service provider
PP: allows for quick “artifact marking and tracking and inventory control”
Training Free, see comment $119 (3 CD Set + User Guide), $39 (Cataloging Collections), $39 (Managing Contacts, Donations, & Memberships), $39 (Research & Reporting) CS: a series of Youtube training videos have been developed and are available to anyone
PP: can be purchased individually or as a set. Provides a way to orient staff and volunteers on the workings of PP
Hosting See comment See comment CS: can be hosted on any type of OS compatible server (i.e. Amazon Web Services). Price varies according to your selected service provider
PP: varies depending on the selected add-ons and internal network setup
Support YES, see comment $345 (first year, single user), $425 (first year network), $440 (annual single user), $540 (annual network 2-10 users), $745 (annual network 11+ users), $85 (per-incident for non-support clients) CS: can be provided by your service provider, or if done internally, through the Talk list and through contacting the CS development team
PP: 24 hour support, where annual support service customers have priority. Calls are said to be returned within the hour

* A 20% discount for Institutional Members of the American Association for State and Local History. A complete price list for PastPerfect can be found at

Content Management

To be able to cover the content management capabilities of each platform, it would easily take an entire blog post for each. Even then, we still don’t think we’d be able to cover everything these platforms have to offer. Instead, we encourage you to explore each platform on your own. Both PastPerfect and CollectionSpace provide free demos for their individual platforms.

For CollectionSpace, you can try out all of the available profiles mentioned above in addition to various implementations of the public facing site simply by navigating to the following pages:

For PastPerfect, you can download and evaluate the latest release on a machine running the Windows OS, such as XP, Vista, 7, 8, and 10, after completing their mandatory information form. The download page can be found by navigating to:

The Takeaway

When it boils down to making the ultimate decision on which platform to integrate into your organization, there are several major questions to consider. For example, to list only a few:

  • How easy will it be to adapt and migrate our existing collection data?
  • What are the short and long term costs associated with the platform and does it fit our budget?
  • Is there a strong and active community surrounding the platform and its associated technologies?
  • Does the current configuration support our existing needs?
  • How easy will it be to customize our platform to our individual needs?
  • Does it support our existing organizational workflows?
  • Is it straightforward, user friendly, and likely to require minimal training of our staff?
  • Can the platform be extended to web and mobile?
  • Is the platform secure, reliable, etc..?

To summarize our findings, PastPerfect, built by PastPerfect Software, Inc., is a highly structured and reliable MCM platform that runs on a Microsoft Windows desktop, either locally, or over a Microsoft network. Various tools are provided to make migrations and web deployment relatively easy and simple. In addition, addons are available to extend the capabilities of your platform even further. The user documentation is extensive and well written. However, the facts that the platform and its addon features are only available at a cost, it is Microsoft dependent, lacks an available developer API, and the UI seems relatively outdated can be somewhat discouraging if these given facts are of value to you. Overall, PastPerfect’s reliability, features, and solid support may outshine these areas in which it lacks.

CollectionSpace, on the other hand, is an open source, community based, web application that provides a lot of freedom in who, what, and how it is configured. Of course, being an open source, community based application, its success relies heavily on the activity of the community and the support it receives through memberships, grants, donated developer time from universities and colleges, and stewardship by Lyrasis. The architecture and design is modern, flexible and highly capable. The platforms available features and various pre-configured profiles make it a very attractive option right out of the box. At its price point, we can only expect the platform’s popularity and support to increase within the foreseeable future.

We hope this post helps ease the headache that comes with having to make the decision on which Museum Collection Management platform to adopt.  If you have any questions regarding CollectionSpace and how it can meet your organization’s needs, please feel free to reach out as we would be happy to help (contact us). Also, we encourage your comments on anything discussed in this post.  Please, feel free to add your comment below.

Read More