A more current version of this guide is now available. If you are deploying DuraCloud for development, see this page: https://github.com/duracloud/deployment-docs/blob/master/dev-guide-getting-started.md. If you are deploying DuraCloud in production, see the pages here: https://github.com/duracloud/deployment-docs. The following document should be considered deprecated and will be removed in the near future.
If you would prefer to install DuraCloud from a binary distribution, you can find instructions for that process here.
DuraCloud application software is composed of many parts. A breakdown of the primary pieces is as follows:
The DuraCloud software, by its very nature, is designed to be integrated with underlying cloud storage providers. As may be expected, these integrations are necessary for the system to be properly exercised. In order for DuraCloud to connect to these underlying providers, appropriate credentials must be provided as part of the application configuration step. It is recommended that you acquire the necessary storage provider credentials prior to attempting to set up DuraCloud. Only one storage provider is required to run DuraCloud.
This guide lays out the steps necessary to begin using DuraCloud:
Although this document is written from a Linux environment perspective, analogous builds/installations have been tested in Windows (but may have limitations, as noted below). Any comments or feedback are welcomed.
Software that must be installed on your system prior to building/using DuraCloud
Any portions of the configuration below for which you need to include a replacement value will be written in all capital letters and included in brackets: [LIKE-THIS]
Check out latest stable release from GitHub repository. Determine the release number of the latest stable release by going to https://github.com/duracloud/duracloud/releases and making a note of the tag name of the most current release.
git clone https://github.com/duracloud/duracloud.git cd duracloud git checkout <latest-release-tag>
Set environment variables
export JAVA_OPTS="-XX:MaxPermSize=256m" export MAVEN_OPTS="-Xmx1024m
Add to $CATALINA_HOME/conf/tomcat-users.xml
<tomcat-users> <role rolename="manager-gui"/> <role rolename="manager-script"/> <role rolename="admin"/> <user username="[ANY-USERNAME]" password="[ANY-PASSWORD]" roles="admin,manager-gui,manager-script"/> </tomcat-users>
Add to $CATALINA_HOME/conf/server.xml
Add the config attribute "URIEncoding" with value "UTF-8" to your Tomcat Connector. Your connector may look like the following:
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" URIEncoding="UTF-8" />
Create a duracloud properties file (/any/path/to/duracloud.properties) that contains the following keys:
mill.db.name=<mill db name> mill.db.port=<mysql port> mill.db.host=<mysql host> mill.db.user=<username> mill.db.pass=<password> db.name=<ama db name> db.host=<mysql ama host> db.port=<mysql ama port> db.user=<username> db.pass=<password>
Add a system property (duracloud.config.file) to point to your duracloud configuration file.
This can be done by adding the property directly to your JAVA_OPTS or CATALINA_OPTS environment variables. You can also set these values in $CATALINA_HOME/bin/setenv.sh (linux,osx) or $CATALINA_HOME/bin/setenv.bat (windows), for example:
The duracloud.config.file system property can also refer to an Amazon S3 address using the s3://<bucket>/<path to file> syntax provided your tomcat instance is running on an instance with the appropriate AWS credentials. More information on AWS credentials management.
Add tomcat user to $M2_HOME/conf/settings.xml. Make sure that the username and password used here match those included in the tomcat-users.xml file.
<servers> <server> <id>tomcat-server</id> <username>[ANY-USERNAME]</username> <password>[ANY-PASSWORD]</password> </server> </servers>
From top of the source tree, execute (note that this build runs unit tests, but not integration tests):
mvn clean install -DskipIntTests
From the top of the source tree, execute
mvn clean install -pl integration
Add a duracloud profile to include the InstallBuilder path, and include the duracloud profile in the set of active profiles
<profiles> <profile> <id>duracloud</id> <properties> <installbuilder.executable.path>[FULL-PATH-TO-BITROCK-INSTALLBUILDER-EXECUTABLE]</installbuilder.executable.path> </properties> </profile> </profiles> ... <activeProfiles> <activeProfile>duracloud</activeProfile> </activeProfiles>
From the //synctoolui directory in the DuraCloud source tree, execute
mvn clean install -Pinstallers
To create a distributable zip of the storeclient or reportclient which includes their dependencies, from within the project directory (//storeclient, //reportclient) run
mvn install -Ppackage-client