Merge branch 'master' of git://git.evergreen-ils.org/OpenSRF
[opensrf-equinox.git] / README
diff --git a/README b/README
index d9f1885..995ad48 100644 (file)
--- a/README
+++ b/README
@@ -20,6 +20,30 @@ follows:
        of installing OpenSRF. You can switch to this account from the *root*
        account by issuing the `su - opensrf` command.
 
+Download and unpack the code
+----------------------------
+
+Issue the following commands as the *user* Linux account.
+
+1. Acquire a stable release tarball from https://evergreen-ils.org/opensrf-downloads/
++
+[source, bash]
+------------------------------------------------------------------------------
+wget https://evergreen-ils.org/downloads/opensrf-OSRFVERSION.tar.gz
+------------------------------------------------------------------------------
++
+[NOTE]
+Developers can find the full source code at the OpenSRF Git repository:
+http://git.evergreen-ils.org/?p=OpenSRF.git
++
+2. Unpack the tarball, and move into that directory:
++
+[source, bash]
+------------------------------------------------------------------------------
+tar -xvf opensrf-OSRFVERSION.tar.gz
+cd opensrf-OSRFVERSION/
+------------------------------------------------------------------------------
+
 Installing prerequisites
 ------------------------
 
@@ -42,9 +66,8 @@ Well-tested values for <osname> include:
 
   * `debian-jessie` for Debian 8.0
   * `debian-wheezy` for Debian 7.0
-  * `debian-squeeze` for Debian 6.0
-  * `ubuntu-precise` for Ubuntu 12.04
   * `ubuntu-trusty` for Ubuntu 14.04
+  * `ubuntu-xenial` for Ubuntu 16.04
   * `fedora` for Fedora 17 and later
 
 Patches and suggestions for improvement from users of these distributions,
@@ -60,7 +83,7 @@ Preamble: Developer instructions
 
 [NOTE]
 Skip this section if you are using an official release tarball downloaded
-from http://evergreen-ils.org/downloads
+from https://evergreen-ils.org/opensrf-downloads/
 
 Developers working directly with the source code from the Git repository,
 rather than an official release tarball, must install some extra packages
@@ -179,13 +202,13 @@ work for OpenSRF.
 1. Stop ejabberd before making any changes to its configuration by issuing the
    following command as the *root* Linux account:
 +
-.(Debian / Ubuntu) Stopping ejabberd
+.(Debian / Ubuntu Trusty) Stopping ejabberd
 [source, bash]
 ---------------------------------------------------------------------------
 /etc/init.d/ejabberd stop
 ---------------------------------------------------------------------------
 +
-.(Fedora) Stopping ejabberd
+.(Fedora / Ubuntu Xenial) Stopping ejabberd
 [source, bash]
 ---------------------------------------------------------------------------
 systemctl stop ejabberd.service
@@ -193,7 +216,7 @@ systemctl stop ejabberd.service
 +
 2. Edit the ejabberd config file.
 +
-(Debian Wheezy / Ubuntu) Ejabberd 2.x.x::
+(Debian Wheezy / Ubuntu Trusty) Ejabberd 2.x.x::
 Open `/etc/ejabberd/ejabberd.cfg` and make the following
 changes:
   a. Define your public and private domains in the `hosts` directive. For
@@ -204,10 +227,9 @@ changes:
 {hosts, ["localhost", "private.localhost", "public.localhost"]}.
 ---------------------------------------------------------------------------
 +
-  b. Change all `max_stanza_size` values to 2000000
-  c. Change all `maxrate` values to 500000
-  d. Increase the `max_user_sessions` value to 10000
-  e. Comment out the `mod_offline` directive
+  b. Change all `maxrate` values to 500000
+  c. Increase the `max_user_sessions` value to 10000
+  d. Comment out the `mod_offline` directive
 +
 (Debian Jessie) Ejabberd 13.x and 14.x::
 Open `/etc/ejabberd/ejabberd.yml` and make the following
@@ -223,7 +245,30 @@ hosts:
   - "public.localhost"
 ---------------------------------------------------------------------------
 +
-  b. Change all `max_stanza_size` values to 2000000
+  b. Change `shaper:` `normal` and `fast` values to 500000
+  c. Increase the `max_user_sessions:` `all:` value to 10000
+  d. Comment out the `mod_offline` directive
++
+-----------------------
+##mod_offline:
+    ##access_max_user_messages: max_user_offline_messages
+-----------------------
++
+(Ubuntu Xenial) Ejabberd 16.x::
+Open `/etc/ejabberd/ejabberd.yml` and make the following
+changes:
+  a. Define your public and private domains in the `hosts` directive. For
+   example:
++
+[source, bash]
+---------------------------------------------------------------------------
+hosts:
+  - "localhost"
+  - "private.localhost"
+  - "public.localhost"
+---------------------------------------------------------------------------
++
+  b. Change `auth_password_format` to plain
   c. Change `shaper:` `normal` and `fast` values to 500000
   d. Increase the `max_user_sessions:` `all:` value to 10000
   e. Comment out the `mod_offline` directive
@@ -235,13 +280,13 @@ hosts:
 +
 3. Restart the ejabberd server to make the changes take effect:
 +
-.(Debian / Ubuntu) Starting ejabberd
+.(Debian / Ubuntu Trusty) Starting ejabberd
 [source, bash]
 ---------------------------------------------------------------------------
 /etc/init.d/ejabberd start
 ---------------------------------------------------------------------------
 +
-.(Fedora) Starting ejabberd
+.(Fedora / Ubuntu Xenial) Starting ejabberd
 [source, bash]
 ---------------------------------------------------------------------------
 systemctl start ejabberd.service
@@ -394,13 +439,13 @@ apxs2 -i -a -c mod_websocket.c
 3. Create the websocket Apache instance (more information about this in 
    `/usr/share/doc/apache2/README.multiple-instances`)
 +
-.(Debian / Ubuntu Precise)
+.(Debian)
 [source, bash]
 ---------------------------------------------------------------------------
 sh /usr/share/doc/apache2.2-common/examples/setup-instance websockets
 ---------------------------------------------------------------------------
 +
-.(Ubuntu Trusty)
+.(Ubuntu Trusty / Xenial)
 [source, bash]
 ---------------------------------------------------------------------------
 sh /usr/share/doc/apache2/examples/setup-instance websockets
@@ -413,17 +458,20 @@ sh /usr/share/doc/apache2/examples/setup-instance websockets
 a2dismod websocket
 ---------------------------------------------------------------------------
 +
-5. Copy into place the config files
+5. Change to the directory into which you unpacked OpenSRF, then copy into
+   place the config files
 +
-.(Debian / Ubuntu Precise)
+.(Debian)
 [source, bash]
 ---------------------------------------------------------------------------
+cd /path/to/opensrf-OSRFVERSION
 cp examples/apache2/websockets/apache2.conf /etc/apache2-websockets/
 ---------------------------------------------------------------------------
 +
-.(Ubuntu Trusty)
+.(Ubuntu Trusty / Xenial)
 [source, bash]
 ---------------------------------------------------------------------------
+cd /path/to/opensrf-OSRFVERSION
 cp examples/apache_24/websockets/apache2.conf /etc/apache2-websockets/
 ---------------------------------------------------------------------------
 +
@@ -467,6 +515,116 @@ export OSRF_WEBSOCKET_MAX_REQUEST_WAIT_TIME=600
 /etc/init.d/apache2-websockets start
 ---------------------------------------------------------------------------
 
+Optional: Using NGINX as a proxy
+--------------------------------
+NGINX can be used to proxy HTTP, HTTPS, and WebSockets traffic. Among other
+reasons, this can be useful for Evergreen setups that want to have both
+HTTPS and secure WebSockets traffic both go through port 443 while using
+two Apache instances (one for the WebSockets gateway and one for the more
+memory-intensive TPAC pages).
+
+The following instructions are a guide for setting this up on Debian
+and Ubuntu systems, but expect general familiarity with various system
+administration and network tasks.  The steps should be run as the *root*
+Linux account, and assume that you already followed the instructions
+for installing WebSockets support.
+
+1. Install NGINX if not already present:
++
+[source, bash]
+---------------------------------------------------------------------------
+apt-get install nginx
+---------------------------------------------------------------------------
++
+2. Configure the main Apache instance to listen on port 7080 for HTTP and
+   port 7443 for HTTPS and ensure that it is not listening on ports 80
+   and 443, then restart Apache.
+3. Copy the example NGINX configuration file into place.
++
+[source, bash]
+---------------------------------------------------------------------------
+cd /path/to/opensrf-OSRFVERSION
+cp examples/nginx/osrf-ws-http-proxy /etc/nginx/sites-available/
+ln -s /etc/nginx/sites-available/osrf-ws-http-proxy /etc/nginx/sites-enabled/osrf-ws-http-proxy
+---------------------------------------------------------------------------
++
+4. Edit `/etc/nginx/sites-available/osrf-ws-http-proxy` to set the location
+   of the SSL certificate and private key.
+5. Start NGINX
++
+[source, bash]
+---------------------------------------------------------------------------
+/etc/init.d/nginx start
+---------------------------------------------------------------------------
++
+6. Edit `<PREFIX>/javascript/opensrf_ws.js` and `<PREFIX>/javascript/opensrf_ws_shared.js`
+   and change
++
+[source, javascript]
+---------------------------------------------------------------------------
+var WEBSOCKET_PORT_SSL = 7682;
+---------------------------------------------------------------------------
++
+to
++
+[source, javascript]
+---------------------------------------------------------------------------
+var WEBSOCKET_PORT_SSL = 443;
+---------------------------------------------------------------------------
+
+Optional: Using HAProxy as a proxy
+----------------------------------
+HAProxy can also be used to proxy HTTP, HTTPS, and WebSockets traffic
+as an alternative to NGINX.
+
+The following instructions are a guide for setting this up on Debian
+and Ubuntu systems, but expect general familiarity with various system
+administration and network tasks.  The steps should be run as the *root*
+Linux account, and assume that you already followed the instructions
+for installing WebSockets support.
+
+1. Install HAProxy if not already present:
++
+[source, bash]
+---------------------------------------------------------------------------
+apt-get install haproxy
+---------------------------------------------------------------------------
++
+2. Configure the main Apache instance to listen on port 7080 for HTTP and
+   port 7443 for HTTPS and ensure that it is not listening on ports 80
+   and 443, then restart Apache.
+3. Append the example HAProxy to `haproxy.cfg`.
++
+[source, bash]
+---------------------------------------------------------------------------
+cd /path/to/opensrf-OSRFVERSION
+cat examples/haproxy/osrf-ws-http-proxy >> /etc/haproxy/haproxy.cfg
+---------------------------------------------------------------------------
++
+4. Edit `/etc/haproxy/haproxy.cfg` to set the location
+   of the PEM file containing the SSL certificate and private key.
+5. Start HAProxy.
++
+[source, bash]
+---------------------------------------------------------------------------
+/etc/init.d/haproxy start
+---------------------------------------------------------------------------
++
+6. Edit `<PREFIX>/javascript/opensrf_ws.js` and `<PREFIX>/javascript/opensrf_ws_shared.js`
+   and change
++
+[source, javascript]
+---------------------------------------------------------------------------
+var WEBSOCKET_PORT_SSL = 7682;
+---------------------------------------------------------------------------
++
+to
++
+[source, javascript]
+---------------------------------------------------------------------------
+var WEBSOCKET_PORT_SSL = 443;
+---------------------------------------------------------------------------
+
 Troubleshooting note for Python users
 -------------------------------------
 
@@ -491,5 +649,5 @@ Getting help
 ------------
 
 Need help installing or using OpenSRF? Join the mailing lists at
-http://evergreen-ils.org/listserv.php or contact us on the Freenode
-IRC network on the #evergreen channel.
+http://evergreen-ils.org/communicate/mailing-lists/ or contact us 
+on the Freenode IRC network on the #evergreen channel.