5 INSTALL_PATH=/var/www/arvados-sso
6 RELEASE_PATH=$INSTALL_PATH/current
7 SHARED_PATH=$INSTALL_PATH/shared
8 CONFIG_PATH=/etc/arvados/sso
9 PACKAGE_NAME=arvados-sso-server
14 setup_ruby_environment() {
15 if [ -s "$HOME/.rvm/scripts/rvm" ] ; then
17 elif [ -s "/usr/local/rvm/scripts/rvm" ] ; then
23 if [ "$using_rvm" = "true" ]; then
24 COMMAND_PREFIX="/usr/local/rvm/bin/rvm-exec default"
31 WEB_SERVICE=${WEB_SERVICE:-$(service --status-all 2>/dev/null \
32 | grep -Eo '\bnginx|httpd[^[:space:]]*' || true)}
33 if [ -z "$WEB_SERVICE" ]; then
36 Warning: web service (Nginx or Apache) not found.
38 To override, set the WEB_SERVICE environment variable to the name of the service
39 hosting the Rails server. Alternativey, install nginx.
41 For Debian-based systems, then reconfigure this package with dpkg-reconfigure.
43 For RPM-based systems, then reinstall this package.
46 elif [ "$WEB_SERVICE" != "$(echo "$WEB_SERVICE" | head -n 1)" ]; then
47 WEB_SERVICE=$(echo "$WEB_SERVICE" | head -n 1)
49 Warning: multiple web services found. Choosing the first one ($WEB_SERVICE).
51 To override, set the WEB_SERVICE environment variable to the name of the service
52 hosting the Rails server.
54 For Debian-based systems, then reconfigure this package with dpkg-reconfigure.
56 For RPM-based systems, then reinstall this package.
61 if [ -e /etc/redhat-release ]; then
62 if [ "$WEB_SERVICE" = "nginx" ]; then
65 WWW_OWNER=apache:apache
68 # Assume we're on a Debian-based system for now.
69 # Both Apache and Nginx run as www-data by default.
70 WWW_OWNER=www-data:www-data
74 echo "Assumption: $WEB_SERVICE is configured to serve your SSO server URL from"
76 echo "Assumption: configuration files are in $CONFIG_PATH"
77 echo "Assumption: $WEB_SERVICE and passenger run as $WWW_OWNER"
80 echo -n "Symlinking files from $CONFIG_PATH ..."
82 if [ ! -f $CONFIG_PATH/database.yml ]; then
84 cp $RELEASE_PATH/config/database.yml.example $CONFIG_PATH/database.yml
88 if [ ! -h $RELEASE_PATH/config/database.yml ]; then
89 ln -s $CONFIG_PATH/database.yml $RELEASE_PATH/config/database.yml
92 if [ ! -f $CONFIG_PATH/production.rb ]; then
94 cp $RELEASE_PATH/config/environments/production.rb.example $CONFIG_PATH/production.rb
97 if [ ! -h $RELEASE_PATH/config/environments/production.rb ]; then
98 ln -s $CONFIG_PATH/production.rb $RELEASE_PATH/config/environments/production.rb
101 if [ ! -f $CONFIG_PATH/application.yml ]; then
102 mkdir -p $CONFIG_PATH
103 cp $RELEASE_PATH/config/application.yml.example $CONFIG_PATH/application.yml
107 if [ ! -h $RELEASE_PATH/config/application.yml ]; then
108 ln -s $CONFIG_PATH/application.yml $RELEASE_PATH/config/application.yml
113 # Before we do anything else, make sure some directories and files are in place
114 if [ ! -e $SHARED_PATH/log ]; then mkdir -p $SHARED_PATH/log; fi
115 if [ ! -e $RELEASE_PATH/tmp ]; then mkdir -p $RELEASE_PATH/tmp; fi
116 if [ ! -e $RELEASE_PATH/log ]; then ln -s $SHARED_PATH/log $RELEASE_PATH/log; fi
117 if [ ! -e $SHARED_PATH/log/production.log ]; then touch $SHARED_PATH/log/production.log; fi
120 export RAILS_ENV=production
122 echo "Making sure bundle is installed ..."
124 which bundle > /dev/null
125 if [[ "$?" != "0" ]]; then
126 $COMMAND_PREFIX gem install bundle
131 echo -n "Running bundle install ..."
132 $COMMAND_PREFIX bundle install --path $SHARED_PATH/vendor_bundle --quiet || exit $?
135 echo -n "Ensuring directory and file permissions ..."
136 # Ensure correct ownership of a few files
137 chown "$WWW_OWNER" $RELEASE_PATH/config/environment.rb
138 chown "$WWW_OWNER" $RELEASE_PATH/config.ru
139 chown "$WWW_OWNER" $RELEASE_PATH/config/database.yml
140 chown "$WWW_OWNER" $RELEASE_PATH/Gemfile.lock
141 chown -R "$WWW_OWNER" $RELEASE_PATH/tmp
142 chown -R "$WWW_OWNER" $SHARED_PATH/log
143 chown "$WWW_OWNER" $RELEASE_PATH/db/schema.rb
144 chmod 644 $SHARED_PATH/log/*
148 DB_MIGRATE_STATUS=`$COMMAND_PREFIX bundle exec rake db:migrate:status 2>&1`
149 DB_MIGRATE_STATUS_CODE=$?
152 if echo $DB_MIGRATE_STATUS | grep 'Schema migrations table does not exist yet.' >/dev/null; then
153 # The database exists, but the migrations table doesn't.
154 echo -n "Setting up database ..."
155 $COMMAND_PREFIX bundle exec rake db:schema:load db:seed || exit $?
157 elif echo $DB_MIGRATE_STATUS | grep '^database: ' >/dev/null; then
158 echo -n "Running db:migrate ..."
159 $COMMAND_PREFIX bundle exec rake db:migrate || exit $?
161 elif echo $DB_MIGRATE_STATUS | grep 'database .* does not exist' >/dev/null; then
162 echo -n "Running db:setup ..."
164 $COMMAND_PREFIX bundle exec rake db:setup 2>/dev/null
165 if [ "$?" = "0" ]; then
169 echo "Warning: unable to set up database." >&2
174 echo "Warning: Database is not ready to set up. Skipping database setup." >&2
178 echo -n "Precompiling assets ..."
179 # precompile assets; thankfully this does not take long
180 if [ "$APPLICATION_READY" = "1" ]; then
182 $COMMAND_PREFIX bundle exec rake assets:precompile -q -s 2>/dev/null
183 if [ "$?" = "0" ]; then
193 chown -R "$WWW_OWNER" $RELEASE_PATH/tmp
195 if [ ! -z "$WEB_SERVICE" ]; then
196 echo -n "Restarting $WEB_SERVICE ..."
197 service "$WEB_SERVICE" restart >/dev/null || exit $?
202 if [ "$1" = configure ]; then
203 # This is a debian-based system
204 setup_ruby_environment
206 elif [ "$1" = "0" ] || [ "$1" = "1" ] || [ "$1" = "2" ]; then
207 # This is an rpm-based system
208 setup_ruby_environment
212 if [ "$DATABASE_READY" = "0" ]; then
217 The $PACKAGE_NAME package was not configured completely because
218 $CONFIG_PATH/database.yml needs some tweaking. Please refer to the
219 documentation at http://doc.arvados.org/install/install-sso.html#configure for
222 When database.yml has been modified, reconfigure or reinstall this package.
226 if [ "$APPLICATION_READY" = "0" ]; then
231 The $PACKAGE_NAME package was not configured completely because
232 $CONFIG_PATH/application.yml needs some tweaking. Please refer to the
233 documentation at http://doc.arvados.org/install/install-sso.html#configure for
236 When application.yml has been modified, reconfigure or reinstall this package.