Advertisement
Guest User

Untitled

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