Mercurial > hg > LGDataverses
comparison 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 |
comparison
equal
deleted
inserted
replaced
| 9:5926d6419569 | 10:a50cf11e5178 |
|---|---|
| 1 #!/bin/bash | |
| 2 # STOP! | |
| 3 # DO NOT ADD MORE ASADMIN COMMANDS TO THIS SCRIPT! | |
| 4 # IF YOU NEED TO ADD MORE GLASSFISH CONFIG SETTINGS, ADD THEM | |
| 5 # TO THE ../installer/glassfish-setup.sh SCRIPT. | |
| 6 # I'M ASSUMING THAT WE'LL WANT TO CONTINUE MAINTAINING THIS SCRIPT, | |
| 7 # (FOR VAGRANT SETUPS, etc.?); IT SHOULD STILL BE WORKING, BY | |
| 8 # CALLING THE NEW SCRIPT ABOVE - SO NO NEED TO DUPLICATE THE ASADMIN | |
| 9 # COMMANDS HERE. | |
| 10 # FROM NOW ON, ONLY NON-ASADMIN CONFIGURATION SHOULD GO INTO THIS | |
| 11 # SCRIPT. (which makes the name especially misleading - but I didn't | |
| 12 # want to change it, in case other scripts are calling it by name!) | |
| 13 # -Leonid 4.0 beta | |
| 14 | |
| 15 # This is a setup script for setting up Glassfish 4 to run Dataverse | |
| 16 # The script was tested on Mac OS X.9 | |
| 17 # ASSUMPTIONS | |
| 18 # * Script has to run locally (i.e. on the machine that hosts the server) | |
| 19 # * Internet connectivity is assumed, in order to get the postgresql driver. | |
| 20 | |
| 21 ## | |
| 22 # Default values - Change to suit your machine. | |
| 23 DEFAULT_GLASSFISH_ROOT=/Applications/NetBeans/glassfish-4.0 | |
| 24 DEFAULT_DOMAIN=domain1 | |
| 25 DEFAULT_ASADMIN_OPTS=" " | |
| 26 | |
| 27 ### | |
| 28 # Database values. Update as needed. | |
| 29 # Note: DB_USER "dvnApp" is case-sensitive and later used in "scripts/database/reference_data.sql" | |
| 30 # | |
| 31 DB_PORT=5432; export DB_PORT | |
| 32 DB_HOST=localhost; export DB_HOST | |
| 33 DB_NAME=dvndb; export DB_NAME | |
| 34 DB_USER=dvnApp; export DB_USER | |
| 35 DB_PASS=dvnAppPass; export DB_PASS | |
| 36 | |
| 37 ### | |
| 38 # Rserve configuration: | |
| 39 RSERVE_HOST=localhost; export RSERVE_HOST | |
| 40 RSERVE_PORT=6311; export RSERVE_PORT | |
| 41 RSERVE_USER=rserve; export RSERVE_USER | |
| 42 RSERVE_PASS=rserve; export RSERVE_PASS | |
| 43 | |
| 44 ### | |
| 45 # Other configuration values: | |
| 46 MEM_HEAP_SIZE=1024; export MEM_HEAP_SIZE | |
| 47 HOST_ADDRESS=localhost; export HOST_ADDRESS | |
| 48 SMTP_SERVER=mail.hmdc.harvard.edu; export SMTP_SERVER | |
| 49 FILES_DIR=${HOME}/dataverse/files; export FILES_DIR | |
| 50 | |
| 51 ### End of default configuration values. | |
| 52 | |
| 53 # "${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 | |
| 54 | |
| 55 if [ "${DB_NAME_CUSTOM+xxx}" ] | |
| 56 then | |
| 57 echo "Default DB_NAME ($DB_NAME) overridden: $DB_NAME_CUSTOM" | |
| 58 DB_NAME=$DB_NAME_CUSTOM | |
| 59 fi | |
| 60 | |
| 61 if [ "${DB_USER_CUSTOM+xxx}" ] | |
| 62 then | |
| 63 echo "Default DB_USER ($DB_USER) overridden: $DB_USER_CUSTOM" | |
| 64 DB_USER=$DB_USER_CUSTOM | |
| 65 fi | |
| 66 | |
| 67 if [ "${DB_PASS_CUSTOM+xxx}" ] | |
| 68 then | |
| 69 echo "Default DB_PASS ($DB_PASS) overridden: $DB_PASS_CUSTOM" | |
| 70 DB_PASS=$DB_PASS_CUSTOM | |
| 71 fi | |
| 72 | |
| 73 #echo "end" | |
| 74 #exit | |
| 75 | |
| 76 ## | |
| 77 # External dependencies | |
| 78 PGSQL_DRIVER_URL=http://jdbc.postgresql.org/download/postgresql-9.3-1100.jdbc41.jar | |
| 79 | |
| 80 if [ "$SUDO_USER" = "vagrant" ] | |
| 81 then | |
| 82 echo "We are running in a Vagrant environment." | |
| 83 cat /etc/redhat-release | |
| 84 # Choosing all lower case indentifiers for DB_NAME and DB_USER for this reason: | |
| 85 # | |
| 86 # Quoting an identifier also makes it case-sensitive, whereas unquoted names | |
| 87 # are always folded to lower case. For example, the identifiers FOO, foo, and | |
| 88 # "foo" are considered the same by PostgreSQL, but "Foo" and "FOO" are | |
| 89 # different from these three and each other. (The folding of unquoted names | |
| 90 # to lower case in PostgreSQL is incompatible with the SQL standard, which | |
| 91 # says that unquoted names should be folded to upper case. Thus, foo should | |
| 92 # be equivalent to "FOO" not "foo" according to the standard. If you want to | |
| 93 # write portable applications you are advised to always quote a particular | |
| 94 # name or never quote it.) -- | |
| 95 # http://www.postgresql.org/docs/9.3/static/sql-syntax-lexical.html | |
| 96 DB_NAME=dataverse_db | |
| 97 DB_USER=dataverse_app | |
| 98 DB_PASS=secret | |
| 99 echo "Configuring EPEL Maven repo " | |
| 100 cd /etc/yum.repos.d | |
| 101 wget http://repos.fedorapeople.org/repos/dchen/apache-maven/epel-apache-maven.repo | |
| 102 cd | |
| 103 echo "Installing dependencies via yum" | |
| 104 yum install -y -q java-1.7.0-openjdk-devel postgresql-server apache-maven httpd mod_ssl | |
| 105 rpm -q postgresql-server | |
| 106 echo "Starting PostgreSQL" | |
| 107 chkconfig postgresql on | |
| 108 /sbin/service postgresql initdb | |
| 109 cp -a /var/lib/pgsql/data/pg_hba.conf /var/lib/pgsql/data/pg_hba.conf.orig | |
| 110 sed -i -e 's/ident$/trust/' /var/lib/pgsql/data/pg_hba.conf | |
| 111 /sbin/service postgresql start | |
| 112 POSTGRES_USER=postgres | |
| 113 echo "Creating database user $DB_USER" | |
| 114 su $POSTGRES_USER -s /bin/sh -c "psql -c \"CREATE ROLE \"$DB_USER\" UNENCRYPTED PASSWORD '$DB_PASS' NOSUPERUSER CREATEDB CREATEROLE NOINHERIT LOGIN\"" | |
| 115 #su $POSTGRES_USER -s /bin/sh -c "psql -c '\du'" | |
| 116 echo "Creating database $DB_NAME" | |
| 117 su $POSTGRES_USER -s /bin/sh -c "psql -c 'CREATE DATABASE \"$DB_NAME\" WITH OWNER = \"$DB_USER\"'" | |
| 118 GLASSFISH_USER=glassfish | |
| 119 echo "Ensuring Unix user '$GLASSFISH_USER' exists" | |
| 120 useradd $GLASSFISH_USER || : | |
| 121 GLASSFISH_ZIP=`ls /downloads/glassfish*zip` | |
| 122 GLASSFISH_USER_HOME=~glassfish | |
| 123 echo "Copying $GLASSFISH_ZIP to $GLASSFISH_USER_HOME and unzipping" | |
| 124 su $GLASSFISH_USER -s /bin/sh -c "cp $GLASSFISH_ZIP $GLASSFISH_USER_HOME" | |
| 125 su $GLASSFISH_USER -s /bin/sh -c "cd $GLASSFISH_USER_HOME && unzip -q $GLASSFISH_ZIP" | |
| 126 DEFAULT_GLASSFISH_ROOT=$GLASSFISH_USER_HOME/glassfish4 | |
| 127 su $GLASSFISH_USER -s /bin/sh -c "/scripts/installer/glassfish-setup.sh" | |
| 128 fi | |
| 129 | |
| 130 | |
| 131 # Set the scripts parameters (if needed) | |
| 132 if [ -z "${GLASSFISH_ROOT+xxx}" ] | |
| 133 then | |
| 134 echo setting GLASSFISH_ROOT to $DEFAULT_GLASSFISH_ROOT | |
| 135 GLASSFISH_ROOT=$DEFAULT_GLASSFISH_ROOT; export GLASSFISH_ROOT | |
| 136 fi | |
| 137 if [ ! -d "$GLASSFISH_ROOT" ] | |
| 138 then | |
| 139 echo Glassfish root '$GLASSFISH_ROOT' does not exist | |
| 140 exit 1 | |
| 141 fi | |
| 142 GLASSFISH_BIN_DIR=$GLASSFISH_ROOT/bin | |
| 143 | |
| 144 if [ -z "${DOMAIN+xxx}" ] | |
| 145 then | |
| 146 echo setting DOMAIN to $DEFAULT_DOMAIN | |
| 147 DOMAIN=$DEFAULT_DOMAIN | |
| 148 # setting the environmental variable GLASSFISH_DOMAIN, | |
| 149 # for the ../installer/glassfish-setup.sh script, that runs | |
| 150 # all the required asadmin comands | |
| 151 GLASSFISH_DOMAIN=$DOMAIN; export GLASSFISH_DOMAIN | |
| 152 fi | |
| 153 DOMAIN_DIR=$GLASSFISH_ROOT/glassfish/domains/$DOMAIN | |
| 154 if [ ! -d "$DOMAIN_DIR" ] | |
| 155 then | |
| 156 echo Domain directory '$DOMAIN_DIR' does not exist | |
| 157 exit 2 | |
| 158 fi | |
| 159 if [ -z "$ASADMIN_OPTS" ] | |
| 160 then | |
| 161 ASADMIN_OPTS=$DEFAULT_ASADMIN_OPTS; export ASADMIN_OPTS | |
| 162 fi | |
| 163 | |
| 164 echo "Setting up your glassfish4 to support Dataverse" | |
| 165 echo "Glassfish directory: "$GLASSFISH_ROOT | |
| 166 echo "Domain directory: "$DOMAIN_DIR | |
| 167 | |
| 168 ### | |
| 169 # getting the postgres driver | |
| 170 DOMAIN_LIB=$DOMAIN_DIR/lib | |
| 171 if ! grep -qs postgres $DOMAIN_LIB/* | |
| 172 then | |
| 173 DRIVER_NAME=$(echo $PGSQL_DRIVER_URL | tr / \\n | tail -n1) | |
| 174 echo Downloading postgresql driver '$DRIVER_NAME' | |
| 175 wget $PGSQL_DRIVER_URL -O $DOMAIN_LIB/$DRIVER_NAME | |
| 176 else | |
| 177 echo postgresql driver already installed. | |
| 178 fi | |
| 179 | |
| 180 if [ "$SUDO_USER" = "vagrant" ] | |
| 181 then | |
| 182 /scripts/installer/glassfish-setup.sh | |
| 183 echo "Done configuring Vagrant environment" | |
| 184 exit 0 | |
| 185 fi | |
| 186 | |
| 187 ### | |
| 188 # Move to the glassfish dir | |
| 189 pushd $GLASSFISH_BIN_DIR | |
| 190 | |
| 191 ### | |
| 192 # take the domain up, if needed. | |
| 193 DOMAIN_DOWN=$(./asadmin list-domains | grep "$DOMAIN " | grep "not running") | |
| 194 if [ $(echo $DOMAIN_DOWN|wc -c) -ne 1 ]; | |
| 195 then | |
| 196 echo Trying to start domain $DOMAIN up... | |
| 197 ./asadmin $ASADMIN_OPTS start-domain $DOMAIN | |
| 198 else | |
| 199 echo domain running | |
| 200 fi | |
| 201 | |
| 202 # ONCE AGAIN, ASADMIN COMMANDS BELOW HAVE ALL BEEN MOVED INTO scripts/installer/glassfish-setup.sh | |
| 203 | |
| 204 # TODO: diagnostics | |
| 205 | |
| 206 ### | |
| 207 # Clean up | |
| 208 popd | |
| 209 | |
| 210 echo "Glassfish setup complete" | |
| 211 date | |
| 212 |
