Table of Contents |
---|
Introduction
Info |
---|
If you would prefer to install DuraCloud from a binary distribution, you can find instructions for that process here. |
...
- DuraStore - this web application provides the access to and management of storage resources, which includes handling the storage portion of the DuraCloud REST API
- StorageProviders - this set is made up of the StorageProvider interfaces and the implementations which connect to distinct cloud stores (currently Amazon S3, Rackspace CloudFiles, and Windows Azure)
- DuraService - this web application handles the deployment and management of services within DuraCloud, which includes handling the services portion of the DuraCloud REST API
- DuraBoss - this web application includes the reporter, executor, auditor, and manifest projects, each of which expose their own distinct set of calls via the DuraCloud REST API; the storage providers which are currently supported are listed here.
- DurAdmin - this web application is the UI front end of DuraCloud, it provides users with a view into the information available from the other applications. DurAdmin uses the REST APIs of the other applications to communicate with them.
- Services - the set of all deployable services, as well as the support projects that allow the DuraCloud services infrastructure to function
- Security - handles security for the DuraCloud applications
- Common - a set of projects which provide utilities for other portions of the codebase to reuse
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 initialization 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. The storage providers which are currently supported are:
...
This guide lays out the steps necessary to begin using DuraCloud:
- Configure DuraCloud database
- Build and deploy the DuraCloud web applications
- Set up the OSGi services container
- Initialize the DuraCloud applications
- Test your installation
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.
Prerequisites
Software that must be installed on your system prior to building/using DuraCloud
- Java: Version 8 required
- Maven 2.2.1 or above
- Tomcat 6.x or above
- Java 6 (note: the djatoka service has compatibility issues with open-jdk)
- The Oracle JDK is recommended for building DuraCloud, as this is the JDK used for DuraCloud testing.
- Maven 3.x
- Tomcat 8.x
- Git
- DuraCloud Management Console
- DuraCloud MillSubversion
Setting up DuraCloud
Info |
---|
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\] |
Build and deploy the DuraCloud web applications
Check out latest stable release from
SubversionGitHub repository
Code Block svn cogit clone --branch duracloud-4.0.0 https://svngithub.duraspace.orgcom/duracloud/tags/duracloud-2.0.0
Set environment variables
Code Block export JAVA_OPTS="-XX:MaxPermSize=256m" export MAVEN_OPTS="-Xmx1024m -XX:MaxPermSize=1024m"
Configure Tomcat
$CATALINACode Block Add to $CATALINA_HOME/conf/tomcat-users.xml
No Format <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/
- Configure Maven2
- Add tomcat user to $M2_HOME/conf/settings.xml
No Format <servers> <server> <id>tomcat-server</id> <username>[ANY-USERNAME]</username> <password>[ANY-PASSWORD]</password> </server> </servers>
- Add tomcat user to $M2_HOME/conf/settings.xml
- Build
- From top of source tree
Code Block mvn clean install
- From top of source tree
Set up the OSGi services container
This step assumes the successful completion of the previous build instructions
Panel | ||||
---|---|---|---|---|
| ||||
|
Panel | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
|
Once the OSGi services container is running, check to ensure that it was created properly
- In the console where the "run" script was executed, an "osgi" prompt should be available. If it is not available, hitting enter should bring it up.
- Type "ss" and hit enter. This should list all of the available bundles. This list should include 50 items, all of which are either in the ACTIVE or RESOLVED state.
Initialize the DuraCloud applications
server.xml
Add the config attribute "URIEncoding" with value "UTF-8" to your Tomcat Connector. Your connector may look like the following:
No Format <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:
No Format 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 -Dduracloud.config.file=/any/path/to/duracloud.properties 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). 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.
Start Tomcat
Code Block $CATALINA_HOME/bin/startup.sh
- Configure Maven3
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.
No Format <servers> <server> <id>tomcat-server</id> <username>[ANY-USERNAME]</username> <password>[ANY-PASSWORD]</password> </server> </servers>
- Build
From top of the source tree, execute (note that this build runs unit tests, but not integration tests):
Code Block mvn clean install -DskipIntTests
- Bonus, running Integration Tests
- Grab a copy of the file in the codebase under common-json/src/main/resources/test-config.json and place it somewhere on your system
- You'll need an account for each of the providers to be tested. Update the JSON file to include your credentials. These tests actually communicate with each storage provider and verify that the calls being made work properly
- Add an environment variable called DURACLOUD-TEST-CONFIG with the value being the full path to your updated credentials JSON file. A sample credential configuration file can be found in the baseline at <project root>/integration/src/test/resources/test-config.json
From the top of the source tree, execute
Code Block mvn clean install -pl integration
- Build app-config utility, from within the //app-config module
Code Block mvn assembly:assembly
- Run the app-config utility
Code Block java -jar target/app-config-[VERSION]-driver.jar <init.props>
- The init.props file is a configuration file which specifies all of the information necessary for the DuraCloud applications to run. An example of this file can be found at //app-config/src/main/resources/init.props. This file will need to be updated to match your environment.
- When the app-config utility completes successfully, the last line of output printed to the console will be the word "success". If this is not the case, check that your configuration file includes the correct information.
Test your installation
- Once all of the above steps have been completed, your DuraCloud should be ready to test.
- Go to http://localhost:8080/duradmin (change host or port as necessary).
- Log in using the credentials provided in your configuration filevalid DuraCloud Management Console credentials.
- You should be able to view, add, update, and delete spaces and content in Spaces tabYou should be able to deploy services in the Services tab
- Congratulations! You now have a functional DuraCloud installation.
Optional items
Code coverage
SyncTool installers
- The installers for the Sync Tool (Windows, Mac, Linux) are built using BitRock InstallBuilder Enterprise, so this tool must be installed locally.
- Download and install BitRock InstallBuilder Enterprise version 15.1.0 or above
- Place the license file for InstallBuilder in the InstallBuilder installation directory
- Update the maven settngs.xml file ($M2_HOME/conf/settings.xml) to include the path to the installbuilder executableIf you plan on using Clover, the following element needs to be added to your maven 'settings.xml'
No Format Add a duracloud profile to include the InstallBuilder path, and include the duracloud profile in the set of active profiles
Code Block
<profiles> <profile>
<id>duracloud</id> <properties>
<installbuilder.executable.path>[FULL-PATH-TO-BITROCK-INSTALLBUILDER-EXECUTABLE]</installbuilder.executable.path> </properties> </profile> </profiles>
- To run clover
Code Block mvn clover2:instrument clover2:aggregate clover2:clover -Pprofile-clover
- A report will be generated in the following directory:
//target/site/clover/
Service tests within OSGi (Linux only)
... <activeProfiles> <activeProfile>duracloud</activeProfile> </activeProfiles>
From the //synctoolui directory in the DuraCloud source tree, execute
Code Block mvn clean install -Pinstallers
- The installers can be found under the synctoolui/target directory
- From inside the //integration-test module
mvn install -PrunServicesAdminTestsCode Block
Logging
- DuraCloud uses the SLF4j SLF4J logging framework backed by the LogBack implementation
- By adding either a logback.xml or logback-test.xml file on the classpath, logging configuration can be customized
DuraCloud internal tools
...
- This tool provides a commandline interface for interacting with the 'services-admin' installed in a running OSGi container (see notes above for starting the container)
- To build and run the CLI, from within the //servicesadminclient module
Code Block mvn assembly:assembly java -cp target/servicesadminclient-[VERSION]-cli.jar
Building Java client packages
To create a distributable zip of the storeclient
, serviceclient,or reportclient which includes their dependencies, from within the project directory (//storeclient, //
serviceclient, //reportclient) run
Code Block mvn install -Ppackage-client
- The packaged zip will be found under the project's target directory
Misc configuration/discussion
Services on Windows
The following services do not function in a Windows deployment environment
- WebAppUtilService
- HelloWebappWrapper
- J2KService
- ImageMagickService
...