This install guide is for yum, tested with CentOS 6.2. Installation also confirmed working with Ubuntu via the appropriate apt-get packages.

Install Database

Install PostgreSQL 8.4 with contrib modules:

sudo yum install postgresql postgresql-server postgresql-contrib

(Optional) Change the Postgres data directory by creating/editing the file /etc/sysconfig/pgsql/postgresql to contain this:

PGDATA=/opt/pgsql/data
PGLOG=/opt/pgsql/pgstartup.log

Install PostGIS 1.5

#TODO: make this nicer
cd /etc/pki/rpm-gpg/
sudo wget http://elgis.argeo.org/RPM-GPG-KEY-ELGIS

sudo yum install postgis

Create the Edgar database:

sudo -u postgres createdb edgar

Find the Postgres contrib directory. It is /usr/share/pgsql/contrib/ on CentOS. Now install all the requried contrib modules:

cd /usr/share/pgsql/contrib/
sudo -u postgres createlang plpgsql edgar
sudo -u postgres psql -d edgar -f postgis.sql
sudo -u postgres psql -d edgar -f spatial_ref_sys.sql
sudo -u postgres psql -d edgar -f pg_trgm.sql

Create the two database roles (a.k.a users) inside the psql console:

sudo -u postgres psql edgar

create role edgar_backend with login password 'make_up_password_here';
create role edgar_frontend with login password 'make_up_password_here';

Fetch a copy of Edgar. In this case, we will fetch it to ~/Edgar:

sudo yum install git
cd ~
git clone "git://github.com/jcu-eresearch/Edgar.git"

Initialise the database:

sudo -u postgres psql edgar < ~/Edgar/database_structure.sql

Edit the pg\_hba.conf file in the Postgresql data directory. The default data directory is /var/lib/pgsql/data/ on CentOS. The following config will allow access from localhost only.

local  edgar  edgar_frontend                md5
local  edgar  edgar_backend                 md5
host   edgar  edgar_frontend  127.0.0.1/32  md5
host   edgar  edgar_backend   127.0.0.1/32  md5

Restart Postgres:

sudo service postgresql restart

Add to auto-start processes:

sudo chkconfig --add  postgresql
sudo chkconfig --level 345 postgresql on

Setup ALA Importer

This assumes you have a copy of Edgar in the directory ~/Edgar, and have a database named edgar.

Install packges required by importer Python modules:

sudo yum install postgresql-devel python-devel

Run buildout in the importing directory with Python 2.6:

cd ~/Edgar/importing/
python2.6 setup.py
bin/buildout

Add the ALA row to the sources table:

sudo -u postgres psql edgar
insert into sources(name) values('ALA');

Copy the example config and change the settings:

cp config.example.json config.json
vim config.json

Run the importer:

bin/ala_db_update config.json

The importer should be run often (e.g. weekly) to fetch new data from ALA. The easiest way to do this is to set up a cron job. See the file importing/bin/ala_cron.sh for an example cron script.

Install Web Application

Install apache:

sudo yum install httpd mod_ssl

Start apache:

sudo /etc/init.d/httpd start

Install php:

sudo yum install php

Install php postgresql driver:

sudo yum install php-pgsql

Install php xml support (needed for cakephp):

sudo yum install php-xml

Install git:

sudo yum install git

Change dir to www (not html dir):

cd /var/www

Clone the git repo (read only):

sudo git clone "git://github.com/jcu-eresearch/Edgar.git"

Update the tmp directory of the web app so that cake can read and write to the tmp dir

sudo chmod ugo+wrX -R /var/www/Edgar/webapplication/app/tmp/

Change dir to html, and create sym link to webapplication component of git repo in www dir

cd /var/www/html
sudo ln -s /var/www/Edgar/webapplication/ Edgar

Update httpd conf to allow cakephp to perform re-writes

Add the following to the httpd.conf (/etc/httpd/conf/httpd.conf). This should be added after the default directory settings (<Directory “/var/www/html”>…</Directory>).

<Directory "/var/www/html/Edgar">
    Options Indexes FollowSymLinks MultiViews
    AllowOverride All
    Order allow,deny
    Allow from all
</Directory>

Update the database config settings:

sudo cp /var/www/Edgar/webapplication/app/Config/database.php.default /var/www/Edgar/webapplication/app/Config/database.php
sudo vim /var/www/Edgar/webapplication/app/Config/database.php

Restart apache:

sudo /etc/init.d/httpd restart

Add apache to the on boot services:

sudo chkconfig --add httpd
sudo chkconfig --level 345 httpd on

Confirm that it’s added by looking at:

sudo chkconfig --list

You may need to open port 80 of your firewall. You can check your firewall settings via:

sudo iptables -L -v

You can add the rule to open port 80 by doing the following. Note: Don’t follow this part blindly, you should have at least a basic understanding of firewalls before you do this.

sudo iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
sudo service iptables save

At this point, everything should be working. Go to http://localhost/Edgar and enjoy

Setup Map Server

Install Map Server and PHP Map Script

sudo yum install mapserver php-mapserver

Note: Enterprise Linux GIS (ELGIS) are responsible for maintaining the CentOS GIS packages for map server. At the time of writing this section (20th Sept, 2012), they are experiencing technical difficulties with their servers. They expect this issue to be resolved within several days. I will finish this section once the packages are available again. Updates regarding the ELGIS issues are available here: https://twitter.com/EnterpriseLxGIS

Setup Background Modelling and Vetting Processing

Install supervisord

Install python:

sudo yum install python-devel

Install python easy_install (bundled with setuptools):

sudo yum install python-setuptools

Install supervisord:

sudo easy_install supervisor

Supervisor is used to manage our background running processes. It provides logging capabilities, and ensures that our processes are kept alive. Supervisor is also used to control the number of concurrent models we run.

Install supervisord (full details available at: http://supervisord.org/installing.html):

easy_install supervisor

Fetch a copy of Edgar. In this case, we will fetch it to ~/Edgar:

sudo yum install git
cd ~
git clone "git://github.com/jcu-eresearch/Edgar.git"

Link the supervisord config file from the Git repo to the appropriate config location for supervisord:

cd /etc/
sudo ln -s ~/Edgar/modelling/supervisord/supervisord.conf supervisord.conf

Update your config file as necessary:

sudo vim /etc/supervisord.conf

You will need to, at a minimum, update file paths for the user, command, environment and directory settings of the various programs.

Make the log directory for supervisord (path specified in config file):

sudo mkdir -p /var/log/supervisord

Add supervisord to the services:

sudo ln -s ~/Edgar/modelling/supervisord/supervisord_init_service.sh /etc/init.d/supervisord
sudo chkconfig --add supervisord
sudo chkconfig --level 345 supervisord on

You may need to update the supervisord_init_service.sh script based on your system OS

Start the supervisord service:

sudo service supervisord start

Setup Modelling

The following is a general description of how to setup the modelling to run on a local machine. The modelling process may need to be customized to your specific needs.

If you haven’t already done so, fetch a copy of edgar, and put it in your home directory ~/Edgar:

sudo yum install git
cd ~
git clone "git://github.com/jcu-eresearch/Edgar.git"

The modelling process makes use of the existing importing db access code. This means that it is necessary to run the setup code for the importing:

cd ~/Edgar/importing
sudo yum install python-devel
sudo yum install postgresql-devel
sudo python setup.py install
python bootstrap.py

Copy the example importing config and change the settings:

cp ~/Edgar/importing/config.example.json ~/Edgar/importing/config.json
vim ~/Edgar/importing/config.json

Note: You may need need to update the settings of your DB to permit the modelling machine to access the DB:

sudo vim /opt/pgsql/data/pg_hba.conf

and add a line like:

host   edgar  edgar_backend   X.X.X.X/32  md5

Now install libraries specific to modelling:

sudo yum install python-devel
sudo easy_install supervisor
sudo easy_install paramiko

Modify the hpc config file to reflect the location of your web server:

vim ~/Edgar/modelling/src/hpc_config.py

Change the line:

cakeAppBaseURL = "http://tdh-tools-2.hpc.jcu.edu.au/Edgar/webapplication"

to accurately reflect the location of your web server.

e.g.:

cakeAppBaseURL = "http://climatebird2.qern.qcif.edu.au/Edgar"

Note: You can ignore the ssh references, these are only used for remote modelling. This guide is for local modelling.

Install R:

sudo rpm -Uvh http://download.fedoraproject.org/pub/epel/6/i386/epel-release-6-7.noarch.rpm
sudo yum install R

Install R Libraries:

sudo R
install.packages(c("SDMTools"))

(Note, the second line is run at the R prompt)

Install java:

sudo yum install java

Install zip:

sudo yum install zip

Change the environment settings to reflect the location of the appropriate maxent and bioclim files:

vim ~/Edgar/modelling/config/environment.cfg

At a minimum, you’ll likely need to update:

  • MAXENT
  • TRAINCLIMATE
  • PROJECTCLIMATE
  • TDH_DIR

You can now start the modelling process by running:

~/Edgar/modelling/bin/local_modeld.py

Once you’ve confirmed that your modelling process runs as expected, you should update your supervisord config to run your modelling scripts for you:

sudo vim /etc/supervisord.conf

Setup Vetting