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
10 VERSION=`cat $RELEASE_PATH/git-commit.version`
12 setup_ruby_environment() {
13 if [ -s "$HOME/.rvm/scripts/rvm" ] ; then
15 elif [ -s "/usr/local/rvm/scripts/rvm" ] ; then
21 if [ "$using_rvm" = "true" ]; then
22 COMMAND_PREFIX="/usr/local/rvm/bin/rvm-exec default"
28 # arguments: <major version> <most recently configured package version>
32 [ "$VERSION" ] || { echo "Error: configure_version: need version parameter" >&2; exit 1; }
34 if [ -e /etc/redhat-release ]; then
37 # Assume we're on a Debian-based system for now.
38 WWW_OWNER=www-data:www-data
41 NGINX_SERVICE=${NGINX_SERVICE:-$(service --status-all 2>/dev/null \
42 | grep -Eo '\bnginx[^[:space:]]*' || true)}
43 if [ -z "$NGINX_SERVICE" ]; then
45 Error: nginx service not found. Aborting.
47 Set NGINX_SERVICE to the name of the service hosting the Rails server
48 and reconfigure this package with dpkg-reconfigure.
52 elif [ "$NGINX_SERVICE" != "$(echo "$NGINX_SERVICE" | head -n 1)" ]; then
54 Error: multiple nginx services found. Aborting.
56 Set NGINX_SERVICE to the name of the service hosting the Rails server
57 and reconfigure this package with dpkg-reconfigure.
64 echo "Assumption: $NGINX_SERVICE is configured to serve your SSO server URL from"
65 echo " /var/www/arvados-sso/current"
66 echo "Assumption: configuration files are in /etc/arvados/sso/"
67 echo "Assumption: $NGINX_SERVICE and passenger run as $WWW_OWNER"
70 echo -n "Symlinking files from $CONFIG_PATH ..."
72 if [ ! -h $RELEASE_PATH/config/database.yml ]; then
73 ln -s $CONFIG_PATH/database.yml $RELEASE_PATH/config/database.yml
75 if [ ! -h $RELEASE_PATH/config/environments/production.rb ]; then
76 if [ ! -f $CONFIG_PATH/production.rb ]; then
77 cp $RELEASE_PATH/config/environments/production.rb.example $CONFIG_PATH/production.rb
79 ln -s $CONFIG_PATH/production.rb $RELEASE_PATH/config/environments/production.rb
81 if [ ! -h $RELEASE_PATH/config/application.yml ]; then
82 ln -s $CONFIG_PATH/application.yml $RELEASE_PATH/config/application.yml
86 # Before we do anything else, make sure some directories and files are in place
87 if [ ! -e $SHARED_PATH/log ]; then mkdir -p $SHARED_PATH/log; fi
88 if [ ! -e $RELEASE_PATH/tmp ]; then mkdir -p $RELEASE_PATH/tmp; fi
89 if [ ! -e $RELEASE_PATH/log ]; then ln -s $SHARED_PATH/log $RELEASE_PATH/log; fi
90 if [ ! -e $SHARED_PATH/log/production.log ]; then touch $SHARED_PATH/log/production.log; fi
93 export RAILS_ENV=production
95 echo -n "Running bundle install ..."
96 $COMMAND_PREFIX bundle install --path $SHARED_PATH/vendor_bundle --quiet || exit $?
99 echo -n "Ensuring directory and file permissions ..."
100 # Ensure correct ownership of a few files
101 chown "$WWW_OWNER" $RELEASE_PATH/config/environment.rb
102 chown "$WWW_OWNER" $RELEASE_PATH/config.ru
103 chown "$WWW_OWNER" $RELEASE_PATH/config/database.yml
104 chown "$WWW_OWNER" $RELEASE_PATH/Gemfile.lock
105 chown -R "$WWW_OWNER" $RELEASE_PATH/tmp
106 chown -R "$WWW_OWNER" $SHARED_PATH/log
107 chown "$WWW_OWNER" $RELEASE_PATH/db/schema.rb
108 chmod 644 $SHARED_PATH/log/*
111 ls -laF $RELEASE_PATH/tmp
113 # If we use `grep -q`, rake will write a backtrace on EPIPE.
114 if $COMMAND_PREFIX bundle exec rake db:migrate:status | grep '^database: ' >/dev/null; then
115 echo -n "Running db:migrate ..."
116 $COMMAND_PREFIX bundle exec rake db:migrate || exit $?
117 elif [ 0 -eq ${PIPESTATUS[0]} ]; then
118 # The database exists, but the migrations table doesn't.
119 echo -n "Setting up database ..."
120 $COMMAND_PREFIX bundle exec rake db:schema:load db:seed || exit $?
122 echo "Error: Database is not ready to set up. Aborting." >&2
127 ls -laF $RELEASE_PATH/tmp
129 echo -n "Precompiling assets ..."
130 # precompile assets; thankfully this does not take long
131 $COMMAND_PREFIX bundle exec rake assets:precompile -q -s || exit $?
132 chown -R "$WWW_OWNER" $RELEASE_PATH/tmp
135 ls -laF $RELEASE_PATH/tmp
137 echo -n "Restarting nginx ..."
138 service "$NGINX_SERVICE" restart || exit $?
143 if [ "$1" = configure ]; then
144 setup_ruby_environment
145 configure_version $VERSION "$2"