Skip to content
Snippets Groups Projects
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
prepareEnvironment.sh 36.05 KiB
#! /bin/bash
#############################
# This bootstrap script sets up some build tools and the installs the packages
#   - geoserver
#   - httpd
#   - neo4j
#   - neo4j-spatial
#   - postgresql
#   - postgis
#   - osmosis
# into a centos6 (32bit and 64bit) or centos7 (64bit only) environment.
#
# It can be used in the context of a Vagrantfile to configure a vagrant box and all
# the installations can be configured using the variables in the config.sh file.
# After various installations are performed the installed services are started as well.
############################

if [ "$EUID" -ne "0" ]; then
	echo '- This script must be run as root!'
	exit 1
fi

if [ -f "/var/vagrant_provision" ]; then
	echo '- The box has already been provisioned'
	exit 0
fi

############################
# Variable definitions     #
############################

INSTALL_GEOSERVER=false
INSTALL_HTTPD=true
# install isochrone from vagrant start directory (eclipse project)
INSTALL_ISOCHRONE_LOCAL=false
# install latest isochrone release from nexus repository
INSTALL_ISOCHRONE_RELEASE=true
# install latest isochrone snapshot from nexus repository
INSTALL_ISOCHRONE_SNAPSHOT=true
# install latest isochrone-datamodel from nexus repository
INSTALL_ISOCHRONE_DATAMODEL=true
# install latest isochrone-tools from nexus repository
INSTALL_ISOCHRONE_TOOLS=true
INSTALL_NEO4J=false
INSTALL_NEO4J_SPATIAL=false
INSTALL_POSTGIS=false
INSTALL_POSTGRES=false
INSTALL_POSTGRES_ADMIN=true
INSTALL_PROJECT_PSIPROBE=true
INSTALL_SPATIALITE=false
INSTALL_SPATIALITE_ADMIN=false

SCRIPT="$(readlink -f ${BASH_SOURCE[0]})"
SCRIPT_DIR="$(dirname ${SCRIPT})"
if [ ! -f "${SCRIPT_DIR}/config.sh" ]; then
	# If config.properties is not besides the bash-script (most likely because vagrant uploaded it into the guest)
	# we will try to find it in the shared folder
	SCRIPT_DIR="/vagrant/bootstrap"
fi
if [ ! -f "${SCRIPT_DIR}/config.sh" ]; then
	echo '- No variable declarations found (config.properties file not found)!'
	exit 1;
fi
source "${SCRIPT_DIR}/config.sh"

fn_arg2string TOMCAT_PASSWORD "${1}" "${TOMCAT_PASSWORD}"
fn_arg2boolean IS_LOCAL_TEST_DEPLOY "${2}" "${IS_LOCAL_TEST_DEPLOY}"

######################################
# Configuration (tool versions, ...) #
######################################

#Armadillo from epel is too new for postgis (version 4 instead of 3), so use hard-coded file here
ARMADILLO_FILE="armadillo-3.800.2-1.el6.x86_64.rpm"
ARMADILLO_URL="$CACHE_DIR_REMOTE_ISO/$ARMADILLO_FILE"
GDAL_VERSION="2.0.0"
GDAL_FILE="gdal-$GDAL_VERSION.tar.gz"
GDAL_DOWNLOAD_URL="http://download.osgeo.org/gdal/$GDAL_VERSION/$GDAL_FILE"
GEOSERVER_VERSION="2.7.2"
GEOSERVER_FILE="geoserver-$GEOSERVER_VERSION-war.zip"
GEOSERVER_DOWNLOAD_URL="http://sourceforge.net/projects/geoserver/files/GeoServer/$GEOSERVER_VERSION/$GEOSERVER_FILE"
GEOSERVER_SHELL_VERSION="0.2-SNAPSHOT"
GEOSERVER_SHELL_FILE="gs-shell-$GEOSERVER_SHELL_VERSION-app.zip"
JAVA_VERSION="8u60"
JAVA_FILE_32="jdk-$JAVA_VERSION-linux-i586.rpm"
JAVA_FILE_64="jdk-$JAVA_VERSION-linux-x64.rpm"
JAVA_CRYPTO_FILE="jce_policy-8.zip"
MAVEN_VERSION="3.3.3"
MAVEN_FILE="apache-maven-$MAVEN_VERSION-bin.zip"
MAVEN_DOWNLOAD_URL="http://www.eu.apache.org/dist/maven/maven-3/$MAVEN_VERSION/binaries/$MAVEN_FILE"
NEO4J_DB_USER="neo4j"
NEO4J_VERSION="2.2.5"
NEO4J_FILE="neo4j-community-$NEO4J_VERSION-unix.tar.gz"
NEO4J_DOWNLOAD_URL="http://dist.neo4j.org/$NEO4J_FILE"
NEO4J_SERVICE_NAME="neo4j"
#NEO4J_SPATIAL_GIT_URL="https://github.com/neo4j/spatial.git"
#NEO4J_SPATIAL_VERSION="0.13-neo4j-2.1"
NEO4J_SPATIAL_GIT_URL="https://github.com/RobertBierbauer/spatial.git"
NEO4J_SPATIAL_VERSION="Enhanced-Functionality"
NEXUS_ARTIFACT_NAME_WEB="isochrone-web"
NEXUS_ARTIFACT_NAME_TOOLS="isochrone-tools"
NEXUS_ARTIFACT_NAME_DATAMODEL="isochrone-datamodel"
NEXUS_BASE_URL="http://dbis-nexus.uibk.ac.at"
NEXUS_PUBLIC_REPO="isochrone"
#NEXUS_PUBLIC_REPO="public"
NEXUS_RELEASE_ISOCHRONE_WEB="$NEXUS_BASE_URL/service/local/artifact/maven/content?r=$NEXUS_PUBLIC_REPO&g=at.uibk.dbis&a=$NEXUS_ARTIFACT_NAME_WEB&v=RELEASE&p=war"
#NEXUS_RELEASE_ISOCHRONE_WEB="$NEXUS_BASE_URL/service/local/artifact/maven/content?r=$NEXUS_PUBLIC_REPO&g=at.uibk.dbis&a=$NEXUS_ARTIFACT_NAME_WEB&v=0.5.1&p=war"
NEXUS_SNAPSHOT_ISOCHRONE_WEB="$NEXUS_BASE_URL/service/local/artifact/maven/content?r=$NEXUS_PUBLIC_REPO&g=at.uibk.dbis&a=$NEXUS_ARTIFACT_NAME_WEB&v=LATEST&p=war"
NEXUS_SNAPSHOT_ISOCHRONE_TOOLS="$NEXUS_BASE_URL/service/local/artifact/maven/content?r=$NEXUS_PUBLIC_REPO&g=at.uibk.dbis&a=$NEXUS_ARTIFACT_NAME_TOOLS&v=LATEST&c=all&p=jar"
NEXUS_SNAPSHOT_ISOCHRONE_DATAMODEL="$NEXUS_BASE_URL/service/local/artifact/maven/content?r=$NEXUS_PUBLIC_REPO&g=at.uibk.dbis&a=$NEXUS_ARTIFACT_NAME_DATAMODEL&v=LATEST&c=all&p=jar"
OSMCONVERT_FILE="osmconvert.c"
OSMCONVERT_DOWNLOAD_URL="http://m.m.i24.cc/$OSMCONVERT_FILE"
OSMOSIS_VERSION="0.44.1"
OSMOSIS_FILE="osmosis-$OSMOSIS_VERSION.zip"
OSMOSIS_DOWNLOAD_URL="http://bretth.dev.openstreetmap.org/osmosis-build/$OSMOSIS_FILE"
PHPLITEADMIN_VERSION="v1-9-6"
PHPLITEADMIN_URL="https://bitbucket.org/phpliteadmin/public/downloads/phpLiteAdmin_$PHPLITEADMIN_VERSION.zip"
POSTGIS_GIT_URL="https://github.com/postgis/postgis.git"
POSTGIS_VERSION="auto"      # activate to install from repository
#POSTGIS_VERSION="2.1.5"    # activate to install from source
POSTGRESQL_DATA_DIR="/var/lib/pgsql/data"
POSTGRESQL_SERVICE_NAME="postgresql"
POSTGRESQL_SHORT_VERSION=""
POSTGRESQL_VERSION=""
REPO_ELGIS="none"
REPO_EPEL="none"
REPO_POSTGRESQL="none"        # will be set later (depending on architecture)
REPO_POSTGRESQL_32="auto"
REPO_POSTGRESQL_64="auto"
REPO_RPMFORGE="none"          # will be set later (depending on architecture)
REPO_RPMFORGE_32="auto"
REPO_RPMFORGE_64="auto"
REPO_RPMFORGE_CONFIG="/etc/yum.repos.d/rpmforge.repo"
SELINUX_CONFIG="/etc/selinux/config"
SPATIALITE_VERSION="4.3.0"
SPATIALITE_FILE="libspatialite-$SPATIALITE_VERSION.tar.gz"
SPATIALITE_URL="http://www.gaia-gis.it/gaia-sins/libspatialite-sources/$SPATIALITE_FILE"
TEMPLATE_PSIPROBE_VERSION="2.3.3"
TEMPLATE_PSIPROBE_FILE="probe-$TEMPLATE_PSIPROBE_VERSION.zip"
TEMPLATE_PSIPROBE_DOWNLOAD_URL="https://psi-probe.googlecode.com/files/$TEMPLATE_PSIPROBE_FILE"
TEMPLATE_DIR_ISOCHRONE="/vagrant"
TOMCAT_VERSION="8.0.26"
TOMCAT_FILE="apache-tomcat-$TOMCAT_VERSION.tar.gz"
TOMCAT_DOWNLOAD_URL="http://tweedo.com/mirror/apache/tomcat/tomcat-8/v$TOMCAT_VERSION/bin/$TOMCAT_FILE"
TOMCAT_MEMORY_OPTS="-Xmx2048m -Xms512m"
TOMCAT_NAME="tomcat"
TOMCAT_USER="tomcat"
TOMCAT_WEBAPP_DIR="$DEPLOY_DIR/$TOMCAT_NAME/webapps"
TOPOLOGY_TOLERANCE=0.0005

############################
# OS check & configuration #
############################

IS_64_BIT=false
if [ "x86_64" == $(uname -m) ]; then
	IS_64_BIT=true
fi

DISTRI_FILE="/etc/redhat-release"
if [ ! -f "$DISTRI_FILE" ]; then
	DISTRI_FILE="/etc/issue"
fi

DISTRI_NAME=$(cat "$DISTRI_FILE" | head -n 1)
DISTRI_SUPPORTED=false
DISTRI_TYPE=""
DISTRI=$(printf "$DISTRI_NAME" | cut -d " " -f 1)
if [ "$DISTRI" == "CentOS" ]; then
	POSTGRESQL_SHORT_VERSION="94"
	POSTGRESQL_VERSION="9.4"
	if printf "$DISTRI_NAME" | egrep -q " 6." ; then
		DISTRI_TYPE="CentOS 6"
		REPO_ELGIS="http://elgis.argeo.org/repos/6/elgis-release-6-6_0.noarch.rpm"
		REPO_EPEL="https://dl.fedoraproject.org/pub/epel/epel-release-latest-6.noarch.rpm"
		REPO_POSTGRESQL_32="http://yum.postgresql.org/$POSTGRESQL_VERSION/redhat/rhel-6-i386/pgdg-centos$POSTGRESQL_SHORT_VERSION-$POSTGRESQL_VERSION-1.noarch.rpm"
		REPO_POSTGRESQL_64="http://yum.postgresql.org/$POSTGRESQL_VERSION/redhat/rhel-6-x86_64/pgdg-centos$POSTGRESQL_SHORT_VERSION-$POSTGRESQL_VERSION-1.noarch.rpm"
		REPO_RPMFORGE_32="http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.3-1.el6.rf.i686.rpm"
		REPO_RPMFORGE_64="http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.3-1.el6.rf.x86_64.rpm"
		DISTRI_SUPPORTED=true
	elif printf "$DISTRI_NAME" | egrep -q " 7." ; then
		DISTRI_TYPE="CentOS 7"
		ARMADILLO_FILE="none"
		REPO_EPEL="https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm"
		REPO_POSTGRESQL_64="http://yum.postgresql.org/$POSTGRESQL_VERSION/redhat/rhel-7-x86_64/pgdg-centos$POSTGRESQL_SHORT_VERSION-$POSTGRESQL_VERSION-1.noarch.rpm"
		REPO_RPMFORGE_64="http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.3-1.el7.rf.x86_64.rpm"
		DISTRI_SUPPORTED=$IS_64_BIT
	fi
fi

if ! $DISTRI_SUPPORTED; then
	echo "Unsupported OS. Only CentOS 6 (32bit and 64bit) and CentOS 7 (64bit) are supported!"
	exit 1;
fi

############################
# Calculated configuration #
############################

INSTALL_GDAL=false
INSTALL_JAVA=false
INSTALL_MAVEN=false
INSTALL_OSMCONVERT=false
INSTALL_OSMOSIS=false
INSTALL_TOMCAT=false

if $UPDATE_DATA; then
	INSTALL_GDAL=true
	INSTALL_SPATIALITE=true
	INSTALL_OSMCONVERT=true
	INSTALL_OSMOSIS=true
	INSTALL_ISOCHRONE_DATAMODEL=true
fi

if $IS_LOCAL_TEST_DEPLOY; then
	# Some projects will never be installed when in local deploy mode (like latest release/snapshot from nexus)
	INSTALL_PROJECT_PSIPROBE=false
	INSTALL_ISOCHRONE_LOCAL=false
	INSTALL_ISOCHRONE_RELEASE=false
	INSTALL_ISOCHRONE_SNAPSHOT=false
fi
if $IMPORT_DATA_NEO4J_SPATIAL; then
	INSTALL_ISOCHRONE_TOOLS=true
	INSTALL_NEO4J_SPATIAL=true
	INSTALL_OSMOSIS=true
fi
if $IMPORT_DATA_POSTGIS; then
	INSTALL_POSTGRES=true
	INSTALL_POSTGIS=true
fi
if $IMPORT_DATA_SPATIALITE || $INSTALL_GDAL || $INSTALL_SPATIALITE_ADMIN; then
	INSTALL_SPATIALITE=true
fi
if $INSTALL_POSTGRES_ADMIN || $INSTALL_SPATIALITE_ADMIN; then
	INSTALL_HTTPD=true
fi
if $INSTALL_GEOSERVER || $INSTALL_ISOCHRONE_LOCAL || $INSTALL_ISOCHRONE_RELEASE || $INSTALL_ISOCHRONE_SNAPSHOT || $INSTALL_PROJECT_PSIPROBE; then
	INSTALL_TOMCAT=true
fi
if $INSTALL_NEO4J_SPATIAL; then
	INSTALL_NEO4J=true
	INSTALL_MAVEN=$IMPORT_DATA_NEO4J_SPATIAL
fi
if $INSTALL_ISOCHRONE_TOOLS || $INSTALL_ISOCHRONE_DATAMODEL || $INSTALL_TOMCAT || $INSTALL_GEOSERVER || $INSTALL_NEO4J || $INSTALL_NEO4J_SPATIAL || $IMPORT_DATA_NEO4J_SPATIAL; then
	INSTALL_JAVA=true
fi
if $INSTALL_POSTGRES_ADMIN || $INSTALL_POSTGIS; then
	INSTALL_POSTGRES=true
fi

if [ ! $POSTGRESQL_VERSION == "" ]; then
	POSTGRESQL_DATA_DIR="/var/lib/pgsql/$POSTGRESQL_VERSION/data"
	POSTGRESQL_SERVICE_NAME="postgresql-$POSTGRESQL_VERSION"
fi
POSTGRESQL_GLOB_CONF="$POSTGRESQL_DATA_DIR/postgresql.conf"
POSTGRESQL_HBA_CONF="$POSTGRESQL_DATA_DIR/pg_hba.conf"
POSTGRESQL_PKG_NAME="postgresql$POSTGRESQL_SHORT_VERSION"

if $IS_64_BIT; then
	REPO_POSTGRESQL="$REPO_POSTGRESQL_64"
	REPO_RPMFORGE="$REPO_RPMFORGE_64"
	JAVA_FILE="$JAVA_FILE_64"
else
	REPO_POSTGRESQL="$REPO_POSTGRESQL_32"
	REPO_RPMFORGE="$REPO_RPMFORGE_32"
	JAVA_FILE="$JAVA_FILE_32"
fi

echo "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"
echo " Performing basic system preparations ($(date +%H:%M:%S)):"
echo "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"

START=$(date +%s)

############################
# Basic preparations       #
############################

mkdir -p $DOWNLOAD_DIR
mkdir -p $WORKING_DIR

echo "Deleting outdated log files"
rm -rf $WORKING_DIR/*.log

cd "$WORKING_DIR"

echo "Configuring timezone"
cp /usr/share/zoneinfo/Europe/Vienna /etc/localtime >> $WORKING_DIR/setup_timezone.log 2>&1

echo "Installing utils (gcc, git, ...)"
yum -y install gcc gcc-c++ git gzip iptables-services nano nmap sed tar unzip wget zip >> $WORKING_DIR/install_utils.log 2>&1

############################
# Security preparations    #
############################

echo "Stopping Firewall and SELinux"
if [ "$DISTRI_TYPE" == "CentOS 6" ]; then
	fn_service_stop "iptables"
	fn_service_stop "ip6tables"
else
	fn_service_stop "firewalld"
fi

if [ $(getenforce) == "Enforcing" ]; then
	setenforce 0 >> $WORKING_DIR/stop_selinux.log 2>&1
fi
sed -i 's/SELINUX=enabled/SELINUX=disabled/' $SELINUX_CONFIG
sed -i 's/SELINUX=enforcing/SELINUX=permissive/' $SELINUX_CONFIG

############################
# Repository preparations  #
############################

if [ ! $REPO_ELGIS == "none" ]; then
	# Postgresql 9.4 needs never version of gdal which is not part of epel yet (so we install elgis repo)
	if [ $POSTGRESQL_SHORT_VERSION \> "93" ]; then
		echo "Installing elgis repository"
		fn_download $DOWNLOAD_DIR/elgis-repo.rpm $REPO_ELGIS
		yum -y localinstall $DOWNLOAD_DIR/elgis-repo.rpm >> $WORKING_DIR/install_elgis_repo.log 2>&1
		echo "  - enabled"
	fi
fi

if [ ! $REPO_EPEL == "none" ]; then
	# Epel Repository is needed for dependencies (gdal!) of postgresql/postgis
	echo "Installing epel repository"
	fn_download $DOWNLOAD_DIR/epel-repo.rpm $REPO_EPEL
	yum -y localinstall $DOWNLOAD_DIR/epel-repo.rpm >> $WORKING_DIR/install_epel_repo.log 2>&1
	echo "  - enabled"
fi

if $INSTALL_POSTGRES; then
	if [ "$DISTRI" == "CentOS" ]; then
		REPO_CONFIG="/etc/yum.repos.d/CentOS-Base.repo"
		sed -i 's/\[base\]/\[base\]\nexclude=postgresql\*/' $REPO_CONFIG
		sed -i 's/\[updates\]/\[updates\]\nexclude=postgresql\*/' $REPO_CONFIG
	fi

	echo "Installing $POSTGRESQL_SERVICE_NAME repository"
	fn_download $DOWNLOAD_DIR/postgresql-repo.rpm $REPO_POSTGRESQL
	yum -y localinstall $DOWNLOAD_DIR/postgresql-repo.rpm >> $WORKING_DIR/install_postgresql_repo.log 2>&1
	echo "  - enabled"
fi

# RpmForge is deactivated by default and has to be explicitly activated when using yum
echo "Installing rpmForge repository"
fn_download_newer $DOWNLOAD_DIR/rpmforge-repo.rpm $REPO_RPMFORGE
yum -y localinstall $DOWNLOAD_DIR/rpmforge-repo.rpm >> $WORKING_DIR/install_rpmforge_repo.log 2>&1
echo "  - disabled"
sed -i 's/enabled = 1/enabled = 0/' $REPO_RPMFORGE_CONFIG

############################
# Starting bootstrap       #
############################

echo "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"
echo " Bootstrapping the VM ($(date +%H:%M:%S)):"
echo "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"
echo "Operating system $DISTRI_NAME"
echo "  - osType: $DISTRI_TYPE"
if $IS_LOCAL_TEST_DEPLOY; then echo "Starting in local test deploy mode"; fi
echo "Installing software:"
if $INSTALL_HTTPD; then echo "  - apache webserver"; fi
if $INSTALL_MAVEN; then echo "  - apache maven $MAVEN_VERSION"; fi
if $INSTALL_JAVA; then echo "  - java $JAVA_VERSION"; fi
if $INSTALL_NEO4J; then echo "  - neo4j $NEO4J_VERSION"; fi
if $INSTALL_NEO4J_SPATIAL; then echo "  - neo4j-spatial $NEO4J_SPATIAL_VERSION"; fi
if $INSTALL_POSTGRES; then echo "  - postgresql $POSTGRESQL_VERSION"; fi
if $INSTALL_POSTGIS; then
	if [ "$POSTGIS_VERSION" == "auto" ]; then
		echo "  - postgis2"
	else
		echo "  - postgis $POSTGIS_VERSION"
	fi
fi
if $INSTALL_SPATIALITE; then echo "  - spatialite $SPATIALITE_VERSION"; fi
if $INSTALL_SPATIALITE_ADMIN; then echo "  - phpLiteAdmin $PHPLITEADMIN_VERSION"; fi
if $INSTALL_GDAL; then echo "  - gdal $GDAL_VERSION"; fi
if $INSTALL_TOMCAT; then echo "  - tomcat $TOMCAT_VERSION"; fi
if $INSTALL_GEOSERVER; then echo "  - geoserver $GEOSERVER_VERSION"; fi
if $INSTALL_POSTGRES_ADMIN; then echo "  - phpPgAdmin"; fi
if $INSTALL_OSMCONVERT; then echo "  - osmconvert"; fi
if $INSTALL_OSMOSIS; then echo "  - osmosis $OSMOSIS_VERSION"; fi
if $IMPORT_DATA_NEO4J_SPATIAL; then echo "Importing data from OSM"; fi
if $INSTALL_ISOCHRONE_LOCAL; then echo "Importing project \"isochrone (local testing)\""; fi
if $INSTALL_ISOCHRONE_RELEASE; then echo "Importing project \"isochrone (release)\""; fi
if $INSTALL_ISOCHRONE_SNAPSHOT; then echo "Importing project \"isochrone (testing)\""; fi
if $INSTALL_ISOCHRONE_DATAMODEL; then echo "Importing project \"isochrone-datamodel\""; fi
if $INSTALL_ISOCHRONE_TOOLS; then echo "Importing project \"isochrone-tools\""; fi
if $INSTALL_PROJECT_PSIPROBE; then echo "Importing project \"psi-probe\""; fi
echo "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"
echo " Performing installations ($(date +%H:%M:%S)):"
echo "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"

echo "Installing cmake"
yum -y --enablerepo=rpmforge-extras install cmake >> $WORKING_DIR/install_cmake.log 2>&1

if $INSTALL_HTTPD; then
	echo "Installing httpd server"
	yum -y install httpd >> $WORKING_DIR/install_httpd.log 2>&1
fi

if $INSTALL_POSTGRES; then
	echo "Installing $POSTGRESQL_SERVICE_NAME"
	groupadd -g 26 postgres
	useradd -u 26 -g 26 -c "PostgreSQL Server" postgres
	yum -y install $POSTGRESQL_PKG_NAME $POSTGRESQL_PKG_NAME-contrib $POSTGRESQL_PKG_NAME-server >> $WORKING_DIR/install_postgresql.log 2>&1
	if $INSTALL_GDAL; then
		yum -y install $POSTGRESQL_PKG_NAME-devel >> $WORKING_DIR/install_postgresql.log 2>&1
	fi	

	echo "  - exporting postgresql options"
	echo "export PostgreSQL_ROOT=\"/usr/pgsql-$POSTGRESQL_VERSION\"" >> /etc/profile.d/postgresql.sh
	echo "export PATH=\"\${PostgreSQL_ROOT}/bin:\${PATH}\"" >> /etc/profile.d/postgresql.sh
	source /etc/profile.d/postgresql.sh
fi

if $INSTALL_POSTGIS; then
	if [ "$ARMADILLO_FILE" != "none" ]; then
		fn_download_newer $DOWNLOAD_DIR/$ARMADILLO_FILE "$ARMADILLO_URL"
		yum -y localinstall $DOWNLOAD_DIR/$ARMADILLO_FILE >> $WORKING_DIR/install_armadillo.log 2>&1
	fi

	if [ "$POSTGIS_VERSION" == "auto" ]; then
		echo "Installing postgis2 (from repository)"
		yum -y install postgis2_$POSTGRESQL_SHORT_VERSION >> $WORKING_DIR/install_postgis.log 2>&1
	else
		echo "Installing postgis dependencies"
		yum -y install gdal-devel geos-devel json-c-devel libxml2-devel proj-devel >> $WORKING_DIR/install_postgis_deps.log 2>&1

		echo "Installing postgis $POSTGIS_VERSION (from source)"
		git clone -q "$POSTGIS_GIT_URL" $DEPLOY_DIR/postgis-$POSTGIS_VERSION
		ln -sf $DEPLOY_DIR/postgis-$POSTGIS_VERSION $DEPLOY_DIR/postgis
		cd $DEPLOY_DIR/postgis
		git checkout -q $POSTGIS_VERSION >> /dev/null 2>&1
		./configure >> $WORKING_DIR/install_postgis.log 2>&1
		make >> $WORKING_DIR/install_postgis.log 2>&1
		make install >> $WORKING_DIR/install_postgis.log 2>&1
		cd "$WORKING_DIR"
	fi
fi

if $INSTALL_POSTGRES_ADMIN; then
	echo "Installing phpPgAdmin"
	yum -y install phpPgAdmin >> $WORKING_DIR/install_phpPgAdmin.log 2>&1
fi

if $INSTALL_JAVA; then
	echo "Installing java (oracle jdk-$JAVA_VERSION)"
	fn_download_newer $DOWNLOAD_DIR/$JAVA_FILE $CACHE_DIR_REMOTE_ISO/$JAVA_FILE
	yum -y localinstall $DOWNLOAD_DIR/$JAVA_FILE >> $WORKING_DIR/install_java.log 2>&1
	ln -sf /usr/java/latest $DEPLOY_DIR/jdk >> $WORKING_DIR/setup_java.log 2>&1
	ln -sf /usr/java/latest/jre $DEPLOY_DIR/jre >> $WORKING_DIR/setup_java.log 2>&1

	echo "  - setting alternatives for java"
	alternatives --install /usr/bin/java java $DEPLOY_DIR/jre/bin/java 200000 >> $WORKING_DIR/setup_java.log 2>&1
	alternatives --install /usr/bin/javaws javaws $DEPLOY_DIR/jre/bin/javaws 200000 >> $WORKING_DIR/setup_java.log 2>&1
	alternatives --set java $DEPLOY_DIR/jre/bin/java >> $WORKING_DIR/setup_java.log 2>&1
	alternatives --install /usr/bin/javac javac $DEPLOY_DIR/jdk/bin/javac 200000 >> $WORKING_DIR/setup_java.log 2>&1
	alternatives --install /usr/bin/jar jar $DEPLOY_DIR/jdk/bin/jar 200000 >> $WORKING_DIR/setup_java.log 2>&1

	echo "  - exporting java options"
	echo "export JAVA_HOME=\"$DEPLOY_DIR/jre\"" >> /etc/profile.d/java.sh
	echo "export PATH=\"\${JAVA_HOME}/bin:\${PATH}\"" >> /etc/profile.d/java.sh
	source /etc/profile.d/java.sh

	echo "  - installing strong cryptographie"
	fn_download_newer $DOWNLOAD_DIR/$JAVA_CRYPTO_FILE $CACHE_DIR_REMOTE_ISO/$JAVA_CRYPTO_FILE
	unzip -j -u -d $DEPLOY_DIR/jre/lib/security $DOWNLOAD_DIR/$JAVA_CRYPTO_FILE >> $WORKING_DIR/setup_java.log 2>&1
fi

if $INSTALL_TOMCAT; then
	echo "Installing $TOMCAT_NAME $TOMCAT_VERSION servlet container"
#	yum -y install $TOMCAT_NAME $TOMCAT_NAME-webapps $TOMCAT_NAME-admin-webapps >> $WORKING_DIR/install_tomcat.log 2>&1
#	ln -sf /usr/share/$TOMCAT_NAME $DEPLOY_DIR/$TOMCAT_NAME

	fn_download_newer $DOWNLOAD_DIR/$TOMCAT_FILE $TOMCAT_DOWNLOAD_URL
	cp $DOWNLOAD_DIR/$TOMCAT_FILE $DEPLOY_DIR/$TOMCAT_FILE
	tar -xvf $DEPLOY_DIR/$TOMCAT_FILE -C $DEPLOY_DIR >> $WORKING_DIR/install_tomcat.log 2>&1
	rm -f $DEPLOY_DIR/$TOMCAT_FILE >> $WORKING_DIR/install_tomcat.log 2>&1
	ln -sf $DEPLOY_DIR/apache-tomcat-$TOMCAT_VERSION $DEPLOY_DIR/$TOMCAT_NAME >> $WORKING_DIR/install_tomcat.log 2>&1

	echo "  - exporting catalina options"
	if $INSTALL_GEOSERVER; then
		echo "export CATALINA_OPTS=\"-Djava.awt.headless=true $TOMCAT_MEMORY_OPTS -DGEOSERVER_DATA_DIR=$DEPLOY_DIR/geoserver/data\"" >> /etc/profile.d/catalina.sh
	else
		echo "export CATALINA_OPTS=\"-Djava.awt.headless=true $TOMCAT_MEMORY_OPTS\"" >> /etc/profile.d/catalina.sh
	fi
	source /etc/profile.d/catalina.sh
fi

if $INSTALL_GEOSERVER; then
	echo "Installing geoserver $GEOSERVER_VERSION"
	fn_download_newer $DOWNLOAD_DIR/$GEOSERVER_FILE $GEOSERVER_DOWNLOAD_URL
	unzip -o -d $TOMCAT_WEBAPP_DIR $DOWNLOAD_DIR/$GEOSERVER_FILE geoserver.war >> $WORKING_DIR/install_geoserver.log 2>&1

	echo "  - copying web archive into tomcat"
	mkdir -p $TOMCAT_WEBAPP_DIR/geoserver
	unzip -o -d $TOMCAT_WEBAPP_DIR/geoserver $TOMCAT_WEBAPP_DIR/geoserver.war  >> $WORKING_DIR/install_geoserver.log 2>&1
	rm -f $TOMCAT_WEBAPP_DIR/geoserver.war >> $WORKING_DIR/install_geoserver.log 2>&1

	echo "  - creating geoserver data directory"
#	mkdir -p $DEPLOY_DIR/geoserver >> $WORKING_DIR/install_geoserver.log 2>&1
#	mv $TOMCAT_WEBAPP_DIR/geoserver/data $DEPLOY_DIR/geoserver >> $WORKING_DIR/install_geoserver.log 2>&1
	mkdir -p $DEPLOY_DIR/geoserver/data >> $WORKING_DIR/install_geoserver.log 2>&1

	echo "Installing geoserver-shell $GEOSERVER_SHELL_VERSION"
	fn_download_newer $DOWNLOAD_DIR/$GEOSERVER_SHELL_FILE $CACHE_DIR_REMOTE_ISO/$GEOSERVER_SHELL_FILE
	unzip -o -d $DEPLOY_DIR $DOWNLOAD_DIR/$GEOSERVER_SHELL_FILE >> $WORKING_DIR/install_geoserver_shell.log 2>&1
	ln -sf $DEPLOY_DIR/gs-shell-0.2-SNAPSHOT $DEPLOY_DIR/gs-shell
	make >> $WORKING_DIR/install_geoserver_shell.log 2>&1
	make install >> $WORKING_DIR/install_geoserver_shell.log 2>&1
fi

if $INSTALL_ISOCHRONE_LOCAL; then
	echo "Installing template project \"isochrone (local testing)\""
	echo "  - creating war using gradle from $TEMPLATE_DIR_ISOCHRONE"

	$TEMPLATE_DIR_ISOCHRONE/gradlew -b $TEMPLATE_DIR_ISOCHRONE/build.gradle -c $TEMPLATE_DIR_ISOCHRONE/settings.gradle clean war >> $WORKING_DIR/install_isochrone_local.log 2>&1
	unzip -o -d $TOMCAT_WEBAPP_DIR/localTesting $TEMPLATE_DIR_ISOCHRONE/build/libs/isochrone-*.war >> $WORKING_DIR/install_isochrone_local.log 2>&1
fi

if $INSTALL_ISOCHRONE_RELEASE; then
	echo "Installing template project \"isochrone (release)\""
	echo "  - artifact: $NEXUS_RELEASE_ISOCHRONE_WEB"

	fn_download $DOWNLOAD_DIR/isochrone.war $NEXUS_RELEASE_ISOCHRONE_WEB
	cp $DOWNLOAD_DIR/isochrone.war $TOMCAT_WEBAPP_DIR/isochrone.war
	unzip -o -d $TOMCAT_WEBAPP_DIR/isochrone $TOMCAT_WEBAPP_DIR/isochrone.war >> $WORKING_DIR/install_isochrone_release.log 2>&1
	rm -f $TOMCAT_WEBAPP_DIR/isochrone.war >> $WORKING_DIR/install_isochrone_release.log 2>&1
fi

if $INSTALL_ISOCHRONE_SNAPSHOT; then
	echo "Installing template project \"isochrone (testing)\""
	echo "  - artifact: $NEXUS_SNAPSHOT_ISOCHRONE_WEB"

	fn_download $DOWNLOAD_DIR/testing.war $NEXUS_SNAPSHOT_ISOCHRONE_WEB
	cp $DOWNLOAD_DIR/testing.war $TOMCAT_WEBAPP_DIR/testing.war
	unzip -o -d $TOMCAT_WEBAPP_DIR/testing $TOMCAT_WEBAPP_DIR/testing.war >> $WORKING_DIR/install_isochrone_snapshot.log 2>&1
	rm -f $TOMCAT_WEBAPP_DIR/testing.war >> $WORKING_DIR/install_isochrone_snapshot.log 2>&1
fi

if $INSTALL_ISOCHRONE_DATAMODEL; then
	echo "Installing \"$NEXUS_ARTIFACT_NAME_DATAMODEL\""
	echo "  - artifact: $NEXUS_SNAPSHOT_ISOCHRONE_DATAMODEL"

	fn_download $DOWNLOAD_DIR/$NEXUS_ARTIFACT_NAME_DATAMODEL.jar $NEXUS_SNAPSHOT_ISOCHRONE_DATAMODEL >> $WORKING_DIR/install_isochrone_datamodel.log 2>&1
	cp $DOWNLOAD_DIR/$NEXUS_ARTIFACT_NAME_DATAMODEL.jar $DEPLOY_DIR/ >> $WORKING_DIR/install_isochrone_datamodel.log 2>&1
	unzip -o -d "$DEPLOY_DIR/isochrone-datamodel" $DEPLOY_DIR/$NEXUS_ARTIFACT_NAME_DATAMODEL.jar >> $WORKING_DIR/install_isochrone_datamodel.log 2>&1

	DATAMODEL_VERSION_STRING=$(grep $DEPLOY_DIR/isochrone-datamodel/builder.sh -e "^VERSION=\".*\"$")
	DATAMODEL_VERSION_STRING=${DATAMODEL_VERSION_STRING#*\"}
	DATAMODEL_VERSION_STRING=${DATAMODEL_VERSION_STRING%\"*}
	mkdir -p "$DEPLOY_DIR/isochrone-datamodel/build/libs" >> $WORKING_DIR/install_isochrone_datamodel.log 2>&1
	cp "$DEPLOY_DIR/isochrone-datamodel.jar" "$DEPLOY_DIR/isochrone-datamodel/build/libs/isochrone-datamodel-$DATAMODEL_VERSION_STRING-all.jar" >> $WORKING_DIR/install_isochrone_datamodel.log 2>&1
fi

if $INSTALL_ISOCHRONE_TOOLS; then
	echo "Installing \"$NEXUS_ARTIFACT_NAME_TOOLS\""
	echo "  - artifact: $NEXUS_SNAPSHOT_ISOCHRONE_TOOLS"

	fn_download $DOWNLOAD_DIR/$NEXUS_ARTIFACT_NAME_TOOLS.jar $NEXUS_SNAPSHOT_ISOCHRONE_TOOLS >> $WORKING_DIR/install_isochrone_tools.log 2>&1
	cp $DOWNLOAD_DIR/$NEXUS_ARTIFACT_NAME_TOOLS.jar $DEPLOY_DIR/ >> $WORKING_DIR/install_isochrone_tools.log 2>&1
fi

if $INSTALL_PROJECT_PSIPROBE; then
	echo "Installing template project \"psi-probe\" $TEMPLATE_PSIPROBE_VERSION"
	echo "  - artifact: $TEMPLATE_PSIPROBE_DOWNLOAD_URL"

	fn_download_newer $DOWNLOAD_DIR/$TEMPLATE_PSIPROBE_FILE "$TEMPLATE_PSIPROBE_DOWNLOAD_URL"
	unzip -o -d $TOMCAT_WEBAPP_DIR $DOWNLOAD_DIR/$TEMPLATE_PSIPROBE_FILE probe.war
	unzip -o -d $TOMCAT_WEBAPP_DIR/psiprobe $TOMCAT_WEBAPP_DIR/probe.war >> $WORKING_DIR/install_psiprobe.log 2>&1
	rm -f $TOMCAT_WEBAPP_DIR/probe.war >> $WORKING_DIR/install_psiprobe.log 2>&1
fi

if $INSTALL_MAVEN; then
	echo "Installing maven $MAVEN_VERSION"
	mkdir -p $CACHE_DIR_LOCAL/maven
	fn_download_newer $DOWNLOAD_DIR/$MAVEN_FILE "$MAVEN_DOWNLOAD_URL"
	unzip -o -d $DEPLOY_DIR $DOWNLOAD_DIR/$MAVEN_FILE >> $WORKING_DIR/install_maven.log 2>&1
	ln -sf $DEPLOY_DIR/apache-maven-$MAVEN_VERSION $DEPLOY_DIR/apache-maven

	echo "  - exporting maven options"
	echo "export M2_HOME=\"$DEPLOY_DIR/apache-maven\"" >> /etc/profile.d/maven.sh
	echo "export PATH=\"\${M2_HOME}/bin:\${PATH}\"" >> /etc/profile.d/maven.sh
	source /etc/profile.d/maven.sh

	echo "  - configuring maven to use vagrant-cache plugin"
#	yum -y install xmlstarlet >> $WORKING_DIR/install_xmlstarlet.log
#	xmlstarlet edit --inplace --subnode "/_:settings" -t elem -n "localRepository" -v "$CACHE_DIR_LOCAL/maven" $DEPLOY_DIR/apache-maven/conf/settings.xml
	cp $SHARED_CONF_DIR/maven-settings.xml $DEPLOY_DIR/apache-maven/conf/settings.xml
fi

if $INSTALL_NEO4J; then
	echo "Installing neo4j dependencies"
	yum install -y lsof >> $WORKING_DIR/install_neo4j_deps.log 2>&1

	echo "Installing neo4j $NEO4J_VERSION"
	fn_download_newer $DOWNLOAD_DIR/$NEO4J_FILE "$NEO4J_DOWNLOAD_URL"
	tar -xvf $DOWNLOAD_DIR/$NEO4J_FILE -C $DEPLOY_DIR >> $WORKING_DIR/install_neo4j.log 2>&1
	ln -sf $DEPLOY_DIR/neo4j-community-$NEO4J_VERSION $DEPLOY_DIR/neo4j

	echo "  - enabling neo4j network access (without user)"
	echo "org.neo4j.server.webserver.address=0.0.0.0" >> $DEPLOY_DIR/neo4j/conf/neo4j-server.properties
	sed -i "s/dbms\.security\.auth\_enabled=true/dbms\.security\.auth\_enabled=false/" $DEPLOY_DIR/neo4j/conf/neo4-server.properties 

	echo "  - creating systemd service"
	cp "$SHARED_CONF_DIR/neo4j.service" "/etc/systemd/system/neo4j.service" >> $DEPLOY_DIR/neo4j/conf/neo4j-server.properties
	systemctl daemon-reload >> $DEPLOY_DIR/neo4j/conf/neo4j-server.properties
fi

if $INSTALL_NEO4J_SPATIAL; then
	echo "Installing neo4j-spatial $NEO4J_SPATIAL_VERSION"
	git clone -q "$NEO4J_SPATIAL_GIT_URL" $DEPLOY_DIR/neo4j-spatial-$NEO4J_SPATIAL_VERSION
	ln -sf $DEPLOY_DIR/neo4j-spatial-$NEO4J_SPATIAL_VERSION $DEPLOY_DIR/neo4j-spatial
	cd $DEPLOY_DIR/neo4j-spatial
	git checkout -q $NEO4J_SPATIAL_VERSION >> /dev/null 2>&1

	echo "  - copying neo4j-spatial into geoserver (from source)"
	mvn clean install -DskipTests >> $WORKING_DIR/install_neo4j_spatial.log 2>&1

	if $INSTALL_NEO4J; then
		unzip -o -d $DEPLOY_DIR/neo4j/plugins $DEPLOY_DIR/neo4j-spatial/target/*server-plugin.zip >> $WORKING_DIR/install_neo4j_spatial.log 2>&1
	fi
	if $INSTALL_GEOSERVER; then
		unzip -o -d $TOMCAT_WEBAPP_DIR/geoserver/WEB-INF/lib $DEPLOY_DIR/neo4j-spatial/target/*server-plugin.zip >> $WORKING_DIR/install_neo4j_spatial.log 2>&1
	fi

	cd "$WORKING_DIR"
fi

if $INSTALL_OSMCONVERT; then
	echo "Installing osmconvert dependencies"
	yum -y install zlib-devel >> $WORKING_DIR/install_osmconvert_deps.log 2>&1

	echo "Installing osmconvert"
	mkdir -p $DEPLOY_DIR/osmconvert
	fn_download_newer $DOWNLOAD_DIR/$OSMCONVERT_FILE "$OSMCONVERT_DOWNLOAD_URL"
	cp "$DOWNLOAD_DIR/$OSMCONVERT_FILE" "$DEPLOY_DIR/osmconvert/$OSMCONVERT_FILE"
	# Compiling osmconvert from source
	cc -x c -lz -O3 -o "$DEPLOY_DIR/osmconvert/osmconvert" "$DEPLOY_DIR/osmconvert/osmconvert.c" >> $WORKING_DIR/install_osmconvert.log 2>&1
	chmod a+x $DEPLOY_DIR/osmconvert/osmconvert

	echo "  - exporting osmconvert options"
	echo "export OSMCONVERT_HOME=\"$DEPLOY_DIR/osmconvert\"" >> /etc/profile.d/osmconvert.sh
	echo "export PATH=\"\${OSMCONVERT_HOME}:\${PATH}\"" >> /etc/profile.d/osmconvert.sh
	source /etc/profile.d/osmconvert.sh
fi

if $INSTALL_OSMOSIS; then
	echo "Installing osmosis $OSMOSIS_VERSION"
	fn_download_newer $DOWNLOAD_DIR/$OSMOSIS_FILE "$OSMOSIS_DOWNLOAD_URL"
	mkdir -p $DEPLOY_DIR/osmosis-$OSMOSIS_VERSION

	unzip -o -d $DEPLOY_DIR/osmosis-$OSMOSIS_VERSION $DOWNLOAD_DIR/$OSMOSIS_FILE >> $WORKING_DIR/install_osmosis.log 2>&1
	ln -sf $DEPLOY_DIR/osmosis-* $DEPLOY_DIR/osmosis
	chmod a+x $DEPLOY_DIR/osmosis/bin/osmosis

	echo "  - exporting osmosis options"
	echo "export OSMOSIS_HOME=\"$DEPLOY_DIR/osmosis\"" >> /etc/profile.d/osmosis.sh
	echo "export PATH=\"\${OSMOSIS_HOME}/bin:\${PATH}\"" >> /etc/profile.d/osmosis.sh
	source /etc/profile.d/osmosis.sh
fi

if $INSTALL_SPATIALITE; then
	echo "Installing spatialite dependencies"
	yum -y install sqlite-devel zlib-devel proj-devel geos-devel libxml2-devel >> $WORKING_DIR/install_spatialite_deps.log 2>&1

	echo "Installing spatialite $SPATIALITE_VERSION (from source)"
	fn_download_newer $DOWNLOAD_DIR/$SPATIALITE_FILE $SPATIALITE_URL
	tar -xvf $DOWNLOAD_DIR/$SPATIALITE_FILE -C $DEPLOY_DIR >> $WORKING_DIR/install_spatialite.log 2>&1 
	ln -sf $DEPLOY_DIR/libspatialite* $DEPLOY_DIR/libspatialite

	cd $DEPLOY_DIR/libspatialite
	./configure --disable-freexl >> $WORKING_DIR/install_spatialite.log 2>&1
	make >> $WORKING_DIR/install_spatialite.log 2>&1
	make install-strip >> $WORKING_DIR/install_spatialite.log 2>&1

	cd "$WORKING_DIR"
fi

if $INSTALL_SPATIALITE_ADMIN; then
	echo "Installing phpLiteAdmin"
	fn_download_newer $DOWNLOAD_DIR/phpliteadmin.zip $PHPLITEADMIN_URL

	mkdir -p $DEPLOY_DIR/phpliteadmin
	unzip -o -d $DEPLOY_DIR/phpliteadmin $DOWNLOAD_DIR/phpliteadmin.zip >> $WORKING_DIR/install_phpLiteAdmin.log 2>&1
	ln -sf $DEPLOY_DIR/phpliteadmin /var/www/html/phpliteadmin

	echo "  - setting permissions"
	chown -R apache:apache $DEPLOY_DIR/phpliteadmin
	chown -R apache:apache /var/www/html/phpliteadmin
fi

if $INSTALL_GDAL; then
	echo "Installing GDAL $GDAL_VERSION (from source; contains ogr2ogr)"
	cd $DEPLOY_DIR
	fn_download_newer $DOWNLOAD_DIR/$GDAL_FILE $GDAL_DOWNLOAD_URL
	tar -xvf $DOWNLOAD_DIR/$GDAL_FILE -C $DEPLOY_DIR >> $WORKING_DIR/install_gdal.log 2>&1
	ln -sf $DEPLOY_DIR/gdal* $DEPLOY_DIR/gdal

	cd "$DEPLOY_DIR/gdal"
	./configure --with-spatialite >> $WORKING_DIR/install_gdal.log 2>&1
	make >> $WORKING_DIR/install_gdal.log 2>&1
	make install >> $WORKING_DIR/install_gdal.log 2>&1

	cd "$WORKING_DIR"
fi

echo "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"
echo " Installations performed"
echo " Preparing services ($(date +%H:%M:%S)):"
echo "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"

if $INSTALL_POSTGRES; then
	echo "Initializing postgresql database"
	if [ -f "$PostgreSQL_ROOT/bin/postgresql$POSTGRESQL_SHORT_VERSION-setup" ]; then
		rm -rf $POSTGRESQL_DATA_DIR
		$PostgreSQL_ROOT/bin/postgresql$POSTGRESQL_SHORT_VERSION-setup initdb >> $WORKING_DIR/initialize_postgresql.log 2>&1
	else
		service $POSTGRESQL_SERVICE_NAME initdb >> $WORKING_DIR/initialize_postgresql.log 2>&1
	fi
	sleep 2

	echo "Configuring postgresql-server (permissions, logging, ...)"
	mkdir -p /var/log/postgresql
	chown postgres:postgres -R /var/log/postgresql

	cp "$SHARED_CONF_DIR/pg_hba.conf" "$POSTGRESQL_HBA_CONF"
	cp "$SHARED_CONF_DIR/postgresql.conf" "$POSTGRESQL_GLOB_CONF"
fi

if $INSTALL_POSTGRES_ADMIN; then
	echo "Configuring phpPgAdmin"
	cp $SHARED_CONF_DIR/phpPgAdmin.conf /etc/httpd/conf.d/phpPgAdmin.conf
	sed -i 's/\$conf\['\''servers'\''\]\[0\]\['\''host'\''\] = '\'''\''/\$conf\['\''servers'\''\]\[0\]\['\''host'\''\] = '\''localhost'\''/' /usr/share/phpPgAdmin/conf/config.inc.php
fi

if $INSTALL_NEO4J; then
	echo "Initializing neo4j database"
	$DEPLOY_DIR/neo4j/bin/neo4j -h -u $NEO4J_DB_USER install >> $WORKING_DIR/initialize_neo4j.log 2>&1

	echo "  - setting max open file limit for neo4j user"
	echo "$NEO4J_DB_USER    soft    nofile    40000" >> /etc/security/limits.conf
	echo "$NEO4J_DB_USER    hard    nofile    40000" >> /etc/security/limits.conf
	echo "session    required    pam_limits.so" >> /etc/pam.d/su
	ulimit -n 40000
fi

if $INSTALL_TOMCAT; then
	echo "Configuring tomcat users"
	groupadd -g 521 $TOMCAT_USER >> $WORKING_DIR/install_tomcat.log 2>&1
	useradd -u 521 -g 521 -c "Tomcat Service Account" -d $DEPLOY_DIR/apache-tomcat-$TOMCAT_VERSION $TOMCAT_USER >> $WORKING_DIR/install_tomcat.log 2>&1
	chown -R $TOMCAT_USER:$TOMCAT_USER $DEPLOY_DIR/apache-tomcat-$TOMCAT_VERSION >> $WORKING_DIR/install_tomcat.log 2>&1
	chown -R $TOMCAT_USER:$TOMCAT_USER $DEPLOY_DIR/$TOMCAT_NAME >> $WORKING_DIR/install_tomcat.log 2>&1

	cp $SHARED_CONF_DIR/tomcat-users.xml $DEPLOY_DIR/$TOMCAT_NAME/conf/tomcat-users.xml
	sed -i "s/password=\"admin\"/password=\"$TOMCAT_PASSWORD\"/" $DEPLOY_DIR/$TOMCAT_NAME/conf/tomcat-users.xml

	echo "Configuring tomcat default web.xml (enabling CORS filer)"
	cp -f $SHARED_CONF_DIR/tomcat_web.xml $DEPLOY_DIR/$TOMCAT_NAME/conf/web.xml

	echo "Configuring tomcat permissions"
	if $INSTALL_GEOSERVER; then
		chown -R $TOMCAT_USER:$TOMCAT_USER $TOMCAT_WEBAPP_DIR/geoserver
		chown -R $TOMCAT_USER:$TOMCAT_USER $DEPLOY_DIR/geoserver
	fi

	echo "Configuring tomcat startup script"
	cp $SHARED_CONF_DIR/tomcat_startscript.sh /etc/init.d/$TOMCAT_NAME >> $WORKING_DIR/install_tomcat.log 2>&1
	chmod 755 /etc/init.d/$TOMCAT_NAME >> $WORKING_DIR/install_tomcat.log 2>&1

	echo "Configuring tomcat webapps (removing unnecessary ones)"
	rm -rf "$TOMCAT_WEBAPP_DIR/docs"
	rm -rf "$TOMCAT_WEBAPP_DIR/examples"
	rm -rf "$TOMCAT_WEBAPP_DIR/host-manager"
fi

if $INSTALL_POSTGIS && $INSTALL_GEOSERVER; then
	echo "Configuring geoserver epsg projections"
	mkdir -p $DEPLOY_DIR/geoserver/data/user_projections
	echo "82344=`grep ^[^//,^#] /setup/conf/srid_82344_wkt.txt | paste -sd "" | sed 's/ \+ / /g'`" >> $DEPLOY_DIR/geoserver/data/user_projections/epsg.properties
	chown -R $TOMCAT_USER:$TOMCAT_USER $DEPLOY_DIR/geoserver/data/user_projections
fi

if $INSTALL_SPATIALITE_ADMIN; then
	echo "Configuring phpLiteAdmin"
	cp $DEPLOY_DIR/phpliteadmin/phpliteadmin.config.sample.php $DEPLOY_DIR/phpliteadmin/phpliteadmin.config.php
	sed -i "s/password = 'admin'/password = '${TOMCAT_PASSWORD}'/" $DEPLOY_DIR/phpliteadmin/phpliteadmin.config.php
	sed -i "s/directory = '\.'/directory = false/" $DEPLOY_DIR/phpliteadmin/phpliteadmin.config.php
	sed -i "s/subdirectories = false/subdirectories = true/" $DEPLOY_DIR/phpliteadmin/phpliteadmin.config.php
	sed -i "s|'path'=> 'database1.sqlite'|'path'=> '${DATA_DIR}/isochrone.spatialite'|" $DEPLOY_DIR/phpliteadmin/phpliteadmin.config.php
	sed -i "s/'name'=> 'Database1'/'name'=> 'Isochrone'/" $DEPLOY_DIR/phpliteadmin/phpliteadmin.config.php
	sed -i "s/language = 'en'/language = 'de'/" $DEPLOY_DIR/phpliteadmin/phpliteadmin.config.php
	sed -i "/'path'=> 'database2.sqlite'/d" $DEPLOY_DIR/phpliteadmin/phpliteadmin.config.php
	sed -i "/'name'=> 'Database 2'/d" $DEPLOY_DIR/phpliteadmin/phpliteadmin.config.php
	sed -i ':a;N;$!ba;s/\tarray(/lineWillBeDeleted/2' $DEPLOY_DIR/phpliteadmin/phpliteadmin.config.php
	sed -i ':a;N;$!ba;s/\t),/lineWillBeDeleted/2' $DEPLOY_DIR/phpliteadmin/phpliteadmin.config.php
	sed -i "/lineWillBeDeleted/d" $DEPLOY_DIR/phpliteadmin/phpliteadmin.config.php

	ln -sf $DEPLOY_DIR/phpliteadmin/phpliteadmin.php $DEPLOY_DIR/phpliteadmin/index.php
fi

echo "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"
echo " Services prepared"
echo " Starting services ($(date +%H:%M:%S)):"
echo "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"

if $INSTALL_HTTPD; then
	fn_service_start "httpd"
fi
if $INSTALL_POSTGRES; then
	fn_service_start "$POSTGRESQL_SERVICE_NAME"
fi
if $INSTALL_NEO4J; then
	fn_service_start "$NEO4J_SERVICE_NAME"
fi
if $INSTALL_TOMCAT; then
	fn_service_start "$TOMCAT_NAME"
fi

echo "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"
echo " Services started"

# Prevent second provision (done by check at the beginning of this file)
touch /var/vagrant_provision

END=$(date +%s)
TOTAL=$(( $END - $START ))

printf ' Time to prepare the environment: %dh:%dm:%ds\n' $(($TOTAL/3600)) $(($TOTAL%3600/60)) $(($TOTAL%60))
echo "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"