# Usergrid 2: Deploy to Tomcat __NOTE__: Beware that Usergrid 2 is UNRELEASED SOFTWARE ## Requirements * [JDK 1.8](http://www.oracle.com/technetwork/java/javase/downloads/index.html) * [Maven 3.2+](http://maven.apache.org/) * [Tomcat 7+](https://tomcat.apache.org/download-70.cgi) * [Cassandra 1.2.1*](http://cassandra.apache.org/download/) * [ElasticSearch 1.4+](https://www.elastic.co/downloads/elasticsearch) * [Usergrid 2.1](https://github.com/apache/usergrid/tree/2.1-release) ## Running 1. Start up Cassandra [^1] a. To do this you can navigate to the cassandra folder and run ```./bin/cassandra ``` 2. Start up Elasticsearch a. To do this you can navigate to the folder where you extracted elasticsearch and run ```/bin/elasticsearch``` ### Running Usergrid #### Build The Java SDK 1. Navigate to where you cloned the usergrid repo 2. Navigate to the ```sdks/java``` directory 3. Run ```mvn clean install``` #### Build The Stack Itself 1. Navigate to the ```stack``` directory. 2. Run ```mvn clean install -DskipTests``` 3. This will generate a war at ```rest/target/ROOT.war``` #### Deploying the Stack Locally 1. Take this war and deploy it on downloaded tomcat. 1. In the lib directory of the tomcat you must also put usergrid-deployment.properties. ( An example file is provided below) 1. Start up Tomcat a. To do this you can navigate to folder where Tomcat is install and run ```./bin/catalina.sh start``` Next, you need to make some API calls to initialize Usergrid's storage and indexing systems. You can make these API calls using curl or your favorite HTTP client. These calls can only be done with the superuser credentials that appear in your __usergrid-deployment.properties__ file. Here's how to do the calls with curl (and assuming your superuser password is 'test'): curl -X PUT http://localhost:8080/system/database/setup -u superuser:test curl -X PUT http://localhost:8080/system/database/bootstrap -u superuser:test curl -X GET http://localhost:8080/system/superuser/setup -u superuser:test Once those three calls execute without error, then you are done. If you do see errors the double-check that you have Cassandra and ElasticSearch running and that your properties files lists your Cassandra and ElasticSearch hostnames correctly. Also check that ElasticSearch cluster name (in elasticsearch.yml) matches the one in the Usergrid properties file. If the problem persists come talk to us on the Usergrid mailing list, we might be able to help. The stack is now ready to be queried against, but to get the most out of it you'll need to initialize and use our portal! #### Running The Portal Locally ##### Requirments [nodejs 0.10+](https://nodejs.org/download/) 1. Make sure you've installed node.js above. Any version above .10 or .10 should work fine. 2. Navigate to ```usergrid/portal```. 3. Open config.js and make sure the override URL is pointing to your local tomcat. 4. Now in the portal folder run the following command ```./build.sh dev``` 5. The portal should automatically open ready for use! Now usergrid is fully ready to use! Feel free to query against it or use it however you like! Example __usergrid-deployment.properties__ file --- ``` # core persistence properties usergrid.cluster_name property=usergrid cassandra.embedded=false cassandra.version=1.2.18 cassandra.timeout=2000 collections.keyspace=Usergrid_Applications collections.keyspace.strategy.options=replication_factor:1 collections.keyspace.strategy.class=org.apache.cassandra.locator.SimpleStrategy collection.stage.transient.timeout=60 hystrix.threadpool.graph_user.coreSize=40 hystrix.threadpool.graph_async.coreSize=40 elasticsearch.embedded=false elasticsearch.cluster_name=elasticsearch elasticsearch.index_prefix=usergrid elasticsearch.hosts=127.0.0.1 elasticsearch.port=9300 elasticsearch.force_refresh=true index.query.limit.default=100 # Max Cassandra connections, applies to both CP and EM cassandra.connections=600 ###################################################### # Minimal Usergrid configuration properties for local Tomcat and Cassandra # cassandra.url=127.0.0.1:9160 cassandra.keyspace.strategy=org.apache.cassandra.locator.SimpleStrategy cassandra.keyspace.strategy.options.replication_factor=1 ###################################################### # Custom mail transport mail.transport.protocol=smtps mail.smtps.host=smtp.gmail.com mail.smtps.port=465 mail.smtps.auth=true mail.smtps.username= mail.smtps.password= mail.smtps.quitwait=false ###################################################### # Admin and test user setup usergrid.sysadmin.login.name=superuser usergrid.sysadmin.login.email=myself@example.com <--- Change this usergrid.sysadmin.login.password=pwHERE <--- Change this usergrid.sysadmin.login.allowed=true usergrid.sysadmin.email=myself@example.com <--- Change this usergrid.sysadmin.approve.users=false usergrid.sysadmin.approve.organizations=false # Base mailer account - default for all outgoing messages usergrid.management.mailer=User <--- Change this usergrid.setup-test-account=true usergrid.test-account.app=test-app usergrid.test-account.organization=test-organization usergrid.test-account.admin-user.username=test usergrid.test-account.admin-user.name=Test User usergrid.test-account.admin-user.email=myself@example.com <---Change this usergrid.test-account.admin-user.password=test ###################################################### # Auto-confirm and sign-up notifications settings usergrid.management.admin_users_require_confirmation=false usergrid.management.admin_users_require_activation=false usergrid.management.organizations_require_activation=false usergrid.management.notify_sysadmin_of_new_organizations=true usergrid.management.notify_sysadmin_of_new_admin_users=true ###################################################### # URLs # Redirect path when request come in for TLD usergrid.redirect_root=http://localhost:8080/status usergrid.view.management.organizations.organization.activate=http://localhost:8080/accounts/welcome usergrid.view.management.organizations.organization.confirm=http://localhost:8080/accounts/welcome usergrid.view.management.users.user.activate=http://localhost:8080/accounts/welcome usergrid.view.management.users.user.confirm=http://localhost:8080/accounts/welcome usergrid.organization.activation.url=http://localhost:8080/management/organizations/%s/activate usergrid.admin.activation.url=http://localhost:8080/management/users/%s/activate usergrid.admin.resetpw.url=http://localhost:8080/management/users/%s/resetpw usergrid.admin.confirmation.url=http://localhost:8080/management/users/%s/confirm usergrid.user.activation.url=http://localhost:8080%s/%s/users/%s/activate usergrid.user.confirmation.url=http://localhost:8080/%s/%s/users/%s/confirm usergrid.user.resetpw.url=http://localhost:8080/%s/%s/users/%s/resetpw ``` [^1]: You can start up cassandra and elasticsearch in any order but for the sake of ordered lists I put Cassandra first.