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