Rename mir-prepare, mir-setup, mir-choose-java to mir-*.lenny.
[mir.git] / scripts / mir-setup / mir-prepare.squeeze
1 #!/bin/sh
2 # ianb@erislabs.net 20081122
3 # checkpoint code taken from zak's mir-setup
4 # $Id: mir-prepare.squeeze,v 1.1.2.1 2010/12/16 18:31:08 ianb Exp $
5
6 set -e
7
8 CONFDIR="/etc/mir-setup"
9 PROG="`basename $0`"
10
11 PACKAGES="openssh-server pwgen apache2 ant tomcat6 tomcat6-admin libservlet2.3-java imagemagick postgresql libjmagick6-java libapache2-mod-jk procmail cvs rsync sudo wget"
12
13 CUR_CHECKPOINT=0
14 checkpoint()
15 {
16   CUR_CHECKPOINT=$(($CUR_CHECKPOINT + 1))
17   if [ -n "$START_CHECKPOINT" ]; then
18     if [ "$CUR_CHECKPOINT" -lt "$START_CHECKPOINT" ]; then
19       echo "Skipping checkpoint $CUR_CHECKPOINT: $@"
20       unset RUNNING
21     else
22       echo "Running from checkpoint $CUR_CHECKPOINT: $@"
23       RUNNING=1
24     fi
25   else
26     echo "Checkpoint $CUR_CHECKPOINT: $@"
27     RUNNING=1
28   fi
29 }
30
31 die()
32 {
33   echo >&2 "$@";
34   exit 1;
35 }
36
37 optdie()
38 {
39   echo >&2 "$@";
40   echo >&2 "Try $PROG --help";
41   exit 1;
42 }
43
44 usage() {
45     echo >&2 "Usage: $PROG options"
46     echo >&2 "  Prepares system for a mir install"
47     echo >&2 "  Run before mir-setup"
48     echo >&2 "    -d|--debug                Debugging output, including 'set -x' shell trace"
49     echo >&2 "    -p|--checkpoint <start>   Run from specified checkpoint after failed run"
50     echo >&2 "    -j|--java sun|gcj         Select Java implementation. Default: sun"
51 }
52
53 # default
54 JAVA=sun
55 while [ $# != 0 ]; do
56     case "$1" in
57         -d|--debug)  set -x; DEBUG=1 ;;
58         -p|--checkpoint) shift; START_CHECKPOINT="$1" ;;
59         -j|--java) shift; JAVA="$1" ;;
60         -h|-?|--help) usage; exit 0 ;;
61         -*) optdie "$PROG: unknown option $1" ;;
62         *) optdie "$PROG: unexpected argument '$1'" ;;
63     esac
64     shift
65 done
66
67 checkpoint "Installing mir-setup"
68 if [ -n "$RUNNING" ]
69 then
70     mkdir -p /etc/mir-setup /usr/local/share/mir-setup
71     cp mir-setup.squeeze /usr/local/sbin/mir-setup
72     cp mir-choose-java.squeeze /usr/local/sbin/mir-choose-java
73     cp munge_config_file.pl  /usr/local/share/mir-setup
74     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"
75     (cd conf && cp $CONFFILES /etc/mir-setup)
76 fi
77
78 checkpoint "Installing packages"
79 if [ -n "$RUNNING" ]
80 then
81     apt-get install $PACKAGES
82     echo "You probably want to do 'apt-get clean'"
83 fi
84
85 checkpoint "Selecting $JAVA java with mir-choose-java"
86 if [ -n "$RUNNING" ]
87 then
88     mir-choose-java --subprocess $JAVA
89 fi
90
91 checkpoint "Enabling apache modules"
92 if [ -n "$RUNNING" ]
93 then
94     a2enmod headers ssl include deflate jk rewrite
95 fi
96
97 checkpoint "Anonymise apache error log"
98 if [ -n "$RUNNING" ]
99 then
100     if [ ! -f /etc/apache2/conf.d/mir-anon-error-log ]
101     then
102         echo 'ErrorLog "| /usr/local/bin/strip-ips-from-apache-error-log /var/log/apache2/error.log"' > /etc/apache2/conf.d/mir-anon-error-log
103     fi
104     cp strip-ips-from-apache-error-log /usr/local/bin
105 fi
106
107 checkpoint "Configure 'anon' log format"
108 if [ -n "$RUNNING" ]
109 then
110     if [ ! -f /etc/apache2/conf.d/mir-anon-access-log ]
111     then
112         echo 'LogFormat "noip %l %u %t \"%r\" %>s %b" anon' > /etc/apache2/conf.d/mir-anon-access-log
113     fi
114 fi
115
116 checkpoint "Creating directory for mir sites in apache"
117 if [ -n "$RUNNING" ]
118 then
119     if [ ! -d /etc/apache2/mir-sites ]
120     then
121         mkdir /etc/apache2/mir-sites
122     fi
123 fi
124
125 checkpoint "Enabling mir sites in apache"
126 if [ -n "$RUNNING" ]
127 then
128     if [ ! -f /etc/apache2/sites-available/mir-sites ]
129     then
130         echo "Include /etc/apache2/mir-sites/*.conf" > /etc/apache2/sites-available/mir-sites
131         a2ensite mir-sites
132     fi
133 fi
134
135 checkpoint "Configuring apache jakarta workers"
136 if [ -n "$RUNNING" ]
137 then
138     if [ ! -f /etc/apache2/conf.d/mir-jk ]
139     then
140         echo "JkWorkersFile  /etc/libapache2-mod-jk/workers.properties" > /etc/apache2/conf.d/mir-jk
141     fi
142 fi
143
144 checkpoint "Configuring tomcat ajp13 listener"
145 if [ -n "$RUNNING" ]
146 then
147     perl -pi.bak -e "s/(.*Service\s*name=\"Catalina\".*)/\$1\n    <Connector port=\"8009\" protocol=\"AJP\/1.3\" redirectPort=\"8443\" \/>/;" /etc/tomcat6/server.xml
148 fi
149
150 checkpoint "Disabling tomcat security (yes, this is bad)"
151 if [ -n "$RUNNING" ]
152 then
153     if ! grep -q "^TOMCAT6_SECURITY=no" /etc/default/tomcat6
154     then
155         echo "TOMCAT6_SECURITY=no" >> /etc/default/tomcat6
156     fi
157 fi
158
159 checkpoint "Configuring password for tomcat manager"
160 if [ -n "$RUNNING" ]
161 then
162     if ! grep -q 'user username="mir-setup"' /etc/tomcat6/tomcat-users.xml
163     then
164         PASSWORD=$(pwgen -n 10 1)
165         ROLE='  <role rolename="manager"\/>'
166         USERNAME='  <user username="mir-setup" password="'"$PASSWORD"'" roles="manager"\/>'
167         perl -pi.bak -e 's/(mir-setup:)[^@]+/$1'"$PASSWORD"'/;' /etc/mir-setup/tomcat-manager.conf
168         perl -pi.bak -e 's/(<tomcat-users>)/$1\n'"$ROLE"'\n'"$USERNAME"'\n/;' /etc/tomcat6/tomcat-users.xml
169     fi
170 fi
171
172 checkpoint "Creating directory for SSL certs"
173 if [ -n "$RUNNING" ]
174 then
175     if [ ! -d /etc/apache2/ssl ]
176     then
177         mkdir /etc/apache2/ssl
178     fi
179 fi
180
181 checkpoint "Restarting apache and tomcat"
182 if [ -n "$RUNNING" ]
183 then
184     invoke-rc.d tomcat6 force-reload
185     invoke-rc.d apache2 force-reload
186 fi
187
188 checkpoint "All done!"