From 2256d0d4e95d7c4b0be2c426869af06bd9a0c21a Mon Sep 17 00:00:00 2001 From: ianb Date: Thu, 16 Dec 2010 18:31:08 +0000 Subject: [PATCH] Rename mir-prepare, mir-setup, mir-choose-java to mir-*.lenny. Copied them to mir-*.squeeze, and updated them to work with Debian Squeeze. --- .../{mir-choose-java => mir-choose-java.lenny} | 0 scripts/mir-setup/mir-choose-java.squeeze | 142 ++++++++ .../mir-setup/{mir-prepare => mir-prepare.lenny} | 5 +- scripts/mir-setup/mir-prepare.squeeze | 188 ++++++++++ scripts/mir-setup/{mir-setup => mir-setup.lenny} | 2 +- scripts/mir-setup/mir-setup.squeeze | 390 +++++++++++++++++++++ 6 files changed, 724 insertions(+), 3 deletions(-) rename scripts/mir-setup/{mir-choose-java => mir-choose-java.lenny} (100%) create mode 100755 scripts/mir-setup/mir-choose-java.squeeze rename scripts/mir-setup/{mir-prepare => mir-prepare.lenny} (96%) create mode 100755 scripts/mir-setup/mir-prepare.squeeze rename scripts/mir-setup/{mir-setup => mir-setup.lenny} (99%) create mode 100755 scripts/mir-setup/mir-setup.squeeze diff --git a/scripts/mir-setup/mir-choose-java b/scripts/mir-setup/mir-choose-java.lenny similarity index 100% rename from scripts/mir-setup/mir-choose-java rename to scripts/mir-setup/mir-choose-java.lenny diff --git a/scripts/mir-setup/mir-choose-java.squeeze b/scripts/mir-setup/mir-choose-java.squeeze new file mode 100755 index 00000000..2560f97e --- /dev/null +++ b/scripts/mir-setup/mir-choose-java.squeeze @@ -0,0 +1,142 @@ +#!/bin/sh +# ianb@erislabs.net 20081202 +# configure a mir system for sun or gcj java +# checkpoint code taken from zak's mir-setup + +set -e + +# NAME is used when called from mir-prepare +NAME="" + +CUR_CHECKPOINT=0 +checkpoint() +{ + CUR_CHECKPOINT=$(($CUR_CHECKPOINT + 1)) + if [ -n "$START_CHECKPOINT" ]; then + if [ "$CUR_CHECKPOINT" -lt "$START_CHECKPOINT" ]; then + echo "${NAME}Skipping checkpoint $CUR_CHECKPOINT: $@" + unset RUNNING + else + echo "${NAME}Running from checkpoint $CUR_CHECKPOINT: $@" + RUNNING=1 + fi + else + echo "${NAME}Checkpoint $CUR_CHECKPOINT: $@" + RUNNING=1 + fi +} + +optdie() +{ + echo >&2 "$@"; + echo >&2 "Try $PROG --help"; + exit 1; +} + +usage() { + echo >&2 "Usage: $PROG [options] sun|gcj" + echo >&2 " Configures java implementation to use with mir" + echo >&2 " -d|--debug Debugging output, including 'set -x' shell trace" + echo >&2 " -p|--checkpoint Run from specified checkpoint after failed run" + echo >&2 " sun Use Sun Java (non-free)" + echo >&2 " gcj Use the GNU Java Compiler" +} + +if [ $# -lt 1 ] +then + usage + exit 1 +fi + +while [ $# != 0 ]; do + case "$1" in + -d|--debug) set -x; DEBUG=1 ;; + -p|--checkpoint) shift; START_CHECKPOINT="$1" ;; + --subprocess) NAME="[mir-choose-java] " ;; + -h|-?|--help) usage; exit 0 ;; + -*) optdie "$PROG: unknown option $1" ;; + sun) JAVA=sun ; break;; + gcj) JAVA=gcj ; break;; + *) optdie "$PROG: unexpected argument '$1'" ;; + esac + shift +done + +if [ $JAVA = sun ] +then + JAVANAME=java-6-sun + PACKAGES="sun-java6-jdk sun-java6-jre" + RTPATH=/usr/lib/jvm/java-6-sun/jre/lib/rt.jar +else + JAVANAME=java-gcj + PACKAGES=gcj + RTPATH=/usr/lib/jvm/java-1.5.0-gcj-4.3-1.5.0.0/jre/lib/rt.jar +fi + +JAVAHOME="/usr/lib/jvm/$JAVANAME" + +if [ $JAVA = sun ] +then + checkpoint "Adding non-free archive for sun java" + if [ -n "$RUNNING" ] + then + perl -pi.bak -e \ + 'if(/^deb/ && !/security\.debian\.org/ && !/non-free/) { s/(main)/$1 contrib non-free/; }' \ + /etc/apt/sources.list + apt-get update + fi +else + # so checkpoint numbers don't differ + checkpoint "Skipping non-free archive configuration - gcj is in main" +fi + +checkpoint "Installing packages" +if [ -n "$RUNNING" ] +then + apt-get install $PACKAGES + echo "You probably want to do 'apt-get clean'" +fi + +checkpoint "Selecting JDK" +if [ -n "$RUNNING" ] +then + update-java-alternatives --set $JAVANAME || true +fi + +checkpoint "Configuring apache jakarta JVM" +if [ -n "$RUNNING" ] +then + if grep -q '^workers.java_home' /etc/libapache2-mod-jk/workers.properties + then + perl -pi.bak -e 's,workers.java_home.*,workers.java_home='"$JAVAHOME"',;' \ + /etc/libapache2-mod-jk/workers.properties + fi +fi + +checkpoint "Configuring tomcat JVM" +if [ -n "$RUNNING" ] +then + TOMCATDEFAULTS=/etc/default/tomcat6 + if grep -q '^#\?JAVA_HOME' $TOMCATDEFAULTS + then + perl -pi.bak -e 's,^\#?JAVA_HOME.*,JAVA_HOME='"$JAVAHOME"',;' $TOMCATDEFAULTS + else + echo "JAVA_HOME=$JAVAHOME" >> $TOMCATDEFAULTS + fi +fi + +checkpoint "Configuring /etc/mir-setup/lib/rt.jar symlink" +if [ -n "$RUNNING" ] +then + mkdir -p /etc/mir-setup/lib + ln -sf $RTPATH /etc/mir-setup/lib/rt.jar +fi + +checkpoint "Restarting tomcat and apache" +if [ -n "$RUNNING" ] +then + invoke-rc.d tomcat6 force-reload + invoke-rc.d apache2 force-reload +fi + +checkpoint "Finished!" diff --git a/scripts/mir-setup/mir-prepare b/scripts/mir-setup/mir-prepare.lenny similarity index 96% rename from scripts/mir-setup/mir-prepare rename to scripts/mir-setup/mir-prepare.lenny index ace2b820..8a1d0f37 100755 --- a/scripts/mir-setup/mir-prepare +++ b/scripts/mir-setup/mir-prepare.lenny @@ -1,7 +1,7 @@ #!/bin/sh # ianb@erislabs.net 20081122 # checkpoint code taken from zak's mir-setup -# $Id: mir-prepare,v 1.1.2.2 2009/01/18 04:43:02 ianb Exp $ +# $Id: mir-prepare.lenny,v 1.1.2.1 2010/12/16 18:31:08 ianb Exp $ set -e @@ -68,7 +68,8 @@ checkpoint "Installing mir-setup" if [ -n "$RUNNING" ] then mkdir -p /etc/mir-setup /usr/local/share/mir-setup - cp mir-setup mir-choose-java /usr/local/sbin + cp mir-setup.lenny /usr/local/sbin/mir-setup + cp mir-choose-java.lenny /usr/local/sbin/mir-choose-java cp munge_config_file.pl /usr/local/share/mir-setup CONFFILES="config config-examplesite config.properties-default env robots.txt site-httpd.conf site-ssl-dedicated-httpd.conf site-ssl-httpd-fragment.conf tomcat-manager.conf" (cd conf && cp $CONFFILES /etc/mir-setup) diff --git a/scripts/mir-setup/mir-prepare.squeeze b/scripts/mir-setup/mir-prepare.squeeze new file mode 100755 index 00000000..e4c0c538 --- /dev/null +++ b/scripts/mir-setup/mir-prepare.squeeze @@ -0,0 +1,188 @@ +#!/bin/sh +# ianb@erislabs.net 20081122 +# checkpoint code taken from zak's mir-setup +# $Id: mir-prepare.squeeze,v 1.1.2.1 2010/12/16 18:31:08 ianb Exp $ + +set -e + +CONFDIR="/etc/mir-setup" +PROG="`basename $0`" + +PACKAGES="openssh-server pwgen apache2 ant tomcat6 tomcat6-admin libservlet2.3-java imagemagick postgresql libjmagick6-java libapache2-mod-jk procmail cvs rsync sudo wget" + +CUR_CHECKPOINT=0 +checkpoint() +{ + CUR_CHECKPOINT=$(($CUR_CHECKPOINT + 1)) + if [ -n "$START_CHECKPOINT" ]; then + if [ "$CUR_CHECKPOINT" -lt "$START_CHECKPOINT" ]; then + echo "Skipping checkpoint $CUR_CHECKPOINT: $@" + unset RUNNING + else + echo "Running from checkpoint $CUR_CHECKPOINT: $@" + RUNNING=1 + fi + else + echo "Checkpoint $CUR_CHECKPOINT: $@" + RUNNING=1 + fi +} + +die() +{ + echo >&2 "$@"; + exit 1; +} + +optdie() +{ + echo >&2 "$@"; + echo >&2 "Try $PROG --help"; + exit 1; +} + +usage() { + echo >&2 "Usage: $PROG options" + echo >&2 " Prepares system for a mir install" + echo >&2 " Run before mir-setup" + echo >&2 " -d|--debug Debugging output, including 'set -x' shell trace" + echo >&2 " -p|--checkpoint Run from specified checkpoint after failed run" + echo >&2 " -j|--java sun|gcj Select Java implementation. Default: sun" +} + +# default +JAVA=sun +while [ $# != 0 ]; do + case "$1" in + -d|--debug) set -x; DEBUG=1 ;; + -p|--checkpoint) shift; START_CHECKPOINT="$1" ;; + -j|--java) shift; JAVA="$1" ;; + -h|-?|--help) usage; exit 0 ;; + -*) optdie "$PROG: unknown option $1" ;; + *) optdie "$PROG: unexpected argument '$1'" ;; + esac + shift +done + +checkpoint "Installing mir-setup" +if [ -n "$RUNNING" ] +then + mkdir -p /etc/mir-setup /usr/local/share/mir-setup + cp mir-setup.squeeze /usr/local/sbin/mir-setup + cp mir-choose-java.squeeze /usr/local/sbin/mir-choose-java + cp munge_config_file.pl /usr/local/share/mir-setup + CONFFILES="config config-examplesite config.properties-default env robots.txt site-httpd.conf site-ssl-dedicated-httpd.conf site-ssl-httpd-fragment.conf tomcat-manager.conf" + (cd conf && cp $CONFFILES /etc/mir-setup) +fi + +checkpoint "Installing packages" +if [ -n "$RUNNING" ] +then + apt-get install $PACKAGES + echo "You probably want to do 'apt-get clean'" +fi + +checkpoint "Selecting $JAVA java with mir-choose-java" +if [ -n "$RUNNING" ] +then + mir-choose-java --subprocess $JAVA +fi + +checkpoint "Enabling apache modules" +if [ -n "$RUNNING" ] +then + a2enmod headers ssl include deflate jk rewrite +fi + +checkpoint "Anonymise apache error log" +if [ -n "$RUNNING" ] +then + if [ ! -f /etc/apache2/conf.d/mir-anon-error-log ] + then + echo 'ErrorLog "| /usr/local/bin/strip-ips-from-apache-error-log /var/log/apache2/error.log"' > /etc/apache2/conf.d/mir-anon-error-log + fi + cp strip-ips-from-apache-error-log /usr/local/bin +fi + +checkpoint "Configure 'anon' log format" +if [ -n "$RUNNING" ] +then + if [ ! -f /etc/apache2/conf.d/mir-anon-access-log ] + then + echo 'LogFormat "noip %l %u %t \"%r\" %>s %b" anon' > /etc/apache2/conf.d/mir-anon-access-log + fi +fi + +checkpoint "Creating directory for mir sites in apache" +if [ -n "$RUNNING" ] +then + if [ ! -d /etc/apache2/mir-sites ] + then + mkdir /etc/apache2/mir-sites + fi +fi + +checkpoint "Enabling mir sites in apache" +if [ -n "$RUNNING" ] +then + if [ ! -f /etc/apache2/sites-available/mir-sites ] + then + echo "Include /etc/apache2/mir-sites/*.conf" > /etc/apache2/sites-available/mir-sites + a2ensite mir-sites + fi +fi + +checkpoint "Configuring apache jakarta workers" +if [ -n "$RUNNING" ] +then + if [ ! -f /etc/apache2/conf.d/mir-jk ] + then + echo "JkWorkersFile /etc/libapache2-mod-jk/workers.properties" > /etc/apache2/conf.d/mir-jk + fi +fi + +checkpoint "Configuring tomcat ajp13 listener" +if [ -n "$RUNNING" ] +then + perl -pi.bak -e "s/(.*Service\s*name=\"Catalina\".*)/\$1\n /;" /etc/tomcat6/server.xml +fi + +checkpoint "Disabling tomcat security (yes, this is bad)" +if [ -n "$RUNNING" ] +then + if ! grep -q "^TOMCAT6_SECURITY=no" /etc/default/tomcat6 + then + echo "TOMCAT6_SECURITY=no" >> /etc/default/tomcat6 + fi +fi + +checkpoint "Configuring password for tomcat manager" +if [ -n "$RUNNING" ] +then + if ! grep -q 'user username="mir-setup"' /etc/tomcat6/tomcat-users.xml + then + PASSWORD=$(pwgen -n 10 1) + ROLE=' ' + USERNAME=' ' + perl -pi.bak -e 's/(mir-setup:)[^@]+/$1'"$PASSWORD"'/;' /etc/mir-setup/tomcat-manager.conf + perl -pi.bak -e 's/()/$1\n'"$ROLE"'\n'"$USERNAME"'\n/;' /etc/tomcat6/tomcat-users.xml + fi +fi + +checkpoint "Creating directory for SSL certs" +if [ -n "$RUNNING" ] +then + if [ ! -d /etc/apache2/ssl ] + then + mkdir /etc/apache2/ssl + fi +fi + +checkpoint "Restarting apache and tomcat" +if [ -n "$RUNNING" ] +then + invoke-rc.d tomcat6 force-reload + invoke-rc.d apache2 force-reload +fi + +checkpoint "All done!" diff --git a/scripts/mir-setup/mir-setup b/scripts/mir-setup/mir-setup.lenny similarity index 99% rename from scripts/mir-setup/mir-setup rename to scripts/mir-setup/mir-setup.lenny index 401567ea..a3382bdf 100755 --- a/scripts/mir-setup/mir-setup +++ b/scripts/mir-setup/mir-setup.lenny @@ -1,5 +1,5 @@ #!/bin/bash -# $Id: mir-setup,v 1.2.2.2 2009/01/18 04:28:49 ianb Exp $ +# $Id: mir-setup.lenny,v 1.1.2.1 2010/12/16 18:31:08 ianb Exp $ # Script to install a new Mir site diff --git a/scripts/mir-setup/mir-setup.squeeze b/scripts/mir-setup/mir-setup.squeeze new file mode 100755 index 00000000..1e17a8db --- /dev/null +++ b/scripts/mir-setup/mir-setup.squeeze @@ -0,0 +1,390 @@ +#!/bin/bash +# $Id: mir-setup.squeeze,v 1.1.2.1 2010/12/16 18:31:08 ianb Exp $ + +# Script to install a new Mir site + +# Initial version -zak 2005-01-23 +# Moved to traven -zak 2005-04-05 +# Added to CVS -zak 2005-06-13 + +set -e + +CONFDIR="/etc/mir-setup" +SHAREDIR="/usr/local/share/mir-setup" +PROG="`basename $0`" + +die() +{ + echo >&2 "$@"; + exit 1; +} + +optdie() +{ + echo >&2 "$@"; + echo >&2 "Try $PROG --help"; + exit 1; +} + +manage() +{ + ( + source "$CONFDIR/tomcat-manager.conf" + + if [ -z "$TOMCAT_MANAGER_URL" ]; then die "No TOMCAT_MANAGER_URL specified"; fi + + echo "$TOMCAT_MANAGER_URL/html/$1?path=/$2" | wget -q -O /dev/null -i - + ) +} + +usage() { + echo >&2 "Usage: $PROG options" + echo >&2 + echo >&2 " Exactly one of the following is required:" + echo >&2 " -f|--config mir-setup site config file" + echo >&2 " --start start the given site's webapp" + echo >&2 " --stop stop the given site's webapp" + echo >&2 " --reload reload the given site's webapp" + echo >&2 + echo >&2 " Debugging options:" + echo >&2 " -d|--debug Debugging output, including 'set -x' shell trace" + echo >&2 " -p|--checkpoint Run from specified checkpoint after failed run" +} + +while [ $# != 0 ]; do + case "$1" in + -f|--config) shift; CONFIGFILE="$1" ;; + --start|--stop|--reload) ACTION="$1"; shift; SITE="$1" ;; + -d|--debug) set -x; DEBUG=1 ;; + -p|--checkpoint) shift; START_CHECKPOINT="$1" ;; + -h|-?|--help) usage; exit 0 ;; + -*) optdie "$PROG: unknown option $1" ;; + *) optdie "$PROG: unexpected argument '$1'" ;; + esac + shift +done + +case "$ACTION" in + --start|--stop|--reload) + if [ -n "$CONFIGFILE" ]; then optdie "$PROG: config file specified with $ACTION"; fi + echo -n "$ACTION"ing "$SITE..." + manage "`echo "$ACTION" | sed -e 's/^--//'`" "$SITE" + echo " done." + exit 0 + ;; +esac + +if [ -z "$CONFIGFILE" ]; then optdie "$PROG: no site config file; use -f"; fi + +source "$CONFIGFILE" + +if [ -z "$SITE" ]; then optdie "$PROG: no site name"; fi +if [ -z "$FQDN" ]; then optdie "$PROG: no site fqdn"; fi +if [ -z "$USER" ]; then optdie "$PROG: no user"; fi + +OWNER="$USER:$GROUP" +TOMCATOWNER="$USER:$TOMCATGROUP" + +if [ -n "$GROUP" ]; then + umask 002 + PRIVMODE=660 +else + umask 022 + PRIVMODE=600 +fi + +if [ -n "$MIRVERSION" ]; then MIRVERSIONOPT="-r$MIRVERSION"; fi +if [ -n "$SITEVERSION" ]; then SITEVERSIONOPT="-r$SITEVERSION"; fi + +if [ -n "$SHAREDB" ]; then + if [ -n "$DBNAME" ]; then optdie "$PROG: SHAREDB and DBNAME set"; fi + if [ -n "$DBUSER" ]; then optdie "$PROG: SHAREDB and DBUSER set"; fi + if [ -n "$DBPASS" ]; then optdie "$PROG: SHAREDB and DBPASS set"; fi + + DBNAME="`perl -ne 'if (/\s*Database\.Name\s*=\s*(\S+)/) { print "$1\n" }' "$INSTALLDIR/$SITEOVERLAYDIR/etc/config.properties"`" + DBUSER="`perl -ne 'if (/\s*Database\.Username\s*=\s*(\S+)/) { print "$1\n" }' "$INSTALLDIR/$SITEOVERLAYDIR/etc/config.properties"`" + DBPASS="`perl -ne 'if (/\s*Database\.Password\s*=\s*(\S+)/) { print "$1\n" }' "$INSTALLDIR/$SITEOVERLAYDIR/etc/config.properties"`" +else + if [ -z "$DBNAME" ]; then DBNAME="$SITE"; fi + if [ -z "$DBUSER" ]; then DBUSER="$SITE"; fi + if [ -z "$DBPASS" ]; then DBPASS="`pwgen -s 8 1`"; fi +fi + +if [ -z "$CONFIGPROPERTIES" ]; then CONFIGPROPERTIES="$CONFDIR/config.properties"; fi +if [ ! -e "$CONFIGPROPERTIES" ]; then + optdie "$CONFIGPROPERTIES does not exist" +fi + +CUR_CHECKPOINT=0 +checkpoint() +{ + CUR_CHECKPOINT=$(($CUR_CHECKPOINT + 1)) + if [ -n "$START_CHECKPOINT" ]; then + if [ "$CUR_CHECKPOINT" -lt "$START_CHECKPOINT" ]; then + echo "Skipping checkpoint $CUR_CHECKPOINT: $@" + unset RUNNING + else + echo "Running from checkpoint $CUR_CHECKPOINT: $@" + RUNNING=1 + fi + else + echo "Checkpoint $CUR_CHECKPOINT: $@" + RUNNING=1 + fi +} + +checkpoint "Create user $USER and groups" +if [ -n "$RUNNING" ]; then + if ! id $USER >/dev/null 2>&1 ;then + adduser --disabled-login --gecos "$SITE mir user,,," $USER + fi + if ! getent group $TOMCATGROUP >/dev/null 2>&1 ;then + addgroup $TOMCATGROUP + fi + if id $TOMCATUSER >/dev/null 2>&1 ;then + adduser $TOMCATUSER $TOMCATGROUP + else + die "User $TOMCATUSER does not exist" + fi + adduser $USER $TOMCATGROUP +fi + +checkpoint "Prepare install directory: $INSTALLDIR" +if [ -n "$RUNNING" ]; then + mkdir -p "$INSTALLDIR" + chown "$OWNER" "$INSTALLDIR" + chmod g+s "$INSTALLDIR" +fi + +if [ -n "$MIRGITROOT" ]; then + checkpoint "Check out Mir [$MIRVERSION] from git $MIRGITROOT" + if [ -n "$RUNNING" ]; then + cd "$INSTALLDIR" + sudo -u "$USER" git clone "$MIRGITROOT" + sudo -u "$USER" sh -c "(cd mir && git checkout $MIRVERSION)" + chown -R "$OWNER" mir + fi +else + checkpoint "Check out Mir [$MIRVERSION] from CVS $MIRCVSROOT" + if [ -n "$RUNNING" ]; then + cd "$INSTALLDIR" + sudo -u "$USER" cvs -z3 -d"$MIRCVSROOT" checkout $MIRVERSIONOPT mir + chown -R "$OWNER" mir + fi +fi + +if [ -n "$SITEGITROOT" ]; then + checkpoint "Check out site templates [$SITEVERSION] from git $SITEGITROOT" + if [ -n "$RUNNING" ]; then + cd "$INSTALLDIR" + sudo -u "$USER" git clone "$SITEGITROOT" + sudo -u "$USER" sh -c "(cd $SITEOVERLAYDIR && git checkout $SITEGITVERSION)" + chown -R "$OWNER" "$SITEOVERLAYDIR" + fi +else + checkpoint "Check out site templates [$SITEVERSION] from CVS $SITECVSROOT" + if [ -n "$RUNNING" ]; then + cd "$INSTALLDIR" + sudo -u "$USER" cvs -z3 -d"$SITECVSROOT" checkout $SITEVERSIONOPT "$SITEOVERLAYDIR" + chown -R "$OWNER" "$SITEOVERLAYDIR" + fi +fi + +checkpoint "Prepare production directory: $PRODUCTIONDIR" +if [ -n "$RUNNING" ]; then + mkdir -p "$PRODUCTIONDIR" + chown "$TOMCATOWNER" "$PRODUCTIONDIR" + chmod g+s "$PRODUCTIONDIR" + cd "$PRODUCTIONDIR" + PRODUCTIONSUBDIRS="abstract comments content de en img inc style" + mkdir -p $PRODUCTIONSUBDIRS + chown "$TOMCATOWNER" $PRODUCTIONSUBDIRS + ln -snf en/index.html +fi + +munge_config_file() +{ + ( + export SITE + export FQDN + export MIRRORFQDN + export SECUREFQDN + export ALIASES + export USER + export DBNAME + export DBUSER + export DBPASS + export PRODUCTIONDIR + + perl -w "$SHAREDIR/munge_config_file.pl" <"$1" >"$2" + chown "$OWNER" "$2" + ) +} + +checkpoint "Install robots.txt file" +if [ -n "$RUNNING" ]; then + munge_config_file "$CONFDIR/robots.txt" "$PRODUCTIONDIR/robots.txt" +fi + +checkpoint "Fetch cities.inc" +if [ -n "$RUNNING" ]; then + wget -O - http://www.indymedia.org/cities.inc | + sed -e 's/
/
/gi' > "$PRODUCTIONDIR/cities.inc" + chown $USER:$TOMCATGROUP "$PRODUCTIONDIR/cities.inc" +fi + +checkpoint "Install site-specific Apache configuration file (non-SSL)" +if [ -n "$RUNNING" ]; then + mkdir -p "$APACHECONFDIR" + munge_config_file "$CONFDIR/site-httpd.conf" "$APACHECONFDIR/$SITE.conf" +fi + +checkpoint "Install site-specific Apache configuration file (SSL on dedicated IP)" +if [ -n "$RUNNING" ]; then + mkdir -p "$APACHECONFDIR/ssl-dedicated" + munge_config_file "$CONFDIR/site-ssl-dedicated-httpd.conf" "$APACHECONFDIR/ssl-dedicated/$SITE.conf" +fi + +checkpoint "Install site-specific Apache configuration file (SSL fragment for webapp via canonical host)" +if [ -n "$RUNNING" ]; then + mkdir -p "$APACHECONFDIR/ssl-fragments" + munge_config_file "$CONFDIR/site-ssl-httpd-fragment.conf" "$APACHECONFDIR/ssl-fragments/$SITE.conf" +fi + +checkpoint "Configure temporary snake-oil SSL cert" +if [ -n "$RUNNING" ]; then + if [ ! -f /etc/apache2/ssl/$SECUREFQDN.crt ]; then + ln -s /etc/ssl/certs/ssl-cert-snakeoil.pem /etc/apache2/ssl/$SECUREFQDN.crt + ln -s /etc/ssl/private/ssl-cert-snakeoil.key /etc/apache2/ssl/$SECUREFQDN.key + fi +fi + +checkpoint "Restart Apache with new configuration" +if [ -n "$RUNNING" ]; then + "$APACHECTL" configtest + "$APACHECTL" graceful +fi + +checkpoint "Overlay /etc from site template" +if [ -n "$RUNNING" ]; then + cd "$INSTALLDIR/mir" + mv etc etc.orig + ln -snf "../$SITEOVERLAYDIR/etc" +fi + +if [ -n "$SHAREDB" ]; then + checkpoint "Sharing existing database (not creating)" + checkpoint "Sharing existing database (not importing/installing)" + checkpoint "Sharing existing database (not setting permissions)" +else + checkpoint "Create database" + if [ -n "$RUNNING" ]; then + sudo -u postgres createdb --encoding=unicode "$DBNAME" + sudo -u postgres psql "$DBNAME" <&2 "Don't worry about errors from some of the GRANTs here" + sudo -u postgres psql -qto "|psql \"$DBNAME\"" "$DBNAME" <perms.sh + chmod +x perms.sh + ./perms.sh +fi + +checkpoint "Enabling symlinks in tomcat" +if [ -n "$RUNNING" ]; then + if ! fgrep -q 'allowLinking="true"' /etc/tomcat6/context.xml + then + cp /etc/tomcat6/context.xml /etc/tomcat6/context.xml.tmp + sed -e 's/ /etc/tomcat6/context.xml + rm /etc/tomcat6/context.xml.tmp + fi +fi + +checkpoint "Linking into Tomcat Web apps directory" +if [ -n "$RUNNING" ]; then + cd "$WEBAPPSDIR" + ln -snf "$INSTALLDIR/mir/bin/mir" "$SITE" +fi + +checkpoint "Restarting tomcat" +if [ -n "$RUNNING" ]; then + if [ -x /etc/init.d/tomcat6 ]; then + /etc/init.d/tomcat6 force-reload + elif [ -x /etc/init.d/tomcat5.5 ]; then + /etc/init.d/tomcat5.5 force-reload + elif [ -x /etc/init.d/tomcat4 ]; then + /etc/init.d/tomcat4 force-reload + else + echo tomcat NOT reloaded, reload manually + fi +fi + +checkpoint "All done!" -- 2.11.0