This script is overkill but perhaps it will help someone. - Craig

#!/bin/sh
#################################################
# This UNIX script installs the Tomcat servlet  #
# container on Mac OS X computer systems.       #
# - - - - - - - - - - - - - - - - - - - - - - - #
# Make this script executable with:             #
#    "chmod +x installTomcat.sh"                #
# and run as root:                              #
#    "sudo ./installTomcat.sh"                  #
# - - - - - - - - - - - - - - - - - - - - - - - #
# Last modified:  Nov. 12, 2004                 #
#################################################
echo "============================="
echo "Tomcat installer for Mac OS X"
echo "============================="

#####################################
# Set trap to allow abort on signal #
#####################################
trap 'echo "Ouch. Dude! Ya fragged me." 1>&2; exit' 1 2 3 15

######################################
# 1. Set up environmental variables. #
######################################
# ----------
# Set these:
# ----------
TOMCAT_VERSION="5.5.4"
TOMCAT_BASE="/usr/local"

# arbitrary manager for tomcat-users.xml file:
TOMCAT_USER="somebody"
TOMCAT_PASS="something"

# for setting permissions:
USER="me"  # Change to your user name!
GROUP="wheel"

# where startup/shutdown scripts will be installed:
USER_SCRIPT_DIR="/Users/"${USER}"/bin"

# -----------------------------
# and perhaps these (optional):
# -----------------------------
# Note:  if you want to install JMX, you must download and
# install zip file in ${TOMCAT_BASE} before running script
INSTALL_JMX="yes"
JMX_ARC="jmx-1_2_1-scsl.zip"
JMX_DIR="jmx-1_2_1-src"

# --------------------------
# but don't muck with these!
# --------------------------
JAVA_HOME="/Library/Java/Home"
JAVA_EXT="/Library/Java/Extensions"
TOMCAT_HOME=${TOMCAT_BASE}"/jakarta-tomcat-"${TOMCAT_VERSION}
CATALINA_HOME=${TOMCAT_HOME}
REMOTE_HOME="http://apache.edgescape.com/jakarta/tomcat-5/ v"${TOMCAT_VERSION}"/bin/jakarta-tomcat-"${TOMCAT_VERSION}
TOMCAT_USERS_FILE=${TOMCAT_HOME}"/conf/tomcat-users.xml"
JMX_FILE=${TOMCAT_BASE}/${JMX_ARC}


##############################
# 2. Get rid of old version. #
##############################
cd ${TOMCAT_BASE}
if test -e ${TOMCAT_HOME}/bin; then
        echo "----------------------"
        echo "Saving old version ..."
        echo "----------------------"
        gnutar -cf - -C ${TOMCAT_HOME} . | gzip --best > oldTomcat.tar.gz
        echo "... done."

        echo "---------------------"
        echo "Zapping old files ..."
        echo "---------------------"
        \rm -rf ${TOMCAT_HOME}/*
        rmdir ${TOMCAT_HOME}
        echo "... done."
fi

#############################
# 3. Download source files. #
#############################
echo "-----------------------------------------------"
echo "Downloading Tomcat binary files from Apache ..."
echo "-----------------------------------------------"
sudo curl ${REMOTE_HOME}.tar.gz -o tomcat.tar.gz
sudo curl ${REMOTE_HOME}-compat.tar.gz -o compat.tar.gz
sudo curl ${REMOTE_HOME}-admin.tar.gz -o admin.tar.gz
echo "... done."

##############################
# 4. Inflate Tomcat tarballs #
##############################
echo "----------------------------------"
echo "Expanding Tomcat archive files ..."
echo "----------------------------------"
sudo gnutar -xzvf tomcat.tar.gz
sudo gnutar -xzvf compat.tar.gz
sudo gnutar -xzvf admin.tar.gz

case "$INSTALL_JMX" in
[yY]|[yY][eE][sS]) # YES:
echo "You have elected to install Java Management Extensions (JMX RI)."
if test -e ${JMX_FILE}
then
echo "File '"${JMX_FILE}"' is available. Installing JMX..."
sudo unzip ${JMX_FILE}
sudo mv ${TOMCAT_BASE}/${JMX_DIR}/lib/*.jar ${TOMCAT_HOME}/common/endorsed/
else
echo "File '"${JMX_FILE}"' NOT found!"
echo "- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -"
echo "Please visit Sun Microsystem's Download Center at:"
echo " http://wwws.sun.com/software/communitysource/jmx/download.html";
echo "You will need to download version 1.2 or greater."
echo "- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -"
INSTALL_JMX="no"
fi
;;
[nN]|[nN][oO]) # NO:
echo "Java Management Extensions (JMX RI) NOT installed."
;;
*) # LAME ANSWER:
echo "Java Management Extensions (JMX RI) NOT installed."
;;
esac


echo "... done."

####################################
# 5. Give user ownership of Tomcat #
####################################
echo "-----------------------------"
echo "Granting feline ownership ..."
echo "-----------------------------"
sudo chown -R ${USER}:${GROUP} ${TOMCAT_HOME}
echo "... done."

######################################
# 6. Modify the Tomcat users file to #
#    include an admin/manager user   #
######################################
echo "------------------------------------"
echo "Creating a new Tomcat users file ..."
echo "------------------------------------"
mv ${TOMCAT_USERS_FILE} ${TOMCAT_USERS_FILE}.orig

file=${TOMCAT_USERS_FILE}

echo "<?xml version='1.0' encoding='utf-8'?>" >> $file
echo '<!--' >> $file
echo ' NOTE: By default, no user is included in the "manager" role required' >> $file
echo ' to operate the "/manager" web application. If you wish to use this app,' >> $file
echo ' you must define such a user - the username and password are arbitrary.' >> $file
echo '-->' >> $file
echo '<tomcat-users>' >> $file
echo ' <role rolename="tomcat"/>' >> $file
echo ' <role rolename="role1"/>' >> $file
echo ' <role rolename="admin"/>' >> $file
echo ' <role rolename="manager"/>' >> $file
echo ' <user name="tomcat" password="tomcat" roles="tomcat,admin,manager" />' >> $file
echo ' <user name="role1" password="tomcat" roles="role1" />' >> $file
echo ' <user name="both" password="tomcat" roles="tomcat,role1" />' >> $file
echo ' <user name="'${TOMCAT_USER}'" password="'${TOMCAT_PASS}'" roles="admin,manager" />' >> $file
echo '</tomcat-users>' >> $file
echo "... done."


##########################################
# 7. Create startup and shutdown scripts #
##########################################
echo "---------------------------------------------------------"
echo "Creating Tomcat startup and shutdown scripts for user ..."
echo "---------------------------------------------------------"
file=${USER_SCRIPT_DIR}"/start_tomcat.sh"
if test -e $file
        then mv $file $file.orig
fi
echo "#!/bin/sh" >> $file
echo "export CATALINA_HOME="${CATALINA_HOME} >> $file
echo "export JAVA_HOME="${JAVA_HOME} >> $file
echo "\$CATALINA_HOME/bin/startup.sh" >> $file
chmod 755 $file

file=${USER_SCRIPT_DIR}"/stop_tomcat.sh"
if test -e $file
        then mv $file $file.orig
fi
echo "#!/bin/sh" >> $file
echo "export CATALINA_HOME="${CATALINA_HOME} >> $file
echo "export JAVA_HOME="${JAVA_HOME} >> $file
echo "\$CATALINA_HOME/bin/shutdown.sh" >> $file
chmod 755 $file

echo "... done."

###############
# 8. Clean up #
###############
echo "---------------"
echo "Cleaning up ..."
echo "---------------"
sudo \rm -f ${TOMCAT_BASE}/tomcat.tar.gz
sudo \rm -f ${TOMCAT_BASE}/compat.tar.gz
sudo \rm -f ${TOMCAT_BASE}/admin.tar.gz

case "$INSTALL_JMX" in
        [yY]|[yY][eE][sS]) # YES:
#               sudo \rm -f ${JMX_FILE}
                sudo \rm -rf ${TOMCAT_BASE}/${JMX_DIR}/*
                sudo rmdir ${TOMCAT_BASE}/${JMX_DIR}
        ;;
        *) # IGNORE:
        ;;
esac

echo "... all done!"

######################
# 9. Words of advice #
######################
echo "-----------------"
echo "Some useful tips:"
echo "-----------------"
echo "1. Start up Tomcat with the command:"
echo "   ${USER_SCRIPT_DIR}/start_tomcat.sh"
echo "2. Shut down Tomcat with the command:"
echo "   ${USER_SCRIPT_DIR}/stop_tomcat.sh"
echo "3. To test Tomcat, load this URL in your web browser:"
echo "    http://localhost:8080/";
echo "4. If Tomcat chokes on a hairball and starts spewing"
echo "   ClassLoader errors in the log file:"
echo "   ${TOMCAT_HOME}/logs/catalina.out"
echo "   then clean out your Java extensions folders:"
echo "   ${JAVA_EXT} and ~${JAVA_EXT}"
echo "   to remove all conflicts."
echo "Meow!"

exit


--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]



Reply via email to