-
User expired authoredUser expired authored
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
bootstrap.sh 36.74 KiB
#! /bin/bash
###########################
# This bootstrap script installs some build tools and the packages
# neo4j, neo4j-spatial, httpd, postgresql, postgis, pgRouting, osmosis, osm2pgrouting
# into a centos6/fedora19 environment.
# It can be used in the context of a Vagrantfile to configure a vagrant box.
#
# Some data (from the road network of innsbruck) is also downloaded and
# imported into the databases (neo4j and postgresql)
#
# After various installations, the databases, the httpd server, tomcat
# (and therefor also geoserver, which is installed as war file) are started
###########################
# Environment configuration
###########################
if [ -f "/var/vagrant_provision" ]; then
exit 0
fi
IMPORT_OSMDATA=true
IMPORT_OSMDATA_CACHED=true
IMPORT_SCHEDULES=true
INSTALL_HTTPD=true
INSTALL_GEOSERVER=false
INSTALL_NEO4J=false
INSTALL_NEO4J_SPATIAL=false
INSTALL_PGROUTING=true
INSTALL_POSTGIS=true
INSTALL_POSTGRES=true
INSTALL_POSTGRES_ADMIN=true
# IS_LOCAL_TEST_DEPLOY will prevent install of projects (can be set using command-line argument)
# PsiProbe will always be installed if INSTALL_PROJECT_PSIPROBE is true (even when this is set to true)
IS_LOCAL_TEST_DEPLOY=false
# will install caniget2 sample project
INSTALL_PROJECT_CANIGET2=false
# will install isochrone from vagrant start directory (eclipse project)
INSTALL_ISOCHRONE_LOCAL=false
# will install latest isochrone release from nexus repository
INSTALL_ISOCHRONE_RELEASE=true
# will install latest isochrone snapshot from nexus repository
INSTALL_ISOCHRONE_SNAPSHOT=true
INSTALL_PROJECT_PSIPROBE=true
PG_DB_NAME="isochrone"
PG_DB_USER="@db_username@"
PG_DB_PASSWORD="@db_password@"
if [ ${PG_DB_USER:0:1} == "@" ]; then
PG_DB_USER=$1
fi
if [ ${PG_DB_PASSWORD:0:1} == "@" ]; then
PG_DB_PASSWORD=$2
fi
if [ -n "$3" ]; then
if [ "$3" = "true" ]; then
IS_LOCAL_TEST_DEPLOY=true
fi
fi
###########################
# General configuration
###########################
CACHE_DIR_LOCAL=/tmp/vagrant-cache
CACHE_DIR_REMOTE=http://www.krismer.de/files/PhD
DEPLOY_DIR=/opt
DOWNLOAD_DIR=$CACHE_DIR_LOCAL/wget
SHARED_CONF_DIR=/setup/conf
SHARED_IMG_DIR=/setup/img
CMAKE_VERSION=2.8.12.1
CMAKE_VERSION_MAIN=v2.8
CMAKE_FILE=cmake-$CMAKE_VERSION.tar.gz
GEOSERVER_VERSION=2.5.2
GEOSERVER_FILE=geoserver-$GEOSERVER_VERSION-war.zip
GEOSERVER_SHELL_VERSION=0.2-SNAPSHOT
GEOSERVER_SHELL_FILE=gs-shell-$GEOSERVER_SHELL_VERSION-app.zip
JAVA_VERSION=8u5
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.2.1
MAVEN_FILE=apache-maven-$MAVEN_VERSION-bin.zip
NEO4J_DB_USER=neo4j
NEO4J_VERSION=2.1.2
NEO4J_FILE=neo4j-community-$NEO4J_VERSION-unix.tar.gz
NEO4J_SERVICE_NAME=neo4j-service
NEO4J_SPATIAL_VERSION=0.13-neo4j-2.0.1
NEXUS_ARTIFACT_NAME=isochrone-web
NEXUS_BASE_URL_DBIS=http://138.232.66.78/nexus
NEXUS_BASE_URL_KRISMER=https://server.krismer.de/nexus
NEXUS_BASE_URL=$NEXUS_BASE_URL_DBIS
NEXUS_PUBLIC_REPO=isochrone
#NEXUS_BASE_URL=$NEXUS_BASE_URL_KRISMER
#NEXUS_PUBLIC_REPO=public
NEXUS_RELEASE_ISOCHRONE=$NEXUS_BASE_URL/service/local/artifact/maven/content?r=$NEXUS_PUBLIC_REPO&g=at.uibk.dbis&a=$NEXUS_ARTIFACT_NAME&v=RELEASE&p=war
#NEXUS_RELEASE_ISOCHRONE=$NEXUS_BASE_URL/service/local/artifact/maven/content?r=$NEXUS_PUBLIC_REPO&g=at.uibk.dbis&a=$NEXUS_ARTIFACT_NAME&v=0.2.2&p=war
NEXUS_RELEASE_CANIGET2=https://server.krismer.de/nexus/service/local/artifact/maven/content?r=public&g=de.krismer&a=CanIGet2&v=0.1&p=war
NEXUS_SNAPSHOT_ISOCHRONE=$NEXUS_BASE_URL/service/local/artifact/maven/content?r=$NEXUS_PUBLIC_REPO&g=at.uibk.dbis&a=$NEXUS_ARTIFACT_NAME&v=LATEST&p=war
NEXUS_YUM_REPO=http://www.krismer.de/files/krismer.repo
#OSM_BBOX_BZ="top=46.5200 left=11.3000 bottom=46.4500 right=11.3873"
#OSM_BBOX_IBK="top=47.3592 left=11.3020 bottom=47.2108 right=11.4554"
OSM_BBOX_BZ="${SHARED_CONF_DIR}/poly_bz.poly"
OSM_BBOX_IBK="${SHARED_CONF_DIR}/poly_ibk.poly"
OSM_BBOX_IT="${SHARED_CONF_DIR}/poly_it.poly"
OSM_BBOX_SF="${SHARED_CONF_DIR}/poly_sf.poly"
OSM_BBOX_ST="${SHARED_CONF_DIR}/poly_st.poly" #also referred to as poly_taa.poly
OSM_FILE_AUSTRIA=europe/austria-140301.osm.pbf
OSM_FILE_ITALY=europe/italy-140301.osm.pbf
OSM_FILE_CALIFORNIA=north-america/us/california-140301.osm.pbf
OSM_FILE_BZ_FILTERED=bozen-140301-filtered.osm
OSM_FILE_IBK_FILTERED=innsbruck-140301-filtered.osm
OSM_FILE_IT_FILTERED=italy-140301-filtered.osm
OSM_FILE_SF_FILTERED=sanfrancisco-140301-filtered.osm
OSM_FILE_ST_FILTERED=southtyrol-140301-filtered.osm
OSM_KEYS="aerialway,highway,public_transport,railway,route"
OSM2PGROUTING_VERSION=v2.0.0
OSM2PGROUTING_MAPPING_CONF=$DEPLOY_DIR/osm2pgrouting/mapconfig.xml
OSMOSIS_VERSION=0.43.1
OSMOSIS_FILE=osmosis-$OSMOSIS_VERSION.zip
POSTGIS_VERSION=2.1.3
POSTGRESQL_DATA_DIR=/var/lib/pgsql/9.3/data
POSTGRESQL_HBA_CONF=$POSTGRESQL_DATA_DIR/pg_hba.conf
POSTGRESQL_PKG_NAME=postgresql93
POSTGRESQL_REPO_RPM_32=http://yum.postgresql.org/9.3/fedora/fedora-20-i386/pgdg-fedora93-9.3-1.noarch.rpm
POSTGRESQL_REPO_RPM_64=http://yum.postgresql.org/9.3/fedora/fedora-20-x86_64/pgdg-fedora93-9.3-1.noarch.rpm
POSTGRESQL_SERVICE_NAME=postgresql-9.3
PGROUTING_VERSION=2.0.0
REPO_BASE_CONFIG=/etc/yum.repos.d/fedora-updates.repo
REPO_RPMFORGE_CONFIG=/etc/yum.repos.d/rpmforge.repo
REPO_RPMFORGE_URL_32=http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.3-1.el6.rf.i686.rpm
REPO_RPMFORGE_URL_64=http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.3-1.el6.rf.x86_64.rpm
TABLE_PREFIX_BZ=bz_
TABLE_PREFIX_IBK=ibk_
TABLE_PREFIX_IT=it_
TABLE_PREFIX_SF=sf_
TABLE_PREFIX_ST=st_
TEMPLATE_VERSION_PSIPROBE=2.3.3
TEMPLATE_FILE_PSIPROBE=probe-$TEMPLATE_VERSION_PSIPROBE.zip
TEMPLATE_DIR_ISOCHRONE=/vagrant
TOMCAT_VERSION=8.0.9
TOMCAT_FILE=apache-tomcat-$TOMCAT_VERSION.tar.gz
TOMCAT_MEMORY_OPTS="-Xmx2048m -Xms512m -XX:MaxPermSize=512m"
TOMCAT_NAME=tomcat
TOMCAT_USER=tomcat
TOPOLOGY_TOLERANCE=0.0005
## Calculated variables
#######################
INSTALL_JAVA=false
INSTALL_MAVEN=false
INSTALL_TOMCAT=false
if $IS_LOCAL_TEST_DEPLOY; then
INSTALL_PROJECT_CANIGET2=false
INSTALL_ISOCHRONE_LOCAL=false
INSTALL_ISOCHRONE_RELEASE=false
INSTALL_ISOCHRONE_SNAPSHOT=false
fi
if $INSTALL_GEOSERVER || $INSTALL_PROJECT_CANIGET2 || $INSTALL_ISOCHRONE_LOCAL || $INSTALL_ISOCHRONE_RELEASE || $INSTALL_ISOCHRONE_SNAPSHOT || $INSTALL_PROJECT_PSIPROBE; then
INSTALL_TOMCAT=true
fi
if $INSTALL_NEO4J_SPATIAL; then
INSTALL_MAVEN=$IMPORT_OSMDATA || $IMPORT_OSMDATA_CACHED
fi
if $INSTALL_TOMCAT || $INSTALL_GEOSERVER || $INSTALL_NEO4J || $INSTALL_NEO4J_SPATIAL || $IMPORT_OSMDATA || $IMPORT_OSMDATA_CACHED; then
INSTALL_JAVA=true
fi
if $INSTALL_PGROUTING; then
INSTALL_POSTGIS=true
fi
if $INSTALL_POSTGRES_ADMIN || $INSALL_POSTGIS; then
INSTALL_POSTGRES=true
fi
DISTRI=$(cat /etc/issue | head -n 1 | cut -d " " -f 1)
if [ $DISTRI == "CentOS" ]; then
POSTGRESQL_REPO_RPM_32=http://yum.postgresql.org/9.3/redhat/rhel-6-i386/pgdg-centos93-9.3-1.noarch.rpm
POSTGRESQL_REPO_RPM_64=http://yum.postgresql.org/9.3/redhat/rhel-6-x86_64/pgdg-centos93-9.3-1.noarch.rpm
REPO_BASE_CONFIG=/etc/yum.repos.d/CentOS-Base.repo
elif [ $DISTRI != "Fedora" ]; then
echo "Unsupported OS. Only CentOS and Fedora are supported!"
exit 1;
fi
IS_64_BIT=false
if [ "x86_64" == $(uname -m) ]; then
IS_64_BIT=true
fi
if $IS_64_BIT; then
POSTGRESQL_REPO_RPM=$POSTGRESQL_REPO_RPM_64
REPO_RPMFORGE_URL=$REPO_RPMFORGE_URL_64
JAVA_FILE=$JAVA_FILE_64
else
POSTGRESQL_REPO_RPM=$POSTGRESQL_REPO_RPM_32
REPO_RPMFORGE_URL=$REPO_RPMFORGE_URL_32
JAVA_FILE=$JAVA_FILE_32
fi
START=$(date +%s)
TOMCAT_WEBAPP_DIR=$DEPLOY_DIR/$TOMCAT_NAME/webapps
WORKING_DIR=`pwd`
## Functions
############
fn_download()
{
FILE="$1"
URL="$2"
if wget --no-check-certificate -q -O /dev/null "$URL"; then
wget --no-check-certificate -q -O "$FILE" "$URL"
fi
}
# "wget -N" does not work with "-O" option... so we use a workaround here
fn_download_newer()
{
FILE="$1"
URL="$2"
if [ ! -f "$FILE" ]; then
if wget --no-check-certificate -q -O /dev/null "$URL"; then
wget --no-check-certificate -q -O "$FILE" "$URL"
fi
fi
}
fn_import_data()
{
NAME="$1"
OSM_FILE="$2"
OSM_FILE_FILTERED="$3"
BOUNDING="$4"
SCHEDULE_FILE="$5"
TABLE_PREFIX="$6"
echo "Importing data for region of $NAME"
if $IMPORT_OSMDATA_CACHED; then
echo " - downloading cached OpenStreetMap file"
fn_download_newer $DOWNLOAD_DIR/$OSM_FILE_FILTERED $CACHE_DIR_REMOTE/$OSM_FILE_FILTERED
cp $DOWNLOAD_DIR/$OSM_FILE_FILTERED $DEPLOY_DIR/$OSM_FILE_FILTERED > /dev/null 2>&1
fi
if [ ! -f $DEPLOY_DIR/$OSM_FILE_FILTERED ]; then
echo " - downloading OpenStreetMap file"
OSM_FILENAME=$DOWNLOAD_DIR/${OSM_FILE##*/}
fn_download_newer $OSM_FILENAME http://download.geofabrik.de/$OSM_FILE
echo " - filtering OpenStreetMap data"
if [[ "$BOUNDING" == *.poly ]]; then
$DEPLOY_DIR/osmosis/bin/osmosis --read-pbf file="$OSM_FILENAME" --bounding-polygon file="$BOUNDING" --way-key keyList="$OSM_KEYS" --used-node --write-xml file="$DEPLOY_DIR/$OSM_FILE_FILTERED" >> initialize_osm_data.sh 2>&1
else
$DEPLOY_DIR/osmosis/bin/osmosis --read-pbf file="$OSM_FILENAME" --bounding-box $BOUNDING --way-key keyList="$OSM_KEYS" --used-node --write-xml file="$DEPLOY_DIR/$OSM_FILE_FILTERED" >> initialize_osm_data.sh 2>&1
fi
fi
if $INSTALL_POSTGIS && $IMPORT_SCHEDULES; then
if [ -n "$SCHEDULE_FILE" ]; then
echo " - downloading schedule"
fn_download_newer $DOWNLOAD_DIR/$SCHEDULE_FILE $CACHE_DIR_REMOTE/$SCHEDULE_FILE
cp $DOWNLOAD_DIR/$SCHEDULE_FILE $DEPLOY_DIR/$SCHEDULE_FILE > /dev/null 2>&1
echo " - importing schedule into postgis database"
gunzip -c $DEPLOY_DIR/$SCHEDULE_FILE | PGPASSWORD="$PG_DB_PASSWORD" psql -U "$PG_DB_USER" -h localhost "$PG_DB_NAME" >> $WORKING_DIR/import_schedule.log 2>&1
echo " - fixing schedule permissions"
tables=`PGPASSWORD="$PG_DB_PASSWORD" psql -qAt -U "$PG_DB_USER" -h localhost -c "SELECT tablename FROM pg_tables WHERE schemaname = 'public' AND tableowner = 'postgres';" "$PG_DB_NAME"`
for tbl in $tables ; do
PGPASSWORD="$PG_DB_PASSWORD" psql -qAt -U "$PG_DB_USER" -h localhost -c "ALTER TABLE $tbl OWNER TO $PG_DB_USER" "$PG_DB_NAME";
done
fi
fi
if $INSTALL_PGROUTING; then
echo " - importing filtered OpenStreetMap data into pgRouting"
$DEPLOY_DIR/osm2pgrouting/build/osm2pgrouting -file "$DEPLOY_DIR/$OSM_FILE_FILTERED" -conf "$OSM2PGROUTING_MAPPING_CONF" -dbname $PG_DB_NAME -user $PG_DB_USER -passwd $PG_DB_PASSWORD -clean -prefixtables $TABLE_PREFIX >> import_osm2pgrouting.log 2>&1
echo " - creating pgRouting topology"
PGPASSWORD="$PG_DB_PASSWORD" psql -U "$PG_DB_USER" -h localhost -d "$PG_DB_NAME" -c "SELECT pgr_createTopology('${TABLE_PREFIX}ways', $TOPOLOGY_TOLERANCE, 'the_geom', 'gid');" >> $WORKING_DIR/setup_database.log 2>&1
fi
if $INSTALL_NEO4J_SPATIAL; then
echo " - importing filtered OpenStreetMap data into neo4j-spatial"
cd $DEPLOY_DIR/neo4j-spatial
mvn exec:java -Dexec.mainClass=org.neo4j.gis.spatial.osm.OSMImporter -Dexec.args="$DEPLOY_DIR/neo4j/data/graph.db $DEPLOY_DIR/$OSM_FILE_FILTERED" >> $WORKING_DIR/import_osm2neo4j.log 2>&1
cd $WORKING_DIR
fi
}
## Start of environment preparation
###################################
echo ""
echo "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"
echo " Bootstrapping the VM:"
echo "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"
if $IS_LOCAL_TEST_DEPLOY; then echo "Starting in local test deploy mode"; fi
if $IMPORT_SCHEDULES && ! $IMPORT_OSMDATA && ! $IMPORT_OSMDATA_CACHED; then
echo "Warning: Schedules will not be imported, since no data from OSM is imported!"
IMPORT_SCHEDULES=false
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 9.3"; fi
if $INSTALL_POSTGIS; then echo " - postgis 2"; fi
if $INSTALL_PGROUTING; then echo " - pgRouting $PGROUTING_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 $IMPORT_OSMDATA; then echo " - osmosis $OSMOSIS_VERSION"; fi
if $IMPORT_OSMDATA_CACHED; then echo "Importing cached data from OSM (if possible)"; elif $IMPORT_OSMDATA; then echo "Importing data from OSM"; fi
if $IMPORT_SCHEDULES; then echo "Importing schedules"; fi
if $INSTALL_PROJECT_CANIGET2; then echo "Importing project \"CanIGet2\""; 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_PROJECT_PSIPROBE; then echo "Importing project \"psi-probe\""; fi
echo "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"
echo " Performing installations:"
echo "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"
# Are we punching above our weight?
if [ "$EUID" -ne "0" ]; then
echo '- The bootstrap script must be run as root!'
exit 1
fi
cd $WORKING_DIR
mkdir -p $DOWNLOAD_DIR
echo "Configuring timezone"
cp /usr/share/zoneinfo/Europe/Vienna /etc/localtime > setup_timezone.log 2>&1
echo "Installing utils (gcc, git, ...) with yum repository version"
yum -y install gcc gcc-c++ git iptables-services nano nmap sed tar unzip wget > insall_utils.log 2>&1
#echo "Installing krismer repository"
#fn_download_newer $DOWNLOAD_DIR/krismer.repo $NEXUS_YUM_REPO
#cp $DOWNLOAD_DIR/krismer.repo /etc/yum.repos.d > install_krismer_repo.log 2>&1
if $INSTALL_POSTGRES; then
if [ $DISTRI == "CentOS" ]; then
sed -i 's/\[base\]/\[base\]\nexclude=postgresql\*/' $REPO_BASE_CONFIG
sed -i 's/\[updates\]/\[updates\]\nexclude=postgresql\*/' $REPO_BASE_CONFIG
else
sed -i 's/\[fedora\]/\[fedora\]\nexclude=postgresql\*/' $REPO_BASE_CONFIG
fi
echo "Installing postgresql-9.3 repository"
fn_download $DOWNLOAD_DIR/postgresql-repo.rpm $POSTGRESQL_REPO_RPM
yum -y localinstall $DOWNLOAD_DIR/postgresql-repo.rpm > install_postgresql_repo.log 2>&1
echo "Installing epel repository"
fn_download $DOWNLOAD_DIR/epel-repo.rpm http://fedora.aau.at/epel/6/i386/epel-release-6-8.noarch.rpm
yum -y localinstall $DOWNLOAD_DIR/epel-repo.rpm > install_epel_repo.log 2>&1
fi
echo "Stopping iptables and SELinux"
service iptables stop > stop_iptables.log 2>&1
if [ $(getenforce) == "Enforcing" ]; then
setenforce 0 > stop_selinux.log 2>&1
fi
if $INSTALL_HTTPD; then
echo "Installing httpd server"
yum -y install httpd > install_httpd.log 2>&1
fi
if $INSTALL_POSTGRES; then
echo "Installing $POSTGRESQL_PKG_NAME"
yum -y install $POSTGRESQL_PKG_NAME $POSTGRESQL_PKG_NAME-server $POSTGRESQL_PKG_NAME-contrib > install_postgresql.log 2>&1
echo "export PostgreSQL_ROOT=/usr/pgsql-9.3" > /etc/profile.d/postgresql.sh
source /etc/profile.d/postgresql.sh
fi
if $INSTALL_POSTGIS; then
# echo "Installing postgis dependencies"
# yum -y install gdal-devel geos-devel json-c-devel libxml2-devel proj-devel > install_postgis_deps.log 2>&1
# echo "Installing postgis $POSTGIS_VERSION from source"
# git clone -q https://github.com/postgis/postgis.git $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
echo "Installing $POSTGRESQL_PKG_NAME from repository"
yum -y install postgis2_93 > install_postgis.log 2>&1
fi
if $INSTALL_POSTGRES_ADMIN; then
echo "Installing phpPgAdmin"
yum -y install phpPgAdmin > install_phpPgAdmin.log 2>&1
fi
if $INSTALL_PGROUTING; then
# echo "Installing cmake $CMAKE_VERSION from source"
# fn_download_newer $DOWNLOAD_DIR/$CMAKE_FILE http://www.cmake.org/files/$CMAKE_VERSION_MAIN/$CMAKE_FILE
# cp $DOWNLOAD_DIR/$CMAKE_FILE $DEPLOY_DIR/$CMAKE_FILE
# tar -xvzf $DEPLOY_DIR/$CMAKE_FILE -C $DEPLOY_DIR > install_cmake.log 2>&1
# cd $DEPLOY_DIR/cmake*
# ./bootstrap >> install_cmake.log 2>&1
# make >> install_cmake.log 2>&1
# make install >> install_cmake.log 2>&1
# cd $WORKSPACE_DIR
echo "Installing rpmForge repository"
fn_download_newer $DOWNLOAD_DIR/rpmforge-repo.rpm $REPO_RPMFORGE_URL
yum -y localinstall $DOWNLOAD_DIR/rpmforge-repo.rpm > install_rpmforge_repo.log 2>&1
sed -i 's/enabled = 1/enabled = 0/' $REPO_RPMFORGE_CONFIG
echo "Installing cmake from repository"
yum -y --enablerepo=rpmforge-extras install cmake > install_cmake.log 2>&1
echo "Installing pgRouting dependencies"
yum -y install $POSTGRESQL_PKG_NAME-devel $POSTGRESQL_PKG_NAME-libs boost-devel postgis2_93-devel > install_pgRouting_deps.log 2>&1
# echo "Installing CGAL 4.3"
# fn_download_newer $DOWNLOAD_DIR/CGAL-4.3.zip https://gforge.inria.fr/frs/download.php/32996/CGAL-4.3.zip
# cp $DOWNLOAD_DIR/CGAL-4.3.zip $DEPLOY_DIR/CGAL-4.3.zip
# unzip -o -d $DEPLOY_DIR $DEPLOY_DIR/CGAL-4.3.zip > install_cgal.log 2>&1
# cd $DEPLOY_DIR/CGAL-4.3
# cmake . >> install_cgal.log 2>&1
# make >> install_cgal.log 2>&1
# make install >> install_cgal.log 2>&1
# cd $WORKING_DIR
echo "Installing pgRouting $PGROUTING_VERSION"
git clone -q https://github.com/pgRouting/pgrouting.git $DEPLOY_DIR/pgRouting-$PGROUTING_VERSION
ln -sf $DEPLOY_DIR/pgRouting-$PGROUTING_VERSION $DEPLOY_DIR/pgRouting
cd $DEPLOY_DIR/pgRouting
git checkout -q pgrouting-$PGROUTING_VERSION > /dev/null 2>&1
mkdir build
cd build
# cmake -DWITH_DD=ON -DBoost_DIR:PATH=/usr/lib64/boost -DPOSTGRESQL_EXECUTABLE:FILEPATH="$PostgreSQL_ROOT"/bin/postgres -DPOSTGRESQL_PG_CONFIG:FILEPATH="$PostgreSQL_ROOT"/bin/pg_config .. > $WORKING_DIR/install_pgRouting.log 2>&1
cmake -DWITH_DD=OFF -DBoost_DIR:PATH=/usr/lib64/boost -DPOSTGRESQL_EXECUTABLE:FILEPATH="$PostgreSQL_ROOT"/bin/postgres -DPOSTGRESQL_PG_CONFIG:FILEPATH="$PostgreSQL_ROOT"/bin/pg_config .. > $WORKING_DIR/install_pgRouting.log 2>&1
make >> $WORKING_DIR/install_pgRouting.log 2>&1
make install >> $WORKING_DIR/install_pgRouting.log 2>&1
cd $WORKING_DIR
fi
if $INSTALL_JAVA; then
echo "Installing java (oracle jdk-$JAVA_VERSION)"
fn_download_newer $DOWNLOAD_DIR/$JAVA_FILE $CACHE_DIR_REMOTE/$JAVA_FILE
yum -y localinstall $DOWNLOAD_DIR/$JAVA_FILE > install_java.log 2>&1
ln -sf /usr/java/latest $DEPLOY_DIR/jdk > setup_java.log 2>&1
ln -sf /usr/java/latest/jre $DEPLOY_DIR/jre > setup_java.log 2>&1
echo " - setting alternatives for java"
alternatives --install /usr/bin/java java $DEPLOY_DIR/jre/bin/java 200000 >> setup_java.log 2>&1
alternatives --install /usr/bin/javaws javaws $DEPLOY_DIR/jre/bin/javaws 200000 >> setup_java.log 2>&1
alternatives --set java $DEPLOY_DIR/jre/bin/java >> setup_java.log 2>&1
alternatives --install /usr/bin/javac javac $DEPLOY_DIR/jdk/bin/javac 200000 >> setup_java.log 2>&1
alternatives --install /usr/bin/jar jar $DEPLOY_DIR/jdk/bin/jar 200000 >> setup_java.log 2>&1
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/$JAVA_CRYPTO_FILE
unzip -j -u $DOWNLOAD_DIR/$JAVA_CRYPTO_FILE -d $DEPLOY_DIR/jre/lib/security >> 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 > install_tomcat.log 2>&1
# ln -sf /usr/share/$TOMCAT_NAME $DEPLOY_DIR/$TOMCAT_NAME
fn_download_newer $DOWNLOAD_DIR/$TOMCAT_FILE http://tweedo.com/mirror/apache/tomcat/tomcat-8/v$TOMCAT_VERSION/bin/$TOMCAT_FILE
cp $DOWNLOAD_DIR/$TOMCAT_FILE $DEPLOY_DIR/$TOMCAT_FILE
tar -xvzf $DEPLOY_DIR/$TOMCAT_FILE -C $DEPLOY_DIR > install_tomcat.log 2>&1
rm -f $DEPLOY_DIR/$TOMCAT_FILE >> install_tomcat.log 2>&1
ln -sf $DEPLOY_DIR/apache-tomcat-$TOMCAT_VERSION $DEPLOY_DIR/$TOMCAT_NAME >> install_tomcat.log 2>&1
fi
if $INSTALL_GEOSERVER; then
echo "Installing geoserver $GEOSERVER_VERSION"
fn_download_newer $DOWNLOAD_DIR/$GEOSERVER_FILE http://sourceforge.net/projects/geoserver/files/GeoServer/$GEOSERVER_VERSION/$GEOSERVER_FILE
unzip -o -d $TOMCAT_WEBAPP_DIR $DOWNLOAD_DIR/$GEOSERVER_FILE geoserver.war > install_geoserver.log 2>&1
echo "Installing geoserver web archive into tomcat"
mkdir -p $TOMCAT_WEBAPP_DIR/geoserver
unzip -o -d $TOMCAT_WEBAPP_DIR/geoserver $TOMCAT_WEBAPP_DIR/geoserver.war >> install_geoserver.log 2>&1
rm -f $TOMCAT_WEBAPP_DIR/geoserver.war >> install_geoserver.log 2>&1
echo "Installing geoserver data directory"
# mkdir -p $DEPLOY_DIR/geoserver >> install_geoserver.log 2>&1
# mv $TOMCAT_WEBAPP_DIR/geoserver/data $DEPLOY_DIR/geoserver >> install_geoserver.log 2>&1
mkdir -p $DEPLOY_DIR/geoserver/data >> install_geoserver.log 2>&1
echo "export CATALINA_OPTS=\"-Djava.awt.headless=true $TOMCAT_MEMORY_OPTS -DGEOSERVER_DATA_DIR=$DEPLOY_DIR/geoserver/data\"" > /etc/profile.d/catalina.sh
source /etc/profile.d/catalina.sh
echo "Installing geoserver-shell $GEOSERVER_SHELL_VERSION"
fn_download_newer $DOWNLOAD_DIR/$GEOSERVER_SHELL_FILE $CACHE_DIR_REMOTE/$GEOSERVER_SHELL_FILE
unzip $DOWNLOAD_DIR/$GEOSERVER_SHELL_FILE -d $DEPLOY_DIR > install_geoserver_shell.log 2>&1
ln -sf $DEPLOY_DIR/gs-shell-0.2-SNAPSHOT $DEPLOY_DIR/gs-shell
make >> install_geoserver_shell.log 2>&1
make install >> 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 > install_isochrone_local.log 2>&1
unzip -o -d $TOMCAT_WEBAPP_DIR/localTesting $TEMPLATE_DIR_ISOCHRONE/build/libs/isochrone-*.war >> install_isochrone_local.log 2>&1
fi
if $INSTALL_ISOCHRONE_RELEASE; then
echo "Installing template project \"isochrone (release)\""
echo " - artifact: $NEXUS_RELEASE_ISOCHRONE"
# we do not save this file in download dir (we do not want caching for isochrone.war)
fn_download $DOWNLOAD_DIR/isochrone.war $NEXUS_RELEASE_ISOCHRONE
cp $DOWNLOAD_DIR/isochrone.war $TOMCAT_WEBAPP_DIR/isochrone.war
unzip -o -d $TOMCAT_WEBAPP_DIR/isochrone $TOMCAT_WEBAPP_DIR/isochrone.war > install_isochrone_release.log 2>&1
rm -f $TOMCAT_WEBAPP_DIR/isochrone.war >> install_isochrone_release.log 2>&1
fi
if $INSTALL_ISOCHRONE_SNAPSHOT; then
echo "Installing template project \"isochrone (testing)\""
echo " - artifact: $NEXUS_RELEASE_ISOCHRONE"
# we do not save this file in download dir (we do not want caching for testing.war)
fn_download $DOWNLOAD_DIR/testing.war $NEXUS_SNAPSHOT_ISOCHRONE
cp $DOWNLOAD_DIR/testing.war $TOMCAT_WEBAPP_DIR/testing.war
unzip -o -d $TOMCAT_WEBAPP_DIR/testing $TOMCAT_WEBAPP_DIR/testing.war > install_isochrone_snapshot.log 2>&1
rm -f $TOMCAT_WEBAPP_DIR/testing.war >> install_isochrone_snapshot.log 2>&1
fi
if $INSTALL_PROJECT_CANIGET2; then
echo "Installing template project \"CanIGet2\""
echo " - artifact: $NEXUS_RELEASE_CANIGET2"
fn_download_newer $DOWNLOAD_DIR/caniget2.war $NEXUS_RELEASE_CANIGET2
cp $DOWNLOAD_DIR/caniget2.war $TOMCAT_WEBAPP_DIR
unzip -o -d $TOMCAT_WEBAPP_DIR/caniget2 $TOMCAT_WEBAPP_DIR/caniget2.war > install_caniget2.log 2>&1
rm -f $TOMCAT_WEBAPP_DIR/caniget2.war >> install_caniget2.log 2>&1
fi
if $INSTALL_PROJECT_PSIPROBE; then
echo "Installing template project \"psi-probe\""
echo " - artifact: https://psi-probe.googlecode.com/files/$TEMPLATE_FILE_PSIPROBE"
fn_download_newer $DOWNLOAD_DIR/$TEMPLATE_FILE_PSIPROBE https://psi-probe.googlecode.com/files/$TEMPLATE_FILE_PSIPROBE
unzip $DOWNLOAD_DIR/$TEMPLATE_FILE_PSIPROBE probe.war -d $TOMCAT_WEBAPP_DIR
unzip -o -d $TOMCAT_WEBAPP_DIR/psiprobe $TOMCAT_WEBAPP_DIR/probe.war > install_psiprobe.log 2>&1
rm -f $TOMCAT_WEBAPP_DIR/probe.war >> 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 http://tweedo.com/mirror/apache/maven/maven-3/3.1.1/binaries/$MAVEN_FILE
unzip -o $DOWNLOAD_DIR/$MAVEN_FILE -d $DEPLOY_DIR > install_maven.log 2>&1
ln -sf $DEPLOY_DIR/apache-maven-$MAVEN_VERSION $DEPLOY_DIR/apache-maven
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 >> 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 > install_neo4j_deps.log 2>&1
echo "Installing neo4j $NEO4J_VERSION"
fn_download_newer $DOWNLOAD_DIR/$NEO4J_FILE http://dist.neo4j.org/$NEO4J_FILE
tar -xvzf $DOWNLOAD_DIR/$NEO4J_FILE -C $DEPLOY_DIR > install_neo4j.log 2>&1
ln -sf $DEPLOY_DIR/neo4j-community-$NEO4J_VERSION $DEPLOY_DIR/neo4j
echo "org.neo4j.server.webserver.address=0.0.0.0" >> $DEPLOY_DIR/neo4j/conf/neo4j-server.properties
fi
if $INSTALL_NEO4J_SPATIAL; then
echo "Installing neo4j-spatial $NEO4J_SPATIAL_VERSION"
git clone -q https://github.com/neo4j/spatial.git $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
if $INSTALL_GEOSERVER; then
if $IMPORT_OSMDATA || $IMPORT_OSMDATA_CACHED; then
# We need to compile the source when importing data, so that the main class gets compiled
echo "Installing neo4j-spatial into geoserver from source"
mvn clean install -DskipTests > $WORKING_DIR/install_neo4j_spatial.log 2>&1
unzip -o $DEPLOY_DIR/neo4j-spatial/target/*server-plugin.zip -d $TOMCAT_WEBAPP_DIR/geoserver/WEB-INF/lib > $WORKING_DIR/install_neo4j_spatial_plugin.log 2>&1
else
echo "Installing neo4j-spatial into geoserver from binary"
fn_download_newer $DOWNLOAD_DIR/neo4j-spatial-$NEO4J_SPATIAL_VERSION-server-plugin.zip http://dist.neo4j.org.s3.amazonaws.com/spatial/neo4j-spatial-$NEO4J_SPATIAL_VERSION-server-plugin.zip
unzip -o $DOWNLOAD_DIR/neo4j-spatial-$NEO4J_SPATIAL_VERSION-server-plugin.zip -d $TOMCAT_WEBAPP_DIR/geoserver/WEB-INF/lib > $WORKING_DIR/install_neo4j_spatial_plugin.log 2>&1
fi
fi
cd $WORKING_DIR
fi
if $IMPORT_OSMDATA; then
echo "Installing osmosis $OSMOSIS_VERSION"
fn_download_newer $DOWNLOAD_DIR/$OSMOSIS_FILE http://bretth.dev.openstreetmap.org/osmosis-build/$OSMOSIS_FILE
mkdir -p $DEPLOY_DIR/osmosis-$OSMOSIS_VERSION
unzip -o $DOWNLOAD_DIR/$OSMOSIS_FILE -d $DEPLOY_DIR/osmosis-$OSMOSIS_VERSION > install_osmosis.log 2>&1
ln -sf $DEPLOY_DIR/osmosis-* $DEPLOY_DIR/osmosis
chmod a+x $DEPLOY_DIR/osmosis/bin/osmosis
fi
if ( $IMPORT_OSMDATA || $IMPORT_OSMDATA_CACHED ) && $INSTALL_PGROUTING; then
echo "Installing osm2pgrouting dependencies"
yum install -y expat-devel boost-devel > install_osm2pgrouting_deps.log 2>&1
echo "Installing osm2pgrouting $OSM2PGROUTING_VERSION"
git clone -q https://github.com/pgRouting/osm2pgrouting.git $DEPLOY_DIR/osm2pgrouting-$OSM2PGROUTING_VERSION
ln -sf $DEPLOY_DIR/osm2pgrouting-$OSM2PGROUTING_VERSION $DEPLOY_DIR/osm2pgrouting
cd $DEPLOY_DIR/osm2pgrouting
git checkout -q $OSM2PGROUTING_VERSION > /dev/null 2>&1
cmake -H. -Bbuild > $WORKING_DIR/install_osm2pgrouting.log 2>&1
cd build/
make >> $WORKING_DIR/install_osm2pgrouting.log 2>&1
make install >> $WORKING_DIR/install_osm2pgrouting.log 2>&1
cd $WORKING_DIR
fi
echo "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"
echo " Installations done!"
echo " Preparing services"
echo "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"
if $INSTALL_POSTGRES; then
echo "Initialize postgresql database"
service $POSTGRESQL_SERVICE_NAME initdb > initialize_postgresql.log 2>&1
sleep 2
echo "Configuring and starting postgresql-server"
cp $SHARED_CONF_DIR/pg_hba.conf $POSTGRESQL_HBA_CONF
echo "listen_addresses = '*'" >> $POSTGRESQL_DATA_DIR/postgresql.conf
echo "port = 5432" >> $POSTGRESQL_DATA_DIR/postgresql.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 "Initialize neo4j database"
$DEPLOY_DIR/neo4j/bin/neo4j -h -u $NEO4J_DB_USER install > initialize_neo4j.log 2>&1
# Configuring max open file limit for user "neo4j"
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 >> install_tomcat.log 2>&1
useradd -u 521 -g 521 -c "Tomcat Service Account" -d $DEPLOY_DIR/apache-tomcat-$TOMCAT_VERSION $TOMCAT_USER >> install_tomcat.log 2>&1
chown -R $TOMCAT_USER:$TOMCAT_USER $DEPLOY_DIR/apache-tomcat-$TOMCAT_VERSION >> install_tomcat.log 2>&1
chown -R $TOMCAT_USER:$TOMCAT_USER $DEPLOY_DIR/$TOMCAT_NAME >> 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=\"$PG_DB_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 >> install_tomcat.log 2>&1
chmod 755 /etc/init.d/$TOMCAT_NAME >> install_tomcat.log 2>&1
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
echo "Starting services"
if $INSTALL_HTTPD; then
service httpd start > start_httpd.log 2>&1
chkconfig httpd on >> start_httpd.log 2>&1
sleep 2
fi
if $INSTALL_POSTGRES; then
service $POSTGRESQL_SERVICE_NAME start > start_pg.log 2>&1
chkconfig $POSTGRESQL_SERVICE_NAME on >> start_pg.log 2>&1
sleep 2
fi
if $INSTALL_NEO4J; then
service $NEO4J_SERVICE_NAME start > start_neo4j.log 2>&1
chkconfig $NEO4J_SERVICE_NAME on >> start_neo4j.log 2>&1
sleep 2
fi
if $INSTALL_TOMCAT; then
service $TOMCAT_NAME start > start_tomcat.log 2>&1
chkconfig $TOMCAT_NAME on >> start_tomcat.log 2>&1
sleep 2
fi
if $INSTALL_POSTGRES; then
echo "Creating postgresql database $PG_DB_NAME"
sudo -u "postgres" psql -d template1 -c "CREATE DATABASE \"$PG_DB_NAME\";" > $WORKING_DIR/setup_database.log 2>&1
sudo -u "postgres" psql -d "$PG_DB_NAME" -c "CREATE USER \"$PG_DB_USER\" WITH PASSWORD '$PG_DB_PASSWORD';" >> $WORKING_DIR/setup_database.log 2>&1
sudo -u "postgres" psql -d "$PG_DB_NAME" -c "ALTER DATABASE \"$PG_DB_NAME\" OWNER TO \"$PG_DB_USER\";" >> $WORKING_DIR/setup_database.log 2>&1
sudo -u "postgres" psql -d "$PG_DB_NAME" -c "GRANT ALL PRIVILEGES ON DATABASE \"$PG_DB_NAME\" TO \"$PG_DB_USER\";" >> $WORKING_DIR/setup_database.log 2>&1
sudo -u "postgres" psql -d "$PG_DB_NAME" -c "ALTER SCHEMA public OWNER TO \"$PG_DB_USER\";" >> $WORKING_DIR/setup_database.log 2>&1
sudo -u "postgres" psql -d "$PG_DB_NAME" -c "ALTER ROLE \"$PG_DB_USER\" SUPERUSER;" >> $WORKING_DIR/setup_database.log 2>&1
fi
if $INSTALL_POSTGIS; then
PGPASSWORD="$PG_DB_PASSWORD" psql -U "$PG_DB_USER" -h localhost -d "$PG_DB_NAME" -c "CREATE EXTENSION postgis;" >> $WORKING_DIR/setup_database.log 2>&1
PGPASSWORD="$PG_DB_PASSWORD" psql -U "$PG_DB_USER" -h localhost -d "$PG_DB_NAME" -f $SHARED_CONF_DIR/pg_procedures.sql >> $WORKING_DIR/setup_database.log 2>&1
PGPASSWORD="$PG_DB_PASSWORD" psql -U "$PG_DB_USER" -h localhost -d "$PG_DB_NAME" -f $SHARED_CONF_DIR/srid_82344_insert.sql >> $WORKING_DIR/setup_database.log 2>&1
fi
if $INSTALL_PGROUTING; then
PGPASSWORD="$PG_DB_PASSWORD" psql -U "$PG_DB_USER" -h localhost -d "$PG_DB_NAME" -c "CREATE EXTENSION pgRouting;" >> $WORKING_DIR/setup_database.log 2>&1
fi
echo "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"
echo " Services prepared!"
if $IMPORT_OSMDATA || $IMPORT_OSMDATA_CACHED; then
echo " Importing data"
echo "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"
fn_import_data "Bolzen" "$OSM_FILE_ITALY" "$OSM_FILE_BZ_FILTERED" "$OSM_BBOX_BZ" "bz_export.sql.gz" $TABLE_PREFIX_BZ
fn_import_data "Innsbruck" "$OSM_FILE_AUSTRIA" "$OSM_FILE_IBK_FILTERED" "$OSM_BBOX_IBK" "" $TABLE_PREFIX_IBK
if ! $IS_LOCAL_TEST_DEPLOY; then
# fn_import_data "Italy" "$OSM_FILE_ITALY" "$OSM_FILE_IT_FILTERED" "$OSM_BBOX_IT" "it_export.sql.gz" $TABLE_PREFIX_IT
fn_import_data "San Francisco" "$OSM_FILE_CALIFORNIA" "$OSM_FILE_SF_FILTERED" "$OSM_BBOX_SF" "sf_export.sql.gz" $TABLE_PREFIX_SF
# fn_import_data "Alto Adige" "$OSM_FILE_ITALY" "$OSM_FILE_ST_FILTERED" "$OSM_BBOX_ST" "st_export.sql.gz" $TABLE_PREFIX_ST
fi
if $INSTALL_GEOSERVER; then
if $INSTALL_NEO4J_SPATIAL; then
echo "Configuring neo4j data permissions for geoserver"
chown -R $TOMCAT_USER:$TOMCAT_USER $DEPLOY_DIR/neo4j/data/graph.db
fi
echo "Configuring geoserver $GEOSERVER_VERSION using geoserver-shell $GEOSERVER_SHELL_VERSION"
sh $DEPLOY_DIR/gs-shell/bin/gs-shell --cmdfile $SHARED_CONF_DIR/geoserver_setup_ws.gs > setup_geoserver_workspace.log 2>&1
sh $DEPLOY_DIR/gs-shell/bin/gs-shell --cmdfile $SHARED_CONF_DIR/geoserver_setup_styles.gs > setup_geoserver_styles.log 2>&1
cp $SHARED_IMG_DIR/* $DEPLOY_DIR/geoserver/data/styles >> setup_geoserver_styles.log 2>&1
if $INSTALL_NEO4J_SPATIAL; then
sh $DEPLOY_DIR/gs-shell/bin/gs-shell --cmdfile $SHARED_CONF_DIR/geoserver_setup_neo4j_ds.gs > setup_geoserver_neo4j.log 2>&1
sh $DEPLOY_DIR/gs-shell/bin/gs-shell --cmdfile $SHARED_CONF_DIR/geoserver_setup_neo4j_ft_bz.gs >> setup_geoserver_neo4j.log 2>&1
sh $DEPLOY_DIR/gs-shell/bin/gs-shell --cmdfile $SHARED_CONF_DIR/geoserver_setup_neo4j_ft_ibk.gs >> setup_geoserver_neo4j.log 2>&1
if ! $IS_LOCAL_TEST_DEPLOY; then
# sh $DEPLOY_DIR/gs-shell/bin/gs-shell --cmdfile $SHARED_CONF_DIR/geoserver_setup_neo4j_ft_it.gs >> setup_geoserver_neo4j.log 2>&1
sh $DEPLOY_DIR/gs-shell/bin/gs-shell --cmdfile $SHARED_CONF_DIR/geoserver_setup_neo4j_ft_sf.gs >> setup_geoserver_neo4j.log 2>&1
# sh $DEPLOY_DIR/gs-shell/bin/gs-shell --cmdfile $SHARED_CONF_DIR/geoserver_setup_neo4j_ft_st.gs >> setup_geoserver_neo4j.log 2>&1
sh $DEPLOY_DIR/gs-shell/bin/gs-shell --cmdfile $SHARED_CONF_DIR/geoserver_setup_neo4j_ft.gs >> setup_geoserver_neo4j.log 2>&1
fi
fi
if $INSTALL_POSTGIS; then
# copy geoserver_setup_postgis_ds and replace username/password
cp $SHARED_CONF_DIR/geoserver_setup_postgis_ds.gs $WORKING_DIR/geoserver_setup_postgis_ds.gs
sed -i "s/@db_username@/$PG_DB_USER/" $WORKING_DIR/geoserver_setup_postgis_ds.gs
sed -i "s/@db_password@/$PG_DB_PASSWORD/" $WORKING_DIR/geoserver_setup_postgis_ds.gs
sh $DEPLOY_DIR/gs-shell/bin/gs-shell --cmdfile $WORKING_DIR/geoserver_setup_postgis_ds.gs > setup_geoserver_postgis.log 2>&1
sh $DEPLOY_DIR/gs-shell/bin/gs-shell --cmdfile $SHARED_CONF_DIR/geoserver_setup_postgis_ft_bz.gs >> setup_geoserver_postgis.log 2>&1
sh $DEPLOY_DIR/gs-shell/bin/gs-shell --cmdfile $SHARED_CONF_DIR/geoserver_setup_postgis_ft_ibk.gs >> setup_geoserver_postgis.log 2>&1
if ! $IS_LOCAL_TEST_DEPLOY; then
# sh $DEPLOY_DIR/gs-shell/bin/gs-shell --cmdfile $SHARED_CONF_DIR/geoserver_setup_postgis_ft_it.gs >> setup_geoserver_postgis.log 2>&1
sh $DEPLOY_DIR/gs-shell/bin/gs-shell --cmdfile $SHARED_CONF_DIR/geoserver_setup_postgis_ft_sf.gs >> setup_geoserver_postgis.log 2>&1
# sh $DEPLOY_DIR/gs-shell/bin/gs-shell --cmdfile $SHARED_CONF_DIR/geoserver_setup_postgis_ft_st.gs >> setup_geoserver_postgis.log 2>&1
sh $DEPLOY_DIR/gs-shell/bin/gs-shell --cmdfile $SHARED_CONF_DIR/geoserver_setup_postgis_ft.gs >> setup_geoserver_postgis.log 2>&1
fi
fi
fi
fi
# Prevent second provision (done by check at the beginning of this file)
touch /var/vagrant_provision
END=$(date +%s)
TOTAL=$(( $END - $START ))
echo "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"
echo " All preparations done... box can now be used"
echo " Bootstrapping time: $TOTAL seconds"
echo "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"