Mercurial > hg > LGDataverses
diff scripts/setup/asadmin-setup.sh @ 10:a50cf11e5178
Rewrite LGDataverse completely upgrading to dataverse4.0
| author | Zoe Hong <zhong@mpiwg-berlin.mpg.de> |
|---|---|
| date | Tue, 08 Sep 2015 17:00:21 +0200 |
| parents | |
| children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/scripts/setup/asadmin-setup.sh Tue Sep 08 17:00:21 2015 +0200 @@ -0,0 +1,212 @@ +#!/bin/bash +# STOP! +# DO NOT ADD MORE ASADMIN COMMANDS TO THIS SCRIPT! +# IF YOU NEED TO ADD MORE GLASSFISH CONFIG SETTINGS, ADD THEM +# TO THE ../installer/glassfish-setup.sh SCRIPT. +# I'M ASSUMING THAT WE'LL WANT TO CONTINUE MAINTAINING THIS SCRIPT, +# (FOR VAGRANT SETUPS, etc.?); IT SHOULD STILL BE WORKING, BY +# CALLING THE NEW SCRIPT ABOVE - SO NO NEED TO DUPLICATE THE ASADMIN +# COMMANDS HERE. +# FROM NOW ON, ONLY NON-ASADMIN CONFIGURATION SHOULD GO INTO THIS +# SCRIPT. (which makes the name especially misleading - but I didn't +# want to change it, in case other scripts are calling it by name!) +# -Leonid 4.0 beta + +# This is a setup script for setting up Glassfish 4 to run Dataverse +# The script was tested on Mac OS X.9 +# ASSUMPTIONS +# * Script has to run locally (i.e. on the machine that hosts the server) +# * Internet connectivity is assumed, in order to get the postgresql driver. + +## +# Default values - Change to suit your machine. +DEFAULT_GLASSFISH_ROOT=/Applications/NetBeans/glassfish-4.0 +DEFAULT_DOMAIN=domain1 +DEFAULT_ASADMIN_OPTS=" " + +### +# Database values. Update as needed. +# Note: DB_USER "dvnApp" is case-sensitive and later used in "scripts/database/reference_data.sql" +# +DB_PORT=5432; export DB_PORT +DB_HOST=localhost; export DB_HOST +DB_NAME=dvndb; export DB_NAME +DB_USER=dvnApp; export DB_USER +DB_PASS=dvnAppPass; export DB_PASS + +### +# Rserve configuration: +RSERVE_HOST=localhost; export RSERVE_HOST +RSERVE_PORT=6311; export RSERVE_PORT +RSERVE_USER=rserve; export RSERVE_USER +RSERVE_PASS=rserve; export RSERVE_PASS + +### +# Other configuration values: +MEM_HEAP_SIZE=1024; export MEM_HEAP_SIZE +HOST_ADDRESS=localhost; export HOST_ADDRESS +SMTP_SERVER=mail.hmdc.harvard.edu; export SMTP_SERVER +FILES_DIR=${HOME}/dataverse/files; export FILES_DIR + +### End of default configuration values. + +# "${VAR+xxx}" for unset vs. empty per http://stackoverflow.com/questions/228544/how-to-tell-if-a-string-is-not-defined-in-a-bash-shell-script/230593#230593 + +if [ "${DB_NAME_CUSTOM+xxx}" ] + then + echo "Default DB_NAME ($DB_NAME) overridden: $DB_NAME_CUSTOM" + DB_NAME=$DB_NAME_CUSTOM +fi + +if [ "${DB_USER_CUSTOM+xxx}" ] + then + echo "Default DB_USER ($DB_USER) overridden: $DB_USER_CUSTOM" + DB_USER=$DB_USER_CUSTOM +fi + +if [ "${DB_PASS_CUSTOM+xxx}" ] + then + echo "Default DB_PASS ($DB_PASS) overridden: $DB_PASS_CUSTOM" + DB_PASS=$DB_PASS_CUSTOM +fi + +#echo "end" +#exit + +## +# External dependencies +PGSQL_DRIVER_URL=http://jdbc.postgresql.org/download/postgresql-9.3-1100.jdbc41.jar + +if [ "$SUDO_USER" = "vagrant" ] + then + echo "We are running in a Vagrant environment." + cat /etc/redhat-release + # Choosing all lower case indentifiers for DB_NAME and DB_USER for this reason: + # + # Quoting an identifier also makes it case-sensitive, whereas unquoted names + # are always folded to lower case. For example, the identifiers FOO, foo, and + # "foo" are considered the same by PostgreSQL, but "Foo" and "FOO" are + # different from these three and each other. (The folding of unquoted names + # to lower case in PostgreSQL is incompatible with the SQL standard, which + # says that unquoted names should be folded to upper case. Thus, foo should + # be equivalent to "FOO" not "foo" according to the standard. If you want to + # write portable applications you are advised to always quote a particular + # name or never quote it.) -- + # http://www.postgresql.org/docs/9.3/static/sql-syntax-lexical.html + DB_NAME=dataverse_db + DB_USER=dataverse_app + DB_PASS=secret + echo "Configuring EPEL Maven repo " + cd /etc/yum.repos.d + wget http://repos.fedorapeople.org/repos/dchen/apache-maven/epel-apache-maven.repo + cd + echo "Installing dependencies via yum" + yum install -y -q java-1.7.0-openjdk-devel postgresql-server apache-maven httpd mod_ssl + rpm -q postgresql-server + echo "Starting PostgreSQL" + chkconfig postgresql on + /sbin/service postgresql initdb + cp -a /var/lib/pgsql/data/pg_hba.conf /var/lib/pgsql/data/pg_hba.conf.orig + sed -i -e 's/ident$/trust/' /var/lib/pgsql/data/pg_hba.conf + /sbin/service postgresql start + POSTGRES_USER=postgres + echo "Creating database user $DB_USER" + su $POSTGRES_USER -s /bin/sh -c "psql -c \"CREATE ROLE \"$DB_USER\" UNENCRYPTED PASSWORD '$DB_PASS' NOSUPERUSER CREATEDB CREATEROLE NOINHERIT LOGIN\"" + #su $POSTGRES_USER -s /bin/sh -c "psql -c '\du'" + echo "Creating database $DB_NAME" + su $POSTGRES_USER -s /bin/sh -c "psql -c 'CREATE DATABASE \"$DB_NAME\" WITH OWNER = \"$DB_USER\"'" + GLASSFISH_USER=glassfish + echo "Ensuring Unix user '$GLASSFISH_USER' exists" + useradd $GLASSFISH_USER || : + GLASSFISH_ZIP=`ls /downloads/glassfish*zip` + GLASSFISH_USER_HOME=~glassfish + echo "Copying $GLASSFISH_ZIP to $GLASSFISH_USER_HOME and unzipping" + su $GLASSFISH_USER -s /bin/sh -c "cp $GLASSFISH_ZIP $GLASSFISH_USER_HOME" + su $GLASSFISH_USER -s /bin/sh -c "cd $GLASSFISH_USER_HOME && unzip -q $GLASSFISH_ZIP" + DEFAULT_GLASSFISH_ROOT=$GLASSFISH_USER_HOME/glassfish4 + su $GLASSFISH_USER -s /bin/sh -c "/scripts/installer/glassfish-setup.sh" +fi + + +# Set the scripts parameters (if needed) +if [ -z "${GLASSFISH_ROOT+xxx}" ] + then + echo setting GLASSFISH_ROOT to $DEFAULT_GLASSFISH_ROOT + GLASSFISH_ROOT=$DEFAULT_GLASSFISH_ROOT; export GLASSFISH_ROOT +fi +if [ ! -d "$GLASSFISH_ROOT" ] + then + echo Glassfish root '$GLASSFISH_ROOT' does not exist + exit 1 +fi +GLASSFISH_BIN_DIR=$GLASSFISH_ROOT/bin + +if [ -z "${DOMAIN+xxx}" ] + then + echo setting DOMAIN to $DEFAULT_DOMAIN + DOMAIN=$DEFAULT_DOMAIN + # setting the environmental variable GLASSFISH_DOMAIN, + # for the ../installer/glassfish-setup.sh script, that runs + # all the required asadmin comands + GLASSFISH_DOMAIN=$DOMAIN; export GLASSFISH_DOMAIN +fi +DOMAIN_DIR=$GLASSFISH_ROOT/glassfish/domains/$DOMAIN +if [ ! -d "$DOMAIN_DIR" ] + then + echo Domain directory '$DOMAIN_DIR' does not exist + exit 2 +fi +if [ -z "$ASADMIN_OPTS" ] + then + ASADMIN_OPTS=$DEFAULT_ASADMIN_OPTS; export ASADMIN_OPTS +fi + +echo "Setting up your glassfish4 to support Dataverse" +echo "Glassfish directory: "$GLASSFISH_ROOT +echo "Domain directory: "$DOMAIN_DIR + +### +# getting the postgres driver +DOMAIN_LIB=$DOMAIN_DIR/lib +if ! grep -qs postgres $DOMAIN_LIB/* + then + DRIVER_NAME=$(echo $PGSQL_DRIVER_URL | tr / \\n | tail -n1) + echo Downloading postgresql driver '$DRIVER_NAME' + wget $PGSQL_DRIVER_URL -O $DOMAIN_LIB/$DRIVER_NAME + else + echo postgresql driver already installed. +fi + +if [ "$SUDO_USER" = "vagrant" ] + then + /scripts/installer/glassfish-setup.sh + echo "Done configuring Vagrant environment" + exit 0 +fi + +### +# Move to the glassfish dir +pushd $GLASSFISH_BIN_DIR + +### +# take the domain up, if needed. +DOMAIN_DOWN=$(./asadmin list-domains | grep "$DOMAIN " | grep "not running") +if [ $(echo $DOMAIN_DOWN|wc -c) -ne 1 ]; + then + echo Trying to start domain $DOMAIN up... + ./asadmin $ASADMIN_OPTS start-domain $DOMAIN + else + echo domain running +fi + +# ONCE AGAIN, ASADMIN COMMANDS BELOW HAVE ALL BEEN MOVED INTO scripts/installer/glassfish-setup.sh + +# TODO: diagnostics + +### +# Clean up +popd + +echo "Glassfish setup complete" +date +
