~upstart-devel/upstart/upstart-jobs

« back to all changes in this revision

Viewing changes to vivid/etc/init.d/tomcat6

  • Committer: Dimitri John Ledkov
  • Date: 2014-11-19 12:58:41 UTC
  • Revision ID: dimitri.j.ledkov@intel.com-20141119125841-98dr37roy8dvcv3b
auto update

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
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>.
 
9
# Additional improvements by Jason Brittain <jason.brittain@mulesoft.com>.
 
10
#
 
11
### BEGIN INIT INFO
 
12
# Provides:          tomcat6
 
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
 
18
# Default-Stop:      0 1 6
 
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="$(basename "$0" | sed 's/^[KS][0-9]\{2\}//')"
 
27
DESC="Tomcat servlet engine"
 
28
DEFAULT=/etc/default/$NAME
 
29
JVM_TMP=/tmp/tomcat6-$NAME-tmp
 
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
 
43
 
 
44
if [ -r /etc/default/rcS ]; then
 
45
        . /etc/default/rcS
 
46
fi
 
47
 
 
48
# The following variables can be overwritten in $DEFAULT
 
49
 
 
50
# Run Tomcat 6 as this user ID and group ID
 
51
TOMCAT6_USER=tomcat6
 
52
TOMCAT6_GROUP=tomcat6
 
53
 
 
54
# this is a work-around until there is a suitable runtime replacement 
 
55
# for dpkg-architecture for arch:all packages
 
56
# this function sets the variable OPENJDKS
 
57
find_openjdks()
 
58
{
 
59
        for jvmdir in /usr/lib/jvm/java-7-openjdk-*
 
60
        do
 
61
                if [ -d "${jvmdir}" -a "${jvmdir}" != "/usr/lib/jvm/java-7-openjdk-common" ]
 
62
                then
 
63
                        OPENJDKS=$jvmdir
 
64
                fi
 
65
        done
 
66
        for jvmdir in /usr/lib/jvm/java-6-openjdk-*
 
67
        do
 
68
                if [ -d "${jvmdir}" -a "${jvmdir}" != "/usr/lib/jvm/java-6-openjdk-common" ]
 
69
                then
 
70
                        OPENJDKS="${OPENJDKS} ${jvmdir}"
 
71
                fi
 
72
        done
 
73
}
 
74
 
 
75
# The first existing directory is used for JAVA_HOME (if JAVA_HOME is not
 
76
# defined in $DEFAULT)
 
77
 
 
78
OPENJDKS=""
 
79
find_openjdks
 
80
JDK_DIRS="/usr/lib/jvm/default-java ${OPENJDKS} /usr/lib/jvm/java-6-sun /usr/lib/jvm/java-1.5.0-sun /usr/lib/j2sdk1.5-sun /usr/lib/j2sdk1.5-ibm"
 
81
 
 
82
# Look for the right JVM to use
 
83
for jdir in $JDK_DIRS; do
 
84
    if [ -r "$jdir/bin/java" -a -z "${JAVA_HOME}" ]; then
 
85
        JAVA_HOME="$jdir"
 
86
    fi
 
87
done
 
88
export JAVA_HOME
 
89
 
 
90
# Directory where the Tomcat 6 binary distribution resides
 
91
CATALINA_HOME=/usr/share/tomcat6
 
92
 
 
93
# Directory for per-instance configuration files and webapps
 
94
CATALINA_BASE=/var/lib/$NAME
 
95
 
 
96
# Use the Java security manager? (yes/no)
 
97
TOMCAT6_SECURITY=no
 
98
 
 
99
# Default Java options
 
100
# Set java.awt.headless=true if JAVA_OPTS is not set so the
 
101
# Xalan XSL transformer can work without X11 display on JDK 1.4+
 
102
# It also looks like the default heap size of 64M is not enough for most cases
 
103
# so the maximum heap size is set to 128M
 
104
if [ -z "$JAVA_OPTS" ]; then
 
105
        JAVA_OPTS="-Djava.awt.headless=true -Xmx128M"
 
106
fi
 
107
 
 
108
# End of variables that can be overwritten in $DEFAULT
 
109
 
 
110
# overwrite settings from default file
 
111
if [ -f "$DEFAULT" ]; then
 
112
        . "$DEFAULT"
 
113
fi
 
114
 
 
115
if [ ! -f "$CATALINA_HOME/bin/bootstrap.jar" ]; then
 
116
        log_failure_msg "$NAME is not installed"
 
117
        exit 1
 
118
fi
 
119
 
 
120
POLICY_CACHE="$CATALINA_BASE/work/catalina.policy"
 
121
 
 
122
if [ -z "$CATALINA_TMPDIR" ]; then
 
123
        CATALINA_TMPDIR="$JVM_TMP"
 
124
fi
 
125
 
 
126
# Set the JSP compiler if set in the tomcat6.default file
 
127
if [ -n "$JSP_COMPILER" ]; then
 
128
        JAVA_OPTS="$JAVA_OPTS -Dbuild.compiler=\"$JSP_COMPILER\""
 
129
fi
 
130
 
 
131
SECURITY=""
 
132
if [ "$TOMCAT6_SECURITY" = "yes" ]; then
 
133
        SECURITY="-security"
 
134
fi
 
135
 
 
136
# Define other required variables
 
137
CATALINA_PID="/var/run/$NAME.pid"
 
138
CATALINA_SH="$CATALINA_HOME/bin/catalina.sh"
 
139
 
 
140
# Look for Java Secure Sockets Extension (JSSE) JARs
 
141
if [ -z "${JSSE_HOME}" -a -r "${JAVA_HOME}/jre/lib/jsse.jar" ]; then
 
142
    JSSE_HOME="${JAVA_HOME}/jre/"
 
143
fi
 
144
 
 
145
catalina_sh() {
 
146
        # Escape any double quotes in the value of JAVA_OPTS
 
147
        JAVA_OPTS="$(echo $JAVA_OPTS | sed 's/\"/\\\"/g')"
 
148
 
 
149
        AUTHBIND_COMMAND=""
 
150
        if [ "$AUTHBIND" = "yes" -a "$1" = "start" ]; then
 
151
                JAVA_OPTS="$JAVA_OPTS -Djava.net.preferIPv4Stack=true"
 
152
                AUTHBIND_COMMAND="/usr/bin/authbind --deep /bin/bash -c "
 
153
        fi
 
154
 
 
155
        # Define the command to run Tomcat's catalina.sh as a daemon
 
156
        # set -a tells sh to export assigned variables to spawned shells.
 
157
        TOMCAT_SH="set -a; JAVA_HOME=\"$JAVA_HOME\"; source \"$DEFAULT\"; \
 
158
                CATALINA_HOME=\"$CATALINA_HOME\"; \
 
159
                CATALINA_BASE=\"$CATALINA_BASE\"; \
 
160
                JAVA_OPTS=\"$JAVA_OPTS\"; \
 
161
                CATALINA_PID=\"$CATALINA_PID\"; \
 
162
                CATALINA_TMPDIR=\"$CATALINA_TMPDIR\"; \
 
163
                LANG=\"$LANG\"; JSSE_HOME=\"$JSSE_HOME\"; \
 
164
                cd \"$CATALINA_BASE\"; \
 
165
                \"$CATALINA_SH\" $@"
 
166
 
 
167
        if [ "$AUTHBIND" = "yes" -a "$1" = "start" ]; then
 
168
                TOMCAT_SH="'$TOMCAT_SH'"
 
169
        fi
 
170
 
 
171
        # Run the catalina.sh script as a daemon
 
172
        set +e
 
173
        touch "$CATALINA_PID" "$CATALINA_BASE"/logs/catalina.out
 
174
        chown $TOMCAT6_USER "$CATALINA_PID" "$CATALINA_BASE"/logs/catalina.out
 
175
        start-stop-daemon --start -b -u "$TOMCAT6_USER" -g "$TOMCAT6_GROUP" \
 
176
                -c "$TOMCAT6_USER" -d "$CATALINA_TMPDIR" -p "$CATALINA_PID" \
 
177
                -x /bin/bash -- -c "$AUTHBIND_COMMAND $TOMCAT_SH"
 
178
        status="$?"
 
179
        set +a -e
 
180
        return $status
 
181
}
 
182
 
 
183
case "$1" in
 
184
  start)
 
185
        if [ -z "$JAVA_HOME" ]; then
 
186
                log_failure_msg "no JDK found - please set JAVA_HOME"
 
187
                exit 1
 
188
        fi
 
189
 
 
190
        if [ ! -d "$CATALINA_BASE/conf" ]; then
 
191
                log_failure_msg "invalid CATALINA_BASE: $CATALINA_BASE"
 
192
                exit 1
 
193
        fi
 
194
 
 
195
        log_daemon_msg "Starting $DESC" "$NAME"
 
196
        if start-stop-daemon --test --start --pidfile "$CATALINA_PID" \
 
197
                --user $TOMCAT6_USER --exec "$JAVA_HOME/bin/java" \
 
198
                >/dev/null; then
 
199
 
 
200
                # Regenerate POLICY_CACHE file
 
201
                umask 022
 
202
                echo "// AUTO-GENERATED FILE from /etc/tomcat6/policy.d/" \
 
203
                        > "$POLICY_CACHE"
 
204
                echo ""  >> "$POLICY_CACHE"
 
205
                cat $CATALINA_BASE/conf/policy.d/*.policy \
 
206
                        >> "$POLICY_CACHE"
 
207
 
 
208
                # Remove / recreate JVM_TMP directory
 
209
                rm -rf "$JVM_TMP"
 
210
                mkdir -p "$JVM_TMP" || {
 
211
                        log_failure_msg "could not create JVM temporary directory"
 
212
                        exit 1
 
213
                }
 
214
                chown $TOMCAT6_USER "$JVM_TMP"
 
215
 
 
216
                catalina_sh start $SECURITY
 
217
                sleep 5
 
218
                if start-stop-daemon --test --start --pidfile "$CATALINA_PID" \
 
219
                        --user $TOMCAT6_USER --exec "$JAVA_HOME/bin/java" \
 
220
                        >/dev/null; then
 
221
                        if [ -f "$CATALINA_PID" ]; then
 
222
                                rm -f "$CATALINA_PID"
 
223
                        fi
 
224
                        log_end_msg 1
 
225
                else
 
226
                        log_end_msg 0
 
227
                fi
 
228
        else
 
229
                log_progress_msg "(already running)"
 
230
                log_end_msg 0
 
231
        fi
 
232
        ;;
 
233
  stop)
 
234
        log_daemon_msg "Stopping $DESC" "$NAME"
 
235
 
 
236
        set +e
 
237
        if [ -f "$CATALINA_PID" ]; then 
 
238
                start-stop-daemon --stop --pidfile "$CATALINA_PID" \
 
239
                        --user "$TOMCAT6_USER" \
 
240
                        --retry=TERM/20/KILL/5 >/dev/null
 
241
                if [ $? -eq 1 ]; then
 
242
                        log_progress_msg "$DESC is not running but pid file exists, cleaning up"
 
243
                elif [ $? -eq 3 ]; then
 
244
                        PID="`cat $CATALINA_PID`"
 
245
                        log_failure_msg "Failed to stop $NAME (pid $PID)"
 
246
                        exit 1
 
247
                fi
 
248
                rm -f "$CATALINA_PID"
 
249
                rm -rf "$JVM_TMP"
 
250
        else
 
251
                log_progress_msg "(not running)"
 
252
        fi
 
253
        log_end_msg 0
 
254
        set -e
 
255
        ;;
 
256
   status)
 
257
        set +e
 
258
        start-stop-daemon --test --start --pidfile "$CATALINA_PID" \
 
259
                --user $TOMCAT6_USER --exec "$JAVA_HOME/bin/java" \
 
260
                >/dev/null 2>&1
 
261
        if [ "$?" = "0" ]; then
 
262
 
 
263
                if [ -f "$CATALINA_PID" ]; then
 
264
                    log_success_msg "$DESC is not running, but pid file exists."
 
265
                        exit 1
 
266
                else
 
267
                    log_success_msg "$DESC is not running."
 
268
                        exit 3
 
269
                fi
 
270
        else
 
271
                log_success_msg "$DESC is running with pid `cat $CATALINA_PID`"
 
272
        fi
 
273
        set -e
 
274
        ;;
 
275
  restart|force-reload)
 
276
        if [ -f "$CATALINA_PID" ]; then
 
277
                $0 stop
 
278
                sleep 1
 
279
        fi
 
280
        $0 start
 
281
        ;;
 
282
  try-restart)
 
283
        if start-stop-daemon --test --start --pidfile "$CATALINA_PID" \
 
284
                --user $TOMCAT6_USER --exec "$JAVA_HOME/bin/java" \
 
285
                >/dev/null; then
 
286
                $0 start
 
287
        fi
 
288
        ;;
 
289
  *)
 
290
        log_success_msg "Usage: $0 {start|stop|restart|try-restart|force-reload|status}"
 
291
        exit 1
 
292
        ;;
 
293
esac
 
294
 
 
295
exit 0