Hyrax GitHub Source Build: Difference between revisions

From OPeNDAP Documentation
⧼opendap2-jumptonavigation⧽
Line 74: Line 74:


== Build the Hyrax OLFS web application ==
== Build the Hyrax OLFS web application ==
The OLFS is a java servlet built using ant.
The OLFS is a java servlet built using ant. The OLFS is a java servlet web application and runs with Tomcat, Glassfish, etc. You need a copy of Tomcat, but our servlet does not work with the RPM version of Tomcat. Get [http://tomcat.apache.org/download-70.cgi Tomcat 7 from Apache]. Note that if you built the dependencies from source using the ''hyrac-dependencies-1.10.tar'' then there is a copy of Tomcat in the ''hyrax-dependecies/extra_downloads directory. You can unpack the Tomcat tar file in ''$prefix'' and I'll assume you did that in the following instructions.
 
;tar -xzf apache-tomcat-7.0.57-tar.gz: Expand the Tomcat tar ball
;git clone https://github.com/opendap/olfs: Get the OLFS source code
;cd olfs: change directory to the OLFS source
;ant server: Build it
;cp build/dist/opendap.war apacje-tomcat-7.0.57/webapps: Copy the opendap web archive to the tomcat webapps direcotry.
;./apache-tomcat-7.0.57/bin/startup.sh: Start Tomcat
 
== Test the server ==

Revision as of 05:56, 23 December 2014

This describes how to get and build Hyrax from our GitHub repositories. Hyrax is a data server that implements the DAP2 and DAP4 protocols, works with a number of different data formats and supports a wide variety of customization options from tailoring the look of the server's web pages to complex server-side processing operations. This page describes how to build the server's source code. If you're working on a Linux or OS/X computer, the process is simple; we do not support building the server on Windows operating systems.

To build and install the server, you need to perform three steps:

  1. Set up the computer to build source code (Install a Java compiler; install a C/C++ compiler; add some other tools)
  2. Build the C++ DAP library (libdap) and the Hyrax BES daemon
  3. Build the Hyrax OLFS web application

Quick links if you already know the process:

In the following, we describe the build process for CentOS because the one for OS/X is so similar. We note the differences where they are significant.

Make a Place to Build the Server

You need to make a new directory to build the server and set the environment variable prefix to be that directory name. Then export $prefix and add $prefix/bin to $PATH. I'll use hyrax-git for the new directory and assume you're using bash.

  1. mkdir hyrax-git
  2. cd hyrax-git
  3. export prefix=`pwd`
  4. export PATH=$prefix/bin:$PATH

Set up a CentOS machine to build code

Note that I don't like clicking around to different pages to follow simple directions, so what follows is a short version of the ContOS 6 configuration information we've compiled for people that help us by building RPM packages for Hyrax. The complete instructions are in Configure CentOS and describe how to to set up a CentOS 6 machine to build software. What follows is the condensed version:

Load a basic software development environment
yum install java-1.7.0-openjdk java-1.7.0-openjdk-devel ant git gcc-c++ flex bison openssl-devel libuuid-devel readline-devel zlib-devel libjpeg-devel libxml2-devel curl-devel emacs
Get GNU autotools
download autoconf autoconf-2.69.tar.gz, automake automake-1.14.1.tar.gz and libtool libtool-2.4.2.tar.gz and build them (./configure; make; sudo make install - this should take no more than three minutes).

Choice point: You either need to get and build the Hyrax dependencies from source (see Compile the Hyrax dependencies) or install EPEL for CentOS and then use yum to install them, with the caveat that as of Hyrax 1.10, EPEL does not have a recent enough version of GDAL or Gridfields to build our code, so those parts of Hyrax won't build if you got the EPEL route. Neither way is too hard.

EPEL
Get epel-release-6-8.noarch.rpm and install it using sudo yum install epel-release-6-8.noarch.rpm. Then install packages needed to read various file formats: yum install netcdf-devel hdf-devel hdf5-devel libicu-devel cfitsio-devel cppunit-devel rpm-devel rpm-build
or, Compile the dependencies
See the instructions below...

Compile the Hyrax dependencies

Note: If you installed packages for netcdf, etc., using EPEL as decribed above, skip this step.

Get the tar ball hyrax-dependencies and build it. Unlike many source packages, there is no need to run a configure script, just make will do. However, the Makefile in this package expects $prefix to be set as described above. It will put all of the Hyrax server dependencies in a subdirectory called deps. Get the latest tarball from http://www.opendap.org/pub/source/, currently hyrax-dependencies-1.10.tar

  1. (make sure you're in the directory set to $prefix)
  2. wget http://www.opendap.org/pub/source/hyrax-dependencies-1.10.tar
  3. tar -xzf hyrax-dependencies-1.10.tar
  4. cd hyrax-dependencies
  5. make

Build libdap and the Hyrax BES daemon

Get and build libdap

Build, test and install libdap into $prefix:

git clone https://github.com/opendap/libdap
autoreconf -fiv
./configure --prefix=$prefix --enable-developer
make -j9
make check -j9
make install

Get and build the BES and all of the modules shipped with Hyrax

Build, test and install the BES and its modules

git clone https://github.com/opendap/bes
Clone the BES from GitHub
git submodule init
does some init thing
git submodule update
This will clone each of the N modules into the directory modules. There's lots of ways to do this; this is just one. [1]
autoreconf --force --install --verbose
You can use -fiv instead of the long options. These mean, when starting from a freshly cloned repo, run all of the autotools commands and install all of the needed scripts.
./configure --prefix=$prefix --enable-developer --with-dependencies=$prefix/deps
Note that the --with-deps... is not needed if you load the dependencies from RPMs or otherwise have them installed an generally accessible on the build machine.
make -j9
make check -k
Some tests may fail and -k ignores that and keeps make marching along
make install

Test the BES

Start the BES and verify that all of the modules build correctly.

Start the BES
besctl start
Given that $prefix/bin is on your $PATH, this should start the BES. You will not need to be root if you used the --enable-developer switch with configure (as shown above), otherwise you should run sudo besctl start with the caveat that as root $prefix/bin will probably not be n your $PATH.
If there's an error (e.g., you tried to start as a regular user but need to be root), edit bes.conf to be a real user (yourself?) in a real group (use 'groups' to see which groups you are in) and also check that the bes.log file is not owned by root.
Restart.
Now that the BES is running, start the BES testing tool
bescmdln
Send the BES the version command to see if it's running
show version;
Take a quick look at the output. There should be entries for libdap, bes and all of the modules.
Exit the testing tool
exit

Build the Hyrax OLFS web application

The OLFS is a java servlet built using ant. The OLFS is a java servlet web application and runs with Tomcat, Glassfish, etc. You need a copy of Tomcat, but our servlet does not work with the RPM version of Tomcat. Get Tomcat 7 from Apache. Note that if you built the dependencies from source using the hyrac-dependencies-1.10.tar then there is a copy of Tomcat in the hyrax-dependecies/extra_downloads directory. You can unpack the Tomcat tar file in $prefix and I'll assume you did that in the following instructions.

tar -xzf apache-tomcat-7.0.57-tar.gz
Expand the Tomcat tar ball
git clone https://github.com/opendap/olfs
Get the OLFS source code
cd olfs
change directory to the OLFS source
ant server
Build it
cp build/dist/opendap.war apacje-tomcat-7.0.57/webapps
Copy the opendap web archive to the tomcat webapps direcotry.
./apache-tomcat-7.0.57/bin/startup.sh
Start Tomcat

Test the server