~ubuntu-branches/ubuntu/lucid/tomcat6/lucid

3 by Thierry Carrez
* Adding full Tomcat 6 server stack support (LP: #256052)
1
#!/bin/sh
2
#
3
# /etc/init.d/tomcat6 -- startup script for the Tomcat 6 servlet engine
4
#
5
# Written by Miquel van Smoorenburg <miquels@cistron.nl>.
6
# Modified for Debian GNU/Linux	by Ian Murdock <imurdock@gnu.ai.mit.edu>.
7
# Modified for Tomcat by Stefan Gybas <sgybas@debian.org>.
8
# Modified for Tomcat6 by Thierry Carrez <thierry.carrez@ubuntu.com>.
2.2.7 by Ludovic Claude, Ludovic Claude, Jason Brittain
[ Ludovic Claude ]
9
# Additional improvements by Jason Brittain <jason.brittain@mulesoft.com>.
3 by Thierry Carrez
* Adding full Tomcat 6 server stack support (LP: #256052)
10
#
11
### BEGIN INIT INFO
2.3.2 by Torsten Werner
* Fix init script:
12
# Provides:          tomcat6
3 by Thierry Carrez
* Adding full Tomcat 6 server stack support (LP: #256052)
13
# Required-Start:    $local_fs $remote_fs $network
14
# Required-Stop:     $local_fs $remote_fs $network
15
# Should-Start:      $named
16
# Should-Stop:       $named
17
# Default-Start:     2 3 4 5
7 by Thierry Carrez
* tomcat6.init, tomcat6.postinst, tomcat6.dirs, tomcat6.default,
18
# Default-Stop:      0 1 6
3 by Thierry Carrez
* Adding full Tomcat 6 server stack support (LP: #256052)
19
# Short-Description: Start Tomcat.
20
# Description:       Start the Tomcat servlet engine.
21
### END INIT INFO
22
23
set -e
24
25
PATH=/bin:/usr/bin:/sbin:/usr/sbin
26
NAME=tomcat6
27
DESC="Tomcat servlet engine"
28
DEFAULT=/etc/default/$NAME
14 by Thierry Carrez
* Merge from Debian unstable. Remaining changes:
29
JVM_TMP=/tmp/tomcat6-tmp
3 by Thierry Carrez
* Adding full Tomcat 6 server stack support (LP: #256052)
30
31
if [ `id -u` -ne 0 ]; then
32
	echo "You need root privileges to run this script"
33
	exit 1
34
fi
35
 
36
# Make sure tomcat is started with system locale
37
if [ -r /etc/default/locale ]; then
38
	. /etc/default/locale
39
	export LANG
40
fi
41
42
. /lib/lsb/init-functions
2.3.2 by Torsten Werner
* Fix init script:
43
44
if [ -r /etc/default/rcS ]; then
45
	. /etc/default/rcS
46
fi
3 by Thierry Carrez
* Adding full Tomcat 6 server stack support (LP: #256052)
47
48
49
# The following variables can be overwritten in $DEFAULT
50
2.2.7 by Ludovic Claude, Ludovic Claude, Jason Brittain
[ Ludovic Claude ]
51
# Run Tomcat 6 as this user ID and group ID
3 by Thierry Carrez
* Adding full Tomcat 6 server stack support (LP: #256052)
52
TOMCAT6_USER=tomcat6
2.2.7 by Ludovic Claude, Ludovic Claude, Jason Brittain
[ Ludovic Claude ]
53
TOMCAT6_GROUP=tomcat6
3 by Thierry Carrez
* Adding full Tomcat 6 server stack support (LP: #256052)
54
55
# The first existing directory is used for JAVA_HOME (if JAVA_HOME is not
56
# defined in $DEFAULT)
57
JDK_DIRS="/usr/lib/jvm/java-6-openjdk /usr/lib/jvm/java-6-sun /usr/lib/jvm/java-1.5.0-sun /usr/lib/j2sdk1.5-sun /usr/lib/j2sdk1.5-ibm"
58
59
# Look for the right JVM to use
60
for jdir in $JDK_DIRS; do
61
    if [ -r "$jdir/bin/java" -a -z "${JAVA_HOME}" ]; then
62
	JAVA_HOME="$jdir"
63
    fi
64
done
65
export JAVA_HOME
66
2.2.7 by Ludovic Claude, Ludovic Claude, Jason Brittain
[ Ludovic Claude ]
67
# Directory where the Tomcat 6 binary distribution resides
68
CATALINA_HOME=/usr/share/$NAME
69
3 by Thierry Carrez
* Adding full Tomcat 6 server stack support (LP: #256052)
70
# Directory for per-instance configuration files and webapps
71
CATALINA_BASE=/var/lib/$NAME
72
73
# Use the Java security manager? (yes/no)
2.2.7 by Ludovic Claude, Ludovic Claude, Jason Brittain
[ Ludovic Claude ]
74
TOMCAT6_SECURITY=no
3 by Thierry Carrez
* Adding full Tomcat 6 server stack support (LP: #256052)
75
76
# Default Java options
77
# Set java.awt.headless=true if JAVA_OPTS is not set so the
78
# Xalan XSL transformer can work without X11 display on JDK 1.4+
79
# It also looks like the default heap size of 64M is not enough for most cases
80
# so the maximum heap size is set to 128M
81
if [ -z "$JAVA_OPTS" ]; then
82
	JAVA_OPTS="-Djava.awt.headless=true -Xmx128M"
83
fi
84
85
# End of variables that can be overwritten in $DEFAULT
86
87
# overwrite settings from default file
88
if [ -f "$DEFAULT" ]; then
89
	. "$DEFAULT"
90
fi
91
92
if [ ! -f "$CATALINA_HOME/bin/bootstrap.jar" ]; then
93
	log_failure_msg "$NAME is not installed"
94
	exit 1
95
fi
96
97
POLICY_CACHE="$CATALINA_BASE/work/catalina.policy"
98
2.2.7 by Ludovic Claude, Ludovic Claude, Jason Brittain
[ Ludovic Claude ]
99
if [ -z "$CATALINA_TMPDIR" ]; then
100
	CATALINA_TMPDIR="$JVM_TMP"
101
fi
3 by Thierry Carrez
* Adding full Tomcat 6 server stack support (LP: #256052)
102
103
# Set the JSP compiler if set in the tomcat6.default file
104
if [ -n "$JSP_COMPILER" ]; then
2.2.7 by Ludovic Claude, Ludovic Claude, Jason Brittain
[ Ludovic Claude ]
105
	JAVA_OPTS="$JAVA_OPTS -Dbuild.compiler=\"$JSP_COMPILER\""
3 by Thierry Carrez
* Adding full Tomcat 6 server stack support (LP: #256052)
106
fi
107
2.2.7 by Ludovic Claude, Ludovic Claude, Jason Brittain
[ Ludovic Claude ]
108
SECURITY=""
3 by Thierry Carrez
* Adding full Tomcat 6 server stack support (LP: #256052)
109
if [ "$TOMCAT6_SECURITY" = "yes" ]; then
2.2.7 by Ludovic Claude, Ludovic Claude, Jason Brittain
[ Ludovic Claude ]
110
	JAVA_OPTS="$JAVA_OPTS -Djava.security.manager -Djava.security.policy=\"$POLICY_CACHE\""
111
	SECURITY="-security"
3 by Thierry Carrez
* Adding full Tomcat 6 server stack support (LP: #256052)
112
fi
113
114
# Define other required variables
115
CATALINA_PID="/var/run/$NAME.pid"
2.2.7 by Ludovic Claude, Ludovic Claude, Jason Brittain
[ Ludovic Claude ]
116
CATALINA_SH="$CATALINA_HOME/bin/catalina.sh"
3 by Thierry Carrez
* Adding full Tomcat 6 server stack support (LP: #256052)
117
118
# Look for Java Secure Sockets Extension (JSSE) JARs
119
if [ -z "${JSSE_HOME}" -a -r "${JAVA_HOME}/jre/lib/jsse.jar" ]; then
120
    JSSE_HOME="${JAVA_HOME}/jre/"
121
fi
2.2.7 by Ludovic Claude, Ludovic Claude, Jason Brittain
[ Ludovic Claude ]
122
123
catalina_sh() {
124
	# Escape any double quotes in the value of JAVA_OPTS
125
	JAVA_OPTS="$(echo $JAVA_OPTS | sed 's/\"/\\\"/g')"
126
127
	AUTHBIND_COMMAND=""
128
	if [ "$AUTHBIND" = "yes" -a "$1" = "start" ]; then
129
		JAVA_OPTS="$JAVA_OPTS -Djava.net.preferIPv4Stack=true"
130
		AUTHBIND_COMMAND="/usr/bin/authbind --deep /bin/bash -c "
131
	fi
132
133
	# Define the command to run Tomcat's catalina.sh as a daemon
134
	# set -a tells sh to export assigned variables to spawned shells.
135
	TOMCAT_SH="set -a; JAVA_HOME=\"$JAVA_HOME\"; source \"$DEFAULT\"; \
136
		CATALINA_HOME=\"$CATALINA_HOME\"; \
137
		CATALINA_BASE=\"$CATALINA_BASE\"; \
138
		JAVA_OPTS=\"$JAVA_OPTS\"; \
139
		CATALINA_PID=\"$CATALINA_PID\"; \
140
		CATALINA_TMPDIR=\"$CATALINA_TMPDIR\"; \
141
		LANG=\"$LANG\"; JSSE_HOME=\"$JSSE_HOME\"; \
142
		cd \"$CATALINA_BASE\"; \
143
		\"$CATALINA_SH\" $@"
144
145
	if [ "$AUTHBIND" = "yes" -a "$1" = "start" ]; then
146
		TOMCAT_SH="'$TOMCAT_SH'"
147
	fi
148
149
	# Run the catalina.sh script as a daemon
150
	set +e
151
	touch "$CATALINA_PID" "$CATALINA_BASE"/logs/catalina.out
152
	chown $TOMCAT6_USER "$CATALINA_PID" "$CATALINA_BASE"/logs/catalina.out
153
	start-stop-daemon --start -u "$TOMCAT6_USER" -g "$TOMCAT6_GROUP" \
154
		-c "$TOMCAT6_USER" -d "$CATALINA_TMPDIR" \
155
		-x /bin/bash -- -c "$AUTHBIND_COMMAND $TOMCAT_SH"
156
	status="$?"
157
	set +a -e
158
	return $status
159
}
3 by Thierry Carrez
* Adding full Tomcat 6 server stack support (LP: #256052)
160
161
case "$1" in
162
  start)
163
	if [ -z "$JAVA_HOME" ]; then
164
		log_failure_msg "no JDK found - please set JAVA_HOME"
165
		exit 1
166
	fi
167
168
	if [ ! -d "$CATALINA_BASE/conf" ]; then
169
		log_failure_msg "invalid CATALINA_BASE: $CATALINA_BASE"
170
		exit 1
171
	fi
172
173
	log_daemon_msg "Starting $DESC" "$NAME"
174
	if start-stop-daemon --test --start --pidfile "$CATALINA_PID" \
2.2.7 by Ludovic Claude, Ludovic Claude, Jason Brittain
[ Ludovic Claude ]
175
		--user $TOMCAT6_USER --exec "$JAVA_HOME/bin/java" \
3 by Thierry Carrez
* Adding full Tomcat 6 server stack support (LP: #256052)
176
		>/dev/null; then
177
178
		# Regenerate POLICY_CACHE file
179
		umask 022
180
		echo "// AUTO-GENERATED FILE from /etc/tomcat6/policy.d/" \
181
			> "$POLICY_CACHE"
182
		echo ""  >> "$POLICY_CACHE"
183
		cat $CATALINA_BASE/conf/policy.d/*.policy \
184
			>> "$POLICY_CACHE"
185
7 by Thierry Carrez
* tomcat6.init, tomcat6.postinst, tomcat6.dirs, tomcat6.default,
186
		# Remove / recreate JVM_TMP directory
187
		rm -rf "$JVM_TMP"
2.2.7 by Ludovic Claude, Ludovic Claude, Jason Brittain
[ Ludovic Claude ]
188
		mkdir -p "$JVM_TMP" || {
7 by Thierry Carrez
* tomcat6.init, tomcat6.postinst, tomcat6.dirs, tomcat6.default,
189
			log_failure_msg "could not create JVM temporary directory"
190
			exit 1
191
		}
192
		chown $TOMCAT6_USER "$JVM_TMP"
2.2.7 by Ludovic Claude, Ludovic Claude, Jason Brittain
[ Ludovic Claude ]
193
194
		catalina_sh start $SECURITY
3 by Thierry Carrez
* Adding full Tomcat 6 server stack support (LP: #256052)
195
		sleep 5
196
        	if start-stop-daemon --test --start --pidfile "$CATALINA_PID" \
2.2.7 by Ludovic Claude, Ludovic Claude, Jason Brittain
[ Ludovic Claude ]
197
			--user $TOMCAT6_USER --exec "$JAVA_HOME/bin/java" \
3 by Thierry Carrez
* Adding full Tomcat 6 server stack support (LP: #256052)
198
			>/dev/null; then
2.2.7 by Ludovic Claude, Ludovic Claude, Jason Brittain
[ Ludovic Claude ]
199
			if [ -f "$CATALINA_PID" ]; then
200
				rm -f "$CATALINA_PID"
201
			fi
3 by Thierry Carrez
* Adding full Tomcat 6 server stack support (LP: #256052)
202
			log_end_msg 1
203
		else
204
			log_end_msg 0
205
		fi
206
	else
207
	        log_progress_msg "(already running)"
208
		log_end_msg 0
209
	fi
210
	;;
211
  stop)
212
	log_daemon_msg "Stopping $DESC" "$NAME"
2.2.7 by Ludovic Claude, Ludovic Claude, Jason Brittain
[ Ludovic Claude ]
213
214
	set +e
19 by Thierry Carrez, Thierry Carrez, Niels Thykier, Ludovic Claude
[ Thierry Carrez ]
215
	if [ -f "$CATALINA_PID" ]; then 
2.2.7 by Ludovic Claude, Ludovic Claude, Jason Brittain
[ Ludovic Claude ]
216
		start-stop-daemon --stop --pidfile "$CATALINA_PID" \
217
			--user "$TOMCAT6_USER" \
218
			--retry=TERM/20/KILL/5 >/dev/null
19 by Thierry Carrez, Thierry Carrez, Niels Thykier, Ludovic Claude
[ Thierry Carrez ]
219
		if [ $? -eq 1 ]; then
220
			log_progress_msg "$DESC is not running but pid file exists, cleaning up"
221
		elif [ $? -eq 3 ]; then
2.2.7 by Ludovic Claude, Ludovic Claude, Jason Brittain
[ Ludovic Claude ]
222
			PID="`cat $CATALINA_PID`"
223
			log_failure_msg "Failed to stop $NAME (pid $PID)"
224
			exit 1
225
		fi
19 by Thierry Carrez, Thierry Carrez, Niels Thykier, Ludovic Claude
[ Thierry Carrez ]
226
		rm -f "$CATALINA_PID"
227
		rm -rf "$JVM_TMP"
228
	else
229
		log_progress_msg "(not running)"
3 by Thierry Carrez
* Adding full Tomcat 6 server stack support (LP: #256052)
230
	fi
231
	log_end_msg 0
2.2.7 by Ludovic Claude, Ludovic Claude, Jason Brittain
[ Ludovic Claude ]
232
	set -e
3 by Thierry Carrez
* Adding full Tomcat 6 server stack support (LP: #256052)
233
	;;
234
   status)
2.2.7 by Ludovic Claude, Ludovic Claude, Jason Brittain
[ Ludovic Claude ]
235
	set +e
236
	start-stop-daemon --test --start --pidfile "$CATALINA_PID" \
237
		--user $TOMCAT6_USER --exec "$JAVA_HOME/bin/java" \
238
		>/dev/null 2>&1
239
	if [ "$?" = "0" ]; then
3 by Thierry Carrez
* Adding full Tomcat 6 server stack support (LP: #256052)
240
241
		if [ -f "$CATALINA_PID" ]; then
242
		    log_success_msg "$DESC is not running, but pid file exists."
6 by Thierry Carrez
* debian/tomcat6.postinst:
243
			exit 1
3 by Thierry Carrez
* Adding full Tomcat 6 server stack support (LP: #256052)
244
		else
245
		    log_success_msg "$DESC is not running."
6 by Thierry Carrez
* debian/tomcat6.postinst:
246
			exit 3
3 by Thierry Carrez
* Adding full Tomcat 6 server stack support (LP: #256052)
247
		fi
248
	else
249
		log_success_msg "$DESC is running with pid `cat $CATALINA_PID`"
250
	fi
2.2.7 by Ludovic Claude, Ludovic Claude, Jason Brittain
[ Ludovic Claude ]
251
	set -e
3 by Thierry Carrez
* Adding full Tomcat 6 server stack support (LP: #256052)
252
        ;;
253
  restart|force-reload)
19 by Thierry Carrez, Thierry Carrez, Niels Thykier, Ludovic Claude
[ Thierry Carrez ]
254
	if [ -f "$CATALINA_PID" ]; then
3 by Thierry Carrez
* Adding full Tomcat 6 server stack support (LP: #256052)
255
		$0 stop
256
		sleep 1
257
	fi
258
	$0 start
259
	;;
260
  try-restart)
261
        if start-stop-daemon --test --start --pidfile "$CATALINA_PID" \
2.2.7 by Ludovic Claude, Ludovic Claude, Jason Brittain
[ Ludovic Claude ]
262
		--user $TOMCAT6_USER --exec "$JAVA_HOME/bin/java" \
3 by Thierry Carrez
* Adding full Tomcat 6 server stack support (LP: #256052)
263
		>/dev/null; then
264
		$0 start
265
	fi
266
        ;;
267
  *)
268
	log_success_msg "Usage: $0 {start|stop|restart|try-restart|force-reload|status}"
269
	exit 1
270
	;;
271
esac
272
273
exit 0