| #!/bin/sh |
| # Licensed to the Apache Software Foundation (ASF) under one |
| # or more contributor license agreements. See the NOTICE file |
| # distributed with this work for additional information |
| # regarding copyright ownership. The ASF licenses this file |
| # to you under the Apache License, Version 2.0 (the |
| # "License"); you may not use this file except in compliance |
| # with the License. You may obtain a copy of the License at |
| # |
| # http://www.apache.org/licenses/LICENSE-2.0 |
| # |
| # Unless required by applicable law or agreed to in writing, |
| # software distributed under the License is distributed on an |
| # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| # KIND, either express or implied. See the License for the |
| # specific language governing permissions and limitations |
| # under the License. |
| # |
| # /etc/init.d/tomcat6 -- startup script for the Tomcat 6 servlet engine |
| # |
| # Written by Miquel van Smoorenburg <miquels@cistron.nl>. |
| # Modified for Debian GNU/Linux by Ian Murdock <imurdock@gnu.ai.mit.edu>. |
| # Modified for Tomcat by Stefan Gybas <sgybas@debian.org>. |
| # Modified for Tomcat6 by Thierry Carrez <thierry.carrez@ubuntu.com>. |
| # Modified for VMOps by Manuel Amador (Rudd-O) <manuel@vmops.com> |
| # |
| ### BEGIN INIT INFO |
| # Provides: tomcat-vmops |
| # Required-Start: $local_fs $remote_fs $network |
| # Required-Stop: $local_fs $remote_fs $network |
| # Should-Start: $named |
| # Should-Stop: $named |
| # Default-Start: 2 3 4 5 |
| # Default-Stop: 0 1 6 |
| # Short-Description: Start Tomcat (CloudStack). |
| # Description: Start the Tomcat servlet engine that runs the CloudStack Management Server. |
| ### END INIT INFO |
| |
| PATH=/bin:/usr/bin:/sbin:/usr/sbin |
| NAME=cloud-bridge |
| DESC="CloudStack-specific Tomcat servlet engine" |
| DAEMON=/usr/bin/jsvc |
| CATALINA_BASE=/usr/share/cloud/bridge |
| CATALINA_HOME=/usr/share/tomcat6 |
| DEFAULT=$CATALINA_BASE/conf/tomcat6.conf |
| JVM_TMP=/tmp/$NAME-temp |
| |
| if [ `id -u` -ne 0 ]; then |
| echo "You need root privileges to run this script" |
| exit 1 |
| fi |
| |
| # Make sure tomcat is started with system locale |
| if [ -r /etc/default/locale ]; then |
| . /etc/default/locale |
| export LANG |
| fi |
| |
| . /lib/lsb/init-functions |
| . /etc/default/rcS |
| |
| |
| # The following variables can be overwritten in $DEFAULT |
| |
| # Run Tomcat 6 as this user ID |
| TOMCAT6_USER=tomcat6 |
| |
| # The first existing directory is used for JAVA_HOME (if JAVA_HOME is not |
| # defined in $DEFAULT) |
| 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" |
| |
| # Look for the right JVM to use |
| for jdir in $JDK_DIRS; do |
| if [ -r "$jdir/bin/java" -a -z "${JAVA_HOME}" ]; then |
| JAVA_HOME="$jdir" |
| fi |
| done |
| export JAVA_HOME |
| |
| |
| # Use the Java security manager? (yes/no) |
| TOMCAT6_SECURITY=no |
| |
| # Default Java options |
| # Set java.awt.headless=true if JAVA_OPTS is not set so the |
| # Xalan XSL transformer can work without X11 display on JDK 1.4+ |
| # It also looks like the default heap size of 64M is not enough for most cases |
| # so the maximum heap size is set to 128M |
| if [ -z "$JAVA_OPTS" ]; then |
| JAVA_OPTS="-Djava.awt.headless=true -Xmx128M" |
| fi |
| |
| # End of variables that can be overwritten in $DEFAULT |
| |
| # overwrite settings from default file |
| if [ -f "$DEFAULT" ]; then |
| . "$DEFAULT" |
| fi |
| |
| if [ ! -f "$CATALINA_HOME/bin/bootstrap.jar" ]; then |
| log_failure_msg "$NAME is not installed" |
| exit 1 |
| fi |
| |
| [ -f "$DAEMON" ] || exit 0 |
| |
| POLICY_CACHE="$CATALINA_BASE/work/catalina.policy" |
| |
| JAVA_OPTS="$JAVA_OPTS -Djava.endorsed.dirs=$CATALINA_HOME/endorsed -Dcatalina.base=$CATALINA_BASE -Dcatalina.home=$CATALINA_HOME -Djava.io.tmpdir=$JVM_TMP" |
| |
| # Set the JSP compiler if set in the tomcat6.default file |
| if [ -n "$JSP_COMPILER" ]; then |
| JAVA_OPTS="$JAVA_OPTS -Dbuild.compiler=$JSP_COMPILER" |
| fi |
| |
| if [ "$TOMCAT6_SECURITY" = "yes" ]; then |
| JAVA_OPTS="$JAVA_OPTS -Djava.security.manager -Djava.security.policy=$POLICY_CACHE" |
| fi |
| |
| # Set juli LogManager if logging.properties is provided |
| if [ -r "$CATALINA_BASE"/conf/logging.properties ]; then |
| JAVA_OPTS="$JAVA_OPTS "-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager" "-Djava.util.logging.config.file="$CATALINA_BASE/conf/logging.properties" |
| fi |
| |
| # Define other required variables |
| CATALINA_PID="/var/run/$NAME.pid" |
| BOOTSTRAP_CLASS=org.apache.catalina.startup.Bootstrap |
| JSVC_CLASSPATH="/usr/share/java/commons-daemon.jar:$CATALINA_HOME/bin/bootstrap.jar" |
| JSVC_CLASSPATH=$CLASSPATH:$JSVC_CLASSPATH |
| |
| # Look for Java Secure Sockets Extension (JSSE) JARs |
| if [ -z "${JSSE_HOME}" -a -r "${JAVA_HOME}/jre/lib/jsse.jar" ]; then |
| JSSE_HOME="${JAVA_HOME}/jre/" |
| fi |
| export JSSE_HOME |
| |
| case "$1" in |
| start) |
| if [ -z "$JAVA_HOME" ]; then |
| log_failure_msg "no JDK found - please set JAVA_HOME" |
| exit 1 |
| fi |
| |
| if [ ! -d "$CATALINA_BASE/conf" ]; then |
| log_failure_msg "invalid CATALINA_BASE: $CATALINA_BASE" |
| exit 1 |
| fi |
| |
| log_daemon_msg "Starting $DESC" "$NAME" |
| if start-stop-daemon --test --start --pidfile "$CATALINA_PID" \ |
| --user $TOMCAT6_USER --startas "$JAVA_HOME/bin/java" \ |
| >/dev/null; then |
| |
| # Regenerate POLICY_CACHE file |
| umask 022 |
| echo "// AUTO-GENERATED FILE from /etc/tomcat6/policy.d/" \ |
| > "$POLICY_CACHE" |
| echo "" >> "$POLICY_CACHE" |
| if ls $CATALINA_BASE/conf/policy.d/*.policy > /dev/null 2>&1 ; then |
| cat $CATALINA_BASE/conf/policy.d/*.policy \ |
| >> "$POLICY_CACHE" |
| fi |
| |
| # Remove / recreate JVM_TMP directory |
| rm -rf "$JVM_TMP" |
| mkdir "$JVM_TMP" || { |
| log_failure_msg "could not create JVM temporary directory" |
| exit 1 |
| } |
| chown $TOMCAT6_USER "$JVM_TMP" |
| cd "$JVM_TMP" |
| |
| |
| # fix storage issues on nfs mounts |
| umask 000 |
| $DAEMON -user "$TOMCAT6_USER" -cp "$JSVC_CLASSPATH" \ |
| -outfile SYSLOG -errfile SYSLOG \ |
| -pidfile "$CATALINA_PID" $JAVA_OPTS "$BOOTSTRAP_CLASS" |
| |
| sleep 5 |
| if start-stop-daemon --test --start --pidfile "$CATALINA_PID" \ |
| --user $TOMCAT6_USER --startas "$JAVA_HOME/bin/java" \ |
| >/dev/null; then |
| log_end_msg 1 |
| else |
| log_end_msg 0 |
| fi |
| else |
| log_progress_msg "(already running)" |
| log_end_msg 0 |
| fi |
| ;; |
| stop) |
| log_daemon_msg "Stopping $DESC" "$NAME" |
| if start-stop-daemon --test --start --pidfile "$CATALINA_PID" \ |
| --user "$TOMCAT6_USER" --startas "$JAVA_HOME/bin/java" \ |
| >/dev/null; then |
| log_progress_msg "(not running)" |
| else |
| $DAEMON -cp "$JSVC_CLASSPATH" -pidfile "$CATALINA_PID" \ |
| -stop "$BOOTSTRAP_CLASS" |
| fi |
| rm -rf "$JVM_TMP" |
| log_end_msg 0 |
| ;; |
| status) |
| if start-stop-daemon --test --start --pidfile "$CATALINA_PID" \ |
| --user $TOMCAT6_USER --startas "$JAVA_HOME/bin/java" \ |
| >/dev/null; then |
| |
| if [ -f "$CATALINA_PID" ]; then |
| log_success_msg "$DESC is not running, but pid file exists." |
| exit 1 |
| else |
| log_success_msg "$DESC is not running." |
| exit 3 |
| fi |
| else |
| log_success_msg "$DESC is running with pid `cat $CATALINA_PID`" |
| fi |
| ;; |
| restart|force-reload) |
| if start-stop-daemon --test --stop --pidfile "$CATALINA_PID" \ |
| --user $TOMCAT6_USER --startas "$JAVA_HOME/bin/java" \ |
| >/dev/null; then |
| $0 stop |
| sleep 1 |
| fi |
| $0 start |
| ;; |
| try-restart) |
| if start-stop-daemon --test --start --pidfile "$CATALINA_PID" \ |
| --user $TOMCAT6_USER --startas "$JAVA_HOME/bin/java" \ |
| >/dev/null; then |
| $0 start |
| fi |
| ;; |
| *) |
| log_success_msg "Usage: $0 {start|stop|restart|try-restart|force-reload|status}" |
| exit 1 |
| ;; |
| esac |
| |
| exit 0 |