http://git-wip-us.apache.org/repos/asf/usergrid/blob/77ad91a6/docs/installation/deployment-guide.md
----------------------------------------------------------------------
diff --git a/docs/installation/deployment-guide.md
b/docs/installation/deployment-guide.md
index 560b6eb..3b1b89a 100644
--- a/docs/installation/deployment-guide.md
+++ b/docs/installation/deployment-guide.md
@@ -1,37 +1,28 @@
# Usergrid 2.1.0 Deployment Guide
-This document explains how to deploy the Usergrid v2.1.0 Backend-as-a-Service
(BaaS),
-which comprises the Usergrid Stack, a Java web application, and the Usergrid
Portal,
-which is an HTML5/JavaScript application.
+This document explains how to deploy the Usergrid v2.1.0 Backend-as-a-Service
(BaaS), which comprises the Usergrid Stack, a Java web application, and the
Usergrid Portal, which is an HTML5/JavaScript application.
## Intended audience
-You should be able to follow this guide if you are a developer, system admin
or
-operations person with some knowledge of Java application deployment and good
-knowledge of Linux and the bash shell.
+You should be able to follow this guide if you are a developer, system admin
or operations person with some knowledge of Java application deployment and
good knowledge of Linux and the bash shell.
-This guide is a starting point and does NOT explain everything you need to
know to
-run Usergrid at-scale and in production. To do that you will need some
additional
-skills and knowledge around running, monitoring and trouble-shooting Tomcat
-applications, multi-node Cassandra & ElasticSearch clusters and more.
+This guide is a starting point and does NOT explain everything you need to
know to run Usergrid at-scale and in production. To do that you will need some
additional skills and knowledge around running, monitoring and trouble-shooting
Tomcat applications, multi-node Cassandra & ElasticSearch clusters and more.
## Prerequsites
-Below are the software requirements for Usergrid 2.1.0 Stack and Portal.
-You can install them all on one computer for development purposes, and for
-deployment you can deploy them separately using clustering.
+Below are the software requirements for Usergrid 2.1.0 Stack and Portal. You
can install them all on one computer for development purposes, and for
deployment you can deploy them separately using clustering.
* Linux or a UNIX-like system (Usergrid may run on Windows, but we haven't
tried it)
* [Java SE 8
JDK](http://www.oracle.com/technetwork/java/javase/downloads/index.html)
- * [Apache Tomcat 7+](https://tomcat.apache.org/download-70.cgi)
+ * [Apache Tomcat 7](https://tomcat.apache.org/download-70.cgi)
- * [Apache Cassandra 1.2.1+](http://cassandra.apache.org/download/)
+ * [Apache Cassandra 1.2.x or 2.x](http://cassandra.apache.org/download/)
- * [ElasticSearch 1.4+](https://www.elastic.co/downloads/elasticsearch)
+ * [ElasticSearch 1.4.x or
1.7.x](https://www.elastic.co/downloads/elasticsearch)
Optional but helpful:
@@ -76,26 +67,24 @@ The files that you need for deploying Usergrid Stack and
Portal are `ROOT.war` a
## Deploying the Usergrid Stack
-The Usergrid Stack is a Java EE web application that runs on Tomcat,
-uses the Cassandra database for storage and the ElasticSearch search-engine
for queries.
+The Usergrid Stack is a Java EE web application that runs on Tomcat, uses the
Cassandra database for storage and the ElasticSearch search-engine for queries.
-Before installing the Usegrid Stack into Tomcat, you'll start by setting up
the
-required database and search engine nodes.
+Before installing the Usegrid Stack into Tomcat, you'll start by setting up
the required database and search engine nodes.
### Stack STEP #1: Setup Cassandra
-Usergrid needs access to at least one Apache Cassandra node. You can setup a
single node of
-Cassandra on your computer for development and testing. For production
deployment,
-a three or more node cluster is recommended.
+Usergrid needs access to at least one Apache Cassandra node. You can setup a
single node of Cassandra on your computer for development and testing. For
production deployment, a three or more node cluster is recommended.
-__Use the right Java.__ Cassandra requires Java and we recommend that you use
the same version of Java
-for Cassandra as you use to run Tomcat and ElasticSearch.
+__Use the right Java.__ Cassandra requires Java and we recommend that you use
the same version of Java for Cassandra as you use to run Tomcat and
ElasticSearch.
-__Refer to the__ [Apache Cassandra
documentation](http://wiki.apache.org/cassandra/GettingStarted)
-__for instructions on how to install Cassandra__. The [Datastax documentation
for Cassandra
1.2](http://docs.datastax.com/en/cassandra/1.2/cassandra/features/featuresTOC.html)
is also helpful.
-Once you are up and running make a note of these things:
+Usergrid uses Cassandra's Thrift protocol and on Cassandra 2.x releases you
MUST enable Thrift by setting `start_rpc` in your `cassandra.yaml` file:
+ # Whether to start the thrift rpc server.
+ start_rpc: true
+
+__Refer to the__ [Apache Cassandra
documentation](http://wiki.apache.org/cassandra/GettingStarted) __for
instructions on how to install Cassandra__. The [Datastax documentation for
Cassandra
1.2](http://docs.datastax.com/en/cassandra/1.2/cassandra/features/featuresTOC.html)
is also helpful. Once you are up and running make a note of these things:
+
* The name of the Cassandra cluster
* Hostname or IP address of each Cassandra node
* Port number used for Cassandra RPC (the default is 9160)
@@ -104,23 +93,18 @@ Once you are up and running make a note of these things:
### Stack STEP #2: Setup ElasticSearch
-Usergrid also needs access to at least one ElasticSearch node. As with
Cassandra,
-you can setup single ElasticSearch node on your computer, and you should run
-a cluster in production.
+Usergrid also needs access to at least one ElasticSearch node. As with
Cassandra, you can setup single ElasticSearch node on your computer, and you
should run a cluster in production.
-__Use the right Java__. ElasticSearch requires Java and you *must* ensure that
you use the
-same version of Java for ElasticSearch as you do for running Tomcat.
+__Use the right Java__. ElasticSearch requires Java and you *must* ensure that
you use the same version of Java for ElasticSearch as you do for running Tomcat.
__Refer to the__
-[ElasticSearch 1.4
documentation](https://www.elastic.co/guide/en/elasticsearch/reference/1.4/index.html)
-__for instructions on how to install__. Once you are up and running make a
note of these things:
+[ElasticSearch 1.4
documentation](https://www.elastic.co/guide/en/elasticsearch/reference/1.4/index.html)
__for instructions on how to install__. Once you are up and running make a
note of these things:
* The name of the ElasticSearch cluster
* Hostname or IP address of each ElasticSearch node
* Port number used for ElasticSearch protocol (the default is 9200)
-__Running a single-node?__ If you are running a single-node ElasticSearch
cluster then
-you should set the number of replicas to zero, otherwise the cluster will
report status YELLOW.
+__Running a single-node?__ If you are running a single-node ElasticSearch
cluster then you should set the number of replicas to zero, otherwise the
cluster will report status YELLOW.
curl -XPUT 'localhost:9200/_settings' -d '{"index" : {
"number_of_replicas" : 0}}'
@@ -136,13 +120,9 @@ __Refer to the__ [Apache Tomcat
7](https://tomcat.apache.org/tomcat-7.0-doc/setu
### Stack STEP #4: Configure Usergrid Stack & Logging
-You must create a Usergrid properties file called
`usergrid-deployment.properties`.
-The properties in this file tell Usergrid how to communicate with Cassandra and
-ElasticSearch, and how to form URLs using the hostname you wish to use for
Usegrid.
-There are many properties that you can set to configure Usergrid.
+You must create a Usergrid properties file called
`usergrid-deployment.properties`. The properties in this file tell Usergrid how
to communicate with Cassandra and ElasticSearch, and how to form URLs using the
hostname you wish to use for Usegrid. There are many properties that you can
set to configure Usergrid.
-Once you have created your Usergrid properties file, place it in the Tomcat
lib directory.
-On a Linux system, that directory is probably located at
`/usr/share/tomcat7/lib`.
+Once you have created your Usergrid properties file, place it in the Tomcat
lib directory. On a Linux system, that directory is probably located at
`/usr/share/tomcat7/lib`.
__What goes in a properties file?__
@@ -155,8 +135,7 @@ You should review the defaults in the above file. To get
you started, let's look
#### Example Usergrid Stack Properties File
-Below is an minimal example Usergrid properties file with the parts you need
to change indicated like
-shell variables, e.g. `${USERGRID_CLUSTER_NAME}`.
+Below is an minimal example Usergrid properties file with the parts you need
to change indicated like shell variables, e.g. `${USERGRID_CLUSTER_NAME}`.
Example 1: usergrid-deployment.properties file
@@ -279,8 +258,7 @@ Make sure you set all of the above properties when you edit
this example for you
#### Configure Logging
-Usegrid includes the Apache Log4j logging system and you can control the
levels of logs for each
-Usergrid package and even down to the class level by providing your own
`log4j.properties` file.
+Usegrid includes the Apache Log4j logging system and you can control the
levels of logs for each Usergrid package and even down to the class level by
providing your own `log4j.properties` file.
To configure logging you need to:
@@ -290,9 +268,7 @@ To configure logging you need to:
##### Example Logging Configuration
-The Log4j properties file below is a good starting point for Usergrid. It
configures `ERROR` level
-logging for the 3rd party libraries that Usergrid depends on, and INFO level
logging for Usergrid.
-Plus, it configures some noisy parts of Usergrid to be quiet.
+The Log4j properties file below is a good starting point for Usergrid. It
configures `ERROR` level logging for the 3rd party libraries that Usergrid
depends on, and INFO level logging for Usergrid. Plus, it configures some noisy
parts of Usergrid to be quiet.
Example 2: log4.properties file
@@ -313,26 +289,18 @@ Example 2: log4.properties file
##### Add Logging Configuration to Tomcat
-You can configure Tomcat to use your Log4j properties file but adding a system
property to Tomcat
-named `log4j.configuration` which must be set to a `file:/` URL that points to
your
-properties file. One way to add the above property to the Tomcat start-up is
to add a line to a
-Tomcat `setenv.sh` script in Tomcat's bin directory. If that file does not
exist, then create it.
+You can configure Tomcat to use your Log4j properties file but adding a system
property to Tomcat named `log4j.configuration` which must be set to a `file:/`
URL that points to your properties file. One way to add the above property to
the Tomcat start-up is to add a line to a Tomcat `setenv.sh` script in Tomcat's
bin directory. If that file does not exist, then create it.
-For example, if your property file is in
`/usr/share/tomcat7/lib/log4j.properties`, then you
-would add the following line to `setenv.sh`:
+For example, if your property file is in
`/usr/share/tomcat7/lib/log4j.properties`, then you would add the following
line to `setenv.sh`:
export
JAVA_OPTS="-Dlog4j.configuration=file:///usr/share/tomcat7/lib/log4j.properties"
-If the file already exists and already sets the JAVA_OPTS variable, then
you'll have to
-add your `-D` option to ones already there. Also note, you might want set
other `-D` and `-X`
-options in that setenv file, e.g. Java heap size.
+If the file already exists and already sets the JAVA_OPTS variable, then
you'll have to add your `-D` option to ones already there. Also note, you might
want set other `-D` and `-X` options in that setenv file, e.g. Java heap size.
### Stack STEP #5: Deploy ROOT.war to Tomcat
-The next step is to deploy the Usergrid Stack software to Tomcat. There are a
variey of ways
-of doing this and the simplest is probably to place the Usergrid Stack
`ROOT.war` file into
-the Tomcat `webapps` directory, then restart Tomcat.
+The next step is to deploy the Usergrid Stack software to Tomcat. There are a
variey of ways of doing this and the simplest is probably to place the Usergrid
Stack `ROOT.war` file into the Tomcat `webapps` directory, then restart Tomcat.
__For example, on Linux...__
@@ -360,17 +328,13 @@ You can watch the Tomcat log in
`/var/log/tomcat7/catalina.out` for errors:
__Does it work?__
-Check to see if Usergrid is up and running by calling the status end-point.
-If your web browser is running on the same computer as Tomcat (and Tomcat is
on port 8080),
-then you can browse to
[http://localhost:8080/status](http://localhost:8080/status)
-to view the Usergrid status page.
+Check to see if Usergrid is up and running by calling the status end-point. If
your web browser is running on the same computer as Tomcat (and Tomcat is on
port 8080), then you can browse to
[http://localhost:8080/status](http://localhost:8080/status) to view the
Usergrid status page.
Or you can use curl:
curl http://localhost:8080/status
-If you get a JSON file of status data, then you're ready to move to the next
step.
-You should see a response that begins like this:
+If you get a JSON file of status data, then you're ready to move to the next
step. You should see a response that begins like this:
{
"timestamp" : 1454090178953,
@@ -395,14 +359,9 @@ You should see a response that begins like this:
Next, you must initialize the Usergrid database, index and query systems.
-To do this you must issue a series of HTTP operations using the superuser
credentials.
-You can only do this if Usergrid is configured to allow superused login via
-this property `usergrid.sysadmin.login.allowed=true` and if you used the
-above example properties file, it is allowed.
+To do this you must issue a series of HTTP operations using the superuser
credentials. You can only do this if Usergrid is configured to allow superused
login via this property `usergrid.sysadmin.login.allowed=true` and if you used
the above example properties file, it is allowed.
-The three operation you must perform are expressed by the curl commands below
and,
-of course, you will have ot change the password 'test' to match the superuser
password
-that you set in your Usergrid properties file.
+The three operation you must perform are expressed by the curl commands below
and, of course, you will have ot change the password 'test' to match the
superuser password that you set in your Usergrid properties file.
curl -X PUT http://localhost:8080/system/database/setup -u
superuser:test
curl -X PUT http://localhost:8080/system/database/bootstrap -u
superuser:test
@@ -417,19 +376,16 @@ When you issue each of those curl commands, you should
see a success message lik
"duration" : 374
}
-If you don't see a success message, then refer to the Tomcat logs for error
message and
-seek help from the [Usergrid community](http://usergrid.apache.org/community).
+If you don't see a success message, then refer to the Tomcat logs for error
message and seek help from the [Usergrid
community](http://usergrid.apache.org/community).
Now that you've gotten Usergrid up and running, you're ready to deploy the
Usergrid Portal.
## Deploying the Usergrid Portal
-The Usergrid Portal is an HTML5/JavaScript application, a bunch of static
files that
-can be deployed to any web server, e.g. Apache HTTPD or Tomcat.
+The Usergrid Portal is an HTML5/JavaScript application, a bunch of static
files that can be deployed to any web server, e.g. Apache HTTPD or Tomcat.
-To deploy the Portal to a web server, you will un-tar the
`usergrid-portal.tar` file into
-directory that serves as the root directory of your web pages.
+To deploy the Portal to a web server, you will un-tar the
`usergrid-portal.tar` file into directory that serves as the root directory of
your web pages.
For example, with Tomcat on Linux you might do something like this:
@@ -437,14 +393,11 @@ For example, with Tomcat on Linux you might do something
like this:
cd /usr/share/tomcat7/webapps
tar xf usergrid-portal.tar
-Then you will probably want to rename the Portal directory to something that
will work
-well in a URL. For example, if you want your Portal to exist at the path
`/portal` then:
+Then you will probably want to rename the Portal directory to something that
will work well in a URL. For example, if you want your Portal to exist at the
path `/portal` then:
mv usergrid-portal.2.0.18 portal
-Once you have done that there is one more step. You need to configure the
portal so that
-it can find the Usergrid stack. You do that by editing the `portal/config.js`
and changing
-this line:
+Once you have done that there is one more step. You need to configure the
portal so that it can find the Usergrid stack. You do that by editing the
`portal/config.js` and changing this line:
Usergrid.overrideUrl = 'http://localhost:8080/';