<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://aznot.com/index.php?action=history&amp;feed=atom&amp;title=Tomcat</id>
	<title>Tomcat - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://aznot.com/index.php?action=history&amp;feed=atom&amp;title=Tomcat"/>
	<link rel="alternate" type="text/html" href="https://aznot.com/index.php?title=Tomcat&amp;action=history"/>
	<updated>2026-05-07T03:51:49Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.41.0</generator>
	<entry>
		<id>https://aznot.com/index.php?title=Tomcat&amp;diff=4656&amp;oldid=prev</id>
		<title>Kenneth: /* Apache Proxy Pass */</title>
		<link rel="alternate" type="text/html" href="https://aznot.com/index.php?title=Tomcat&amp;diff=4656&amp;oldid=prev"/>
		<updated>2018-04-27T21:22:09Z</updated>

		<summary type="html">&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Apache Proxy Pass&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== Apache Tomcat ==&lt;br /&gt;
&lt;br /&gt;
Apache Tomcat - http://tomcat.apache.org/&lt;br /&gt;
&lt;br /&gt;
:Apache Tomcat is an open source software implementation of the Java Servlet and JavaServer Pages technologies. The Java Servlet and JavaServer Pages specifications are developed under the Java Community Process.&lt;br /&gt;
&lt;br /&gt;
== Installing Tomcat ==&lt;br /&gt;
&lt;br /&gt;
=== Package Manager ===&lt;br /&gt;
&lt;br /&gt;
Yum:&lt;br /&gt;
 yum install tomcat5&lt;br /&gt;
&lt;br /&gt;
Apt:&lt;br /&gt;
 apt-get install tomcat6&lt;br /&gt;
&lt;br /&gt;
=== Manual Installation ===&lt;br /&gt;
&lt;br /&gt;
Java&lt;br /&gt;
 # RPM&lt;br /&gt;
 sudo su -&lt;br /&gt;
 cd /opt&lt;br /&gt;
 # http://www.oracle.com/technetwork/java/javase/downloads/java-archive-downloads-javase6-419409.html#jdk-6u45-oth-JPR&lt;br /&gt;
 # wget http://install.oeey.com/jdk-6u45-linux-x64-rpm.bin&lt;br /&gt;
 wget http://install.oeey.com/jdk-6u45-linux-amd64.rpm&lt;br /&gt;
 rpm -Uvh jdk-6u45-linux-amd64.rpm&lt;br /&gt;
 ln -s /usr/java/jdk1.6.0_23 java&lt;br /&gt;
&lt;br /&gt;
 # Non-RPM&lt;br /&gt;
 sudo su -&lt;br /&gt;
 cd /opt&lt;br /&gt;
 # http://www.oracle.com/technetwork/java/javase/downloads/java-archive-downloads-javase6-419409.html#jdk-6u45-oth-JPR&lt;br /&gt;
 wget http://install.oeey.com/jdk-6u45-linux-x64.bin&lt;br /&gt;
 chmod u+x jdk-6u45-linux-x64.bin&lt;br /&gt;
 ./jdk-6u45-linux-x64.bin&lt;br /&gt;
 ln -s jdk1.6.0_45 java&lt;br /&gt;
&lt;br /&gt;
Tomcat 5.5:&lt;br /&gt;
 sudo su -&lt;br /&gt;
 cd /opt/&lt;br /&gt;
 wget http://apache.cs.utah.edu/tomcat/tomcat-5/v5.5.34/bin/apache-tomcat-5.5.34.tar.gz&lt;br /&gt;
 tar -zvxf apache-tomcat-5.5.34.tar.gz&lt;br /&gt;
 ln -s apache-tomcat-5.5.34 tomcat5&lt;br /&gt;
&lt;br /&gt;
Tomcat 6: (PREFERRED)&lt;br /&gt;
 sudo su -&lt;br /&gt;
 cd /opt/&lt;br /&gt;
 # wget http://apache.cs.utah.edu/tomcat/tomcat-6/v6.0.43/bin/apache-tomcat-6.0.43.tar.gz&lt;br /&gt;
 wget http://install.oeey.com/apache-tomcat-6.0.43.tar.gz&lt;br /&gt;
 tar -zvxf apache-tomcat-6.0.43.tar.gz&lt;br /&gt;
 ln -s apache-tomcat-6.0.43 tomcat6&lt;br /&gt;
 echo &amp;quot;export JAVA_HOME=/opt/java&amp;quot; &amp;gt;&amp;gt; tomcat6/bin/setenv.sh&lt;br /&gt;
 echo &amp;quot;export CATALINA_HOME=/opt/tomcat6&amp;quot; &amp;gt;&amp;gt; ~/.bashrc&lt;br /&gt;
&lt;br /&gt;
Tomcat 7:&lt;br /&gt;
 sudo su -&lt;br /&gt;
 cd /opt/&lt;br /&gt;
 wget http://apache.cs.utah.edu/tomcat/tomcat-7/v7.0.22/bin/apache-tomcat-7.0.22.tar.gz&lt;br /&gt;
 tar -zvxf apache-tomcat-7.0.22.tar.gz&lt;br /&gt;
 ln -s apache-tomcat-7.0.22 tomcat7&lt;br /&gt;
&lt;br /&gt;
== Folder Structure ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
bin/  - management scripts&lt;br /&gt;
conf/  - configuration files&lt;br /&gt;
lib/  - libraries&lt;br /&gt;
logs/  - application and system logs&lt;br /&gt;
  - catalina.out&lt;br /&gt;
  - catalina.[date].log&lt;br /&gt;
  - houst-manager.[date].log&lt;br /&gt;
  - localhost.[date].log&lt;br /&gt;
  - manager.[date].log&lt;br /&gt;
temp/  - temporary artifacts from web apps&lt;br /&gt;
webapps/  - web applications&lt;br /&gt;
work/  - internal temp folder for tomcat&lt;br /&gt;
&lt;br /&gt;
LICENSE&lt;br /&gt;
NOTICE&lt;br /&gt;
RELEASE-NOTES&lt;br /&gt;
RUNNING.txt&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Startup Management ==&lt;br /&gt;
&lt;br /&gt;
This can be done as any user, as long as the configured ports are not restricted.&lt;br /&gt;
&lt;br /&gt;
Startup:&lt;br /&gt;
 bin/startup.sh&lt;br /&gt;
&lt;br /&gt;
Shutdown:&lt;br /&gt;
 bin/shutdown.sh&lt;br /&gt;
&lt;br /&gt;
== Configuration ==&lt;br /&gt;
&lt;br /&gt;
=== Listening Port ===&lt;br /&gt;
&lt;br /&gt;
conf/server.xml:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;Server port=&amp;quot;8005&amp;quot; shutdown=&amp;quot;SHUTDOWN&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;Connector port=&amp;quot;8080&amp;quot; protocol=&amp;quot;HTTP/1.1&amp;quot;&lt;br /&gt;
               connectionTimeout=&amp;quot;20000&amp;quot;&lt;br /&gt;
               redirectPort=&amp;quot;8443&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;Connector port=&amp;quot;8009&amp;quot; protocol=&amp;quot;AJP/1.3&amp;quot; redirectPort=&amp;quot;8443&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note: If you don&amp;#039;t need AJP, comment out the AJP connector.&lt;br /&gt;
&lt;br /&gt;
Note: Change both shutdown and connector port if you wish to run multiple copies of Tomcat on the server.&lt;br /&gt;
&lt;br /&gt;
=== Tomcat Users ===&lt;br /&gt;
&lt;br /&gt;
There are no default users:&lt;br /&gt;
&lt;br /&gt;
$CATALINA_HOME/conf/tomcat-users.xml: (with a whole bunch of comments)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;#039;1.0&amp;#039; encoding=&amp;#039;utf-8&amp;#039;?&amp;gt;&lt;br /&gt;
&amp;lt;tomcat-users&amp;gt;&lt;br /&gt;
&amp;lt;/tomcat-users&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To access the manager add the following...&lt;br /&gt;
&lt;br /&gt;
$CATALINA_HOME/conf/tomcat-users.xml:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;#039;1.0&amp;#039; encoding=&amp;#039;utf-8&amp;#039;?&amp;gt;&lt;br /&gt;
&amp;lt;tomcat-users&amp;gt;&lt;br /&gt;
  &amp;lt;role rolename=&amp;quot;manager&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;role rolename=&amp;quot;admin&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;user username=&amp;quot;admin&amp;quot; password=&amp;quot;admin&amp;quot; roles=&amp;quot;manager,admin&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/tomcat-users&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Default Application ===&lt;br /&gt;
&lt;br /&gt;
The default application hosted in the ROOT folder.  To change this, put the new app in place and restart tomcat.&lt;br /&gt;
 webapps/ROOT&lt;br /&gt;
&lt;br /&gt;
== Management ==&lt;br /&gt;
&lt;br /&gt;
=== Tomcat Manager ===&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Tomcat Web Application Manager&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Add a user with role &amp;quot;manger&amp;quot; to tomcat-users.xml and access here:&lt;br /&gt;
 http://localhost:8080/manager/html&lt;br /&gt;
&lt;br /&gt;
From here you can deploy new apps, and remove old.&lt;br /&gt;
&lt;br /&gt;
== Initial Cleanup ==&lt;br /&gt;
&lt;br /&gt;
 cd $CATALINA_HOME&lt;br /&gt;
&lt;br /&gt;
 mv webapps webapps-default&lt;br /&gt;
 mkdir -p webapps/ROOT&lt;br /&gt;
 echo &amp;quot;Hello World&amp;quot; &amp;gt; webapps/ROOT/index.html&lt;br /&gt;
&lt;br /&gt;
 rm -f logs/*&lt;br /&gt;
 rm -rf work/*&lt;br /&gt;
 rm -rf temp/*&lt;br /&gt;
 rm -f bin/*bat&lt;br /&gt;
&lt;br /&gt;
 mkdir .archive&lt;br /&gt;
 mv conf/Catalina webapps-default LICENSE NOTICE RELEASE-NOTES RUNNING.txt  .archive&lt;br /&gt;
&lt;br /&gt;
Note: To remove the manager(s) logging, you will need to manually remove the &amp;#039;manager&amp;#039; lines from conf/logging.properties.  &amp;quot;ConsoleHandler&amp;quot; should also be removed.&lt;br /&gt;
&lt;br /&gt;
Redirect console to specified file (in setenv.sh):&lt;br /&gt;
 CATALINA_OUT=/opt/tomcat/logs/console.out&lt;br /&gt;
&lt;br /&gt;
Note: To remove catalina.out completely, set &amp;quot;export CATALINA_OUT=/dev/null&amp;quot; in setenv.sh&lt;br /&gt;
&lt;br /&gt;
Remove manager logging:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd /opt/tomcat/conf&lt;br /&gt;
cp logging.properties logging.properties.original&lt;br /&gt;
sed -i &amp;#039;/^3manager/d&amp;#039; logging.properties&lt;br /&gt;
sed -i &amp;#039;/\/manager/d&amp;#039; logging.properties&lt;br /&gt;
sed -i &amp;#039;/^4host-manager/d&amp;#039; logging.properties&lt;br /&gt;
sed -i &amp;#039;/\/host-manager/d&amp;#039; logging.properties&lt;br /&gt;
sed -i &amp;#039;s/3manager.org.apache.juli.FileHandler, 4host-manager.org.apache.juli.FileHandler,//&amp;#039; logging.properties&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Cleanup ==&lt;br /&gt;
&lt;br /&gt;
Note: Can be done anytime Tomcat is stopped.&lt;br /&gt;
&lt;br /&gt;
 cd /opt/tomcat&lt;br /&gt;
 rm -f logs/*&lt;br /&gt;
 rm -rf work/*&lt;br /&gt;
 rm -rf temp/*&lt;br /&gt;
&lt;br /&gt;
== Installation Tutorial ==&lt;br /&gt;
&lt;br /&gt;
[http://www.puschitz.com/InstallingTomcat.html Installing Tomcat on Linux - Tomcat Installation on Linux - Apache Tomcat HOWTO]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Application Developer&amp;#039;s Guide - Table of Contents - http://tomcat.apache.org/tomcat-6.0-doc/appdev/index.html&lt;br /&gt;
* Introduction - Briefly describes the information covered here, with links and references to other sources of information.&lt;br /&gt;
* Installation - Covers acquiring and installing the required software components to use Tomcat for web application development.&lt;br /&gt;
* Deployment Organization - Discusses the standard directory layout for a web application (defined in the Servlet API Specification), the Web Application Deployment Descriptor, and options for integration with Tomcat in your development environment.&lt;br /&gt;
* Source Organization - Describes a useful approach to organizing the source code directories for your project, and introduces the build.xml used by Ant to manage compilation.&lt;br /&gt;
* Development Processes - Provides brief descriptions of typical development processes utilizing the recommended deployment and source organizations.&lt;br /&gt;
* Example Application - This directory contains a very simple, but functionally complete, &amp;quot;Hello, World&amp;quot; application built according to the principles described in this manual. You can use this application to practice using the described techniques.&lt;br /&gt;
&lt;br /&gt;
== Apache Tomcat Native library ==&lt;br /&gt;
&lt;br /&gt;
Apache Portable Runtime and Tomcat - http://tomcat.apache.org/tomcat-5.5-doc/apr.html&lt;br /&gt;
&lt;br /&gt;
To stop the following error from appearing...&lt;br /&gt;
&lt;br /&gt;
Error:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
==&amp;gt; catalina.out &amp;lt;==&lt;br /&gt;
Oct 22, 2011 10:08:46 PM org.apache.catalina.core.AprLifecycleListener init&lt;br /&gt;
INFO: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: /usr/java/jdk1.6.0_23/jre/lib/i386/client:/usr/java/jdk1.6.0_23/jre/lib/i386:/usr/java/jdk1.6.0_23/jre/../lib/i386:/usr/java/packages/lib/i386:/lib:/usr/lib&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dependencies:&lt;br /&gt;
 yum -y install gcc make openssl-devel&lt;br /&gt;
 apt-get install gcc make libssl-dev&lt;br /&gt;
&lt;br /&gt;
Build APR libraries:&lt;br /&gt;
 # BUILD APACHE PORTABLE RUNTIME&lt;br /&gt;
 # APACHE PORTABLE RUNTIME SITE: http://apr.apache.org/&lt;br /&gt;
 mkdir -p ~/.src ; cd ~/.src&lt;br /&gt;
 wget http://mirror.reverse.net/pub/apache/apr/apr-1.5.1.tar.gz&lt;br /&gt;
 tar -zvxf apr-1.5.1.tar.gz&lt;br /&gt;
 cd apr-1.5.1&lt;br /&gt;
 ./configure --prefix=/opt/apr&lt;br /&gt;
 make clean &amp;amp;&amp;amp; make &amp;amp;&amp;amp; sudo make install&lt;br /&gt;
&lt;br /&gt;
Build Tomcat Native Library&lt;br /&gt;
 # BUILD APACHE TOMCAT NATIVE LIBRARY&lt;br /&gt;
 # APACHE TOMCAT NATIVE LIBRARY SITE: http://tomcat.apache.org/tomcat-5.5-doc/apr.html&lt;br /&gt;
 # The wrapper library sources are located in the Tomcat binary bundle, in the bin/tomcat-native.tar.gz archive&lt;br /&gt;
 yum -y install openssl-devel&lt;br /&gt;
 apt-get install libssl-dev&lt;br /&gt;
 mkdir -p ~/.src ; cd ~/.src&lt;br /&gt;
 cp /opt/tomcat/bin/tomcat-native.tar.gz ~/.src&lt;br /&gt;
 tar -zvxf tomcat-native.tar.gz&lt;br /&gt;
 cd tomcat-native-1.1.32-src/jni/native&lt;br /&gt;
 ### READ &amp;quot;BUILDING&amp;quot; FOR BUILD INSTRUCTIONS&lt;br /&gt;
 # export JAVA_HOME=/opt/java # not needed with --with-java-home= option&lt;br /&gt;
 ./configure --with-java-home=/opt/java --with-apr=/opt/apr --with-ssl=yes&lt;br /&gt;
 make clean &amp;amp;&amp;amp; make&lt;br /&gt;
 ### PRODUCES: .libs/libtcnative-1.so&lt;br /&gt;
&lt;br /&gt;
 ### COPY LIBRARY TO SOMEWHERE IN PATH LISTED IN ERROR LOGS...&lt;br /&gt;
 #sudo mkdir /opt/java/lib/i386&lt;br /&gt;
 sudo cp .libs/libtcnative-1.so /opt/java/jre/lib/amd64/&lt;br /&gt;
 ### OR add to bin/setenv.sh:&lt;br /&gt;
   sudo cp .libs/libtcnative-1.so /opt/tomcat/lib&lt;br /&gt;
   CATALINA_OPTS=&amp;quot;$CATALINA_OPTS -Djava.library.path=/opt/tomcat/lib&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Success:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
==&amp;gt; catalina.out &amp;lt;==&lt;br /&gt;
Oct 22, 2011 10:51:44 PM org.apache.catalina.core.AprLifecycleListener init&lt;br /&gt;
INFO: Loaded APR based Apache Tomcat Native library 1.1.20.&lt;br /&gt;
Oct 22, 2011 10:51:44 PM org.apache.catalina.core.AprLifecycleListener init&lt;br /&gt;
INFO: APR capabilities: IPv6 [true], sendfile [true], accept filters [false], random [true].&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you get the following error, you did not compile in SSL to the native library:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Oct 22, 2011 10:51:44 PM org.apache.catalina.core.AprLifecycleListener lifecycleEvent&lt;br /&gt;
INFO: Failed to initialize the SSLEngine.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
See [[Scalix#Tomcat_-_Apache_Tomcat_Native_library]]&lt;br /&gt;
&lt;br /&gt;
== Memory Settings ==&lt;br /&gt;
&lt;br /&gt;
setenv.sh: (add if needed)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 # not sure if this one is working correctly&lt;br /&gt;
 CATALINA_OPTS=&amp;quot;$CATALINA_OPTS -server -Xms1024m -Xmx3052m&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
JAVA_OPTS=&amp;quot;-Djava.awt.headless=true -Dfile.encoding=UTF-8\&lt;br /&gt;
-server -Xms1536m -Xmx1536m\&lt;br /&gt;
-XX:NewSize=256m -XX:MaxNewSize=256m -XX:PermSize=256m\&lt;br /&gt;
-XX:MaxPermSize=256m -XX:+DisableExplicitGC&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 export JAVA_OPTS=&amp;quot;-Xmx512m -XX:MaxPermSize=128m&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== server.xml ==&lt;br /&gt;
&lt;br /&gt;
=== Default server.xml ===&lt;br /&gt;
&lt;br /&gt;
Without comments:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;#039;1.0&amp;#039; encoding=&amp;#039;utf-8&amp;#039;?&amp;gt;&lt;br /&gt;
&amp;lt;Server port=&amp;quot;8005&amp;quot; shutdown=&amp;quot;SHUTDOWN&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;Listener className=&amp;quot;org.apache.catalina.core.AprLifecycleListener&amp;quot; SSLEngine=&amp;quot;on&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;Listener className=&amp;quot;org.apache.catalina.core.JasperListener&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;Listener className=&amp;quot;org.apache.catalina.core.JreMemoryLeakPreventionListener&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;Listener className=&amp;quot;org.apache.catalina.mbeans.ServerLifecycleListener&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;Listener className=&amp;quot;org.apache.catalina.mbeans.GlobalResourcesLifecycleListener&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;GlobalNamingResources&amp;gt;&lt;br /&gt;
    &amp;lt;Resource name=&amp;quot;UserDatabase&amp;quot; auth=&amp;quot;Container&amp;quot;&lt;br /&gt;
              type=&amp;quot;org.apache.catalina.UserDatabase&amp;quot;&lt;br /&gt;
              description=&amp;quot;User database that can be updated and saved&amp;quot;&lt;br /&gt;
              factory=&amp;quot;org.apache.catalina.users.MemoryUserDatabaseFactory&amp;quot;&lt;br /&gt;
              pathname=&amp;quot;conf/tomcat-users.xml&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;/GlobalNamingResources&amp;gt;&lt;br /&gt;
  &amp;lt;Service name=&amp;quot;Catalina&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Connector port=&amp;quot;8080&amp;quot; protocol=&amp;quot;HTTP/1.1&amp;quot;&lt;br /&gt;
               connectionTimeout=&amp;quot;20000&amp;quot;&lt;br /&gt;
               redirectPort=&amp;quot;8443&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;Connector port=&amp;quot;8009&amp;quot; protocol=&amp;quot;AJP/1.3&amp;quot; redirectPort=&amp;quot;8443&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;Engine name=&amp;quot;Catalina&amp;quot; defaultHost=&amp;quot;localhost&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Realm className=&amp;quot;org.apache.catalina.realm.UserDatabaseRealm&amp;quot;&lt;br /&gt;
             resourceName=&amp;quot;UserDatabase&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;Host name=&amp;quot;localhost&amp;quot;  appBase=&amp;quot;webapps&amp;quot;&lt;br /&gt;
            unpackWARs=&amp;quot;true&amp;quot; autoDeploy=&amp;quot;true&amp;quot;&lt;br /&gt;
            xmlValidation=&amp;quot;false&amp;quot; xmlNamespaceAware=&amp;quot;false&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;/Host&amp;gt;&lt;br /&gt;
    &amp;lt;/Engine&amp;gt;&lt;br /&gt;
  &amp;lt;/Service&amp;gt;&lt;br /&gt;
&amp;lt;/Server&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Minimal server.xml ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;#039;1.0&amp;#039; encoding=&amp;#039;utf-8&amp;#039;?&amp;gt;&lt;br /&gt;
&amp;lt;Server port=&amp;quot;8005&amp;quot; shutdown=&amp;quot;SHUTDOWN&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;!-- APR library loader. --&amp;gt;&lt;br /&gt;
	&amp;lt;Listener className=&amp;quot;org.apache.catalina.core.AprLifecycleListener&amp;quot; SSLEngine=&amp;quot;on&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;!-- Initialize Jasper prior to webapps are loaded. JSP 1.2. --&amp;gt;&lt;br /&gt;
	&amp;lt;!-- &amp;lt;Listener className=&amp;quot;org.apache.catalina.core.JasperListener&amp;quot; /&amp;gt; --&amp;gt;&lt;br /&gt;
	&amp;lt;!-- Prevent memory leaks due to use of particular java/javax APIs --&amp;gt;&lt;br /&gt;
	&amp;lt;Listener className=&amp;quot;org.apache.catalina.core.JreMemoryLeakPreventionListener&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;Service name=&amp;quot;Catalina&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
		&amp;lt;Connector port=&amp;quot;8080&amp;quot; protocol=&amp;quot;HTTP/1.1&amp;quot;&lt;br /&gt;
			connectionTimeout=&amp;quot;20000&amp;quot; redirectPort=&amp;quot;8443&amp;quot;&lt;br /&gt;
		/&amp;gt;&lt;br /&gt;
		&amp;lt;Connector port=&amp;quot;8443&amp;quot; protocol=&amp;quot;HTTP/1.1&amp;quot; SSLEnabled=&amp;quot;true&amp;quot;&lt;br /&gt;
			maxThreads=&amp;quot;150&amp;quot; scheme=&amp;quot;https&amp;quot; secure=&amp;quot;true&amp;quot; sslProtocol=&amp;quot;TLSv1&amp;quot;&lt;br /&gt;
			SSLCertificateFile=&amp;quot;/etc/t0e.pem&amp;quot;&lt;br /&gt;
			SSLCertificateKeyFile=&amp;quot;/etc/t0e.pem&amp;quot;&lt;br /&gt;
		/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
		&amp;lt;Engine name=&amp;quot;Catalina&amp;quot; defaultHost=&amp;quot;localhost&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;Host name=&amp;quot;localhost&amp;quot; appBase=&amp;quot;webapps&amp;quot;&lt;br /&gt;
				unpackWARs=&amp;quot;true&amp;quot; autoDeploy=&amp;quot;true&amp;quot;&lt;br /&gt;
				xmlValidation=&amp;quot;false&amp;quot; xmlNamespaceAware=&amp;quot;false&amp;quot;&lt;br /&gt;
			/&amp;gt;&lt;br /&gt;
		&amp;lt;/Engine&amp;gt;&lt;br /&gt;
	&amp;lt;/Service&amp;gt;&lt;br /&gt;
&amp;lt;/Server&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== bin/setenv.sh ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
JAVA_OPTS=&amp;quot;-Djava.awt.headless=true -Xms512m -Xmx512m -XX:MaxPermSize=256m -server&amp;quot;&lt;br /&gt;
CATALINA_OPTS=&amp;quot;$CATALINA_OPTS -Djava.library.path=/opt/tomcat/lib&amp;quot;&lt;br /&gt;
JAVA_HOME=/opt/java&lt;br /&gt;
CATALINA_OUT=/opt/tomcat/logs/console.out&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== iptables redirect ==&lt;br /&gt;
&lt;br /&gt;
/etc/sysconfig/iptables&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Generated by iptables-save v1.3.5 on Sat Oct  8 18:41:33 2011&lt;br /&gt;
*filter&lt;br /&gt;
:INPUT ACCEPT [61:6076]&lt;br /&gt;
:FORWARD ACCEPT [0:0]&lt;br /&gt;
:OUTPUT ACCEPT [39:8144]&lt;br /&gt;
COMMIT&lt;br /&gt;
*nat&lt;br /&gt;
:OUTPUT ACCEPT&lt;br /&gt;
-A PREROUTING -i eth0 -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 8080&lt;br /&gt;
-A PREROUTING -i eth0 -p tcp -m tcp --dport 443 -j REDIRECT --to-ports 8443&lt;br /&gt;
COMMIT&lt;br /&gt;
# Completed on Sat Oct  8 18:41:33 2011&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Apache Proxy Pass ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Proxy Pass to Jenkins:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
NameVirtualHost *:80&lt;br /&gt;
&amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
    ServerName jenkins.oeey.com&lt;br /&gt;
&lt;br /&gt;
    #Forwarding Traffic&lt;br /&gt;
    #RewriteEngine on&lt;br /&gt;
    #RewriteRule ^(/.*)  http://localhost:8080/$1   [P]&lt;br /&gt;
&lt;br /&gt;
    # Reverse Proxy&lt;br /&gt;
    ProxyPass         /  http://localhost:8080/ nocanon&lt;br /&gt;
    ProxyPassReverse  /  http://localhost:8080/&lt;br /&gt;
&lt;br /&gt;
    # Forward Proxy&lt;br /&gt;
    ProxyRequests     Off&lt;br /&gt;
    AllowEncodedSlashes NoDecode&lt;br /&gt;
&lt;br /&gt;
    # Local reverse proxy authorization override&lt;br /&gt;
    # Most unix distribution deny proxy by default (ie /etc/apache2/mods-enabled/proxy.conf in Ubuntu)&lt;br /&gt;
    #&amp;lt;Proxy http://localhost:8080/jenkins*&amp;gt;&lt;br /&gt;
    &amp;lt;Proxy *&amp;gt;&lt;br /&gt;
        Order deny,allow&lt;br /&gt;
        Allow from all&lt;br /&gt;
    &amp;lt;/Proxy&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    ServerAdmin admin@oeey.com&lt;br /&gt;
    ErrorLog logs/jenkins.oeey.com-error_log&lt;br /&gt;
    CustomLog logs/jenkins.oeey.com-access_log common&lt;br /&gt;
&amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
    ServerName oeey.com&lt;br /&gt;
    ServerAlias www.oeey.com&lt;br /&gt;
&lt;br /&gt;
    # Reverse Proxy&lt;br /&gt;
    ProxyPass         /  http://localhost:8080/&lt;br /&gt;
    ProxyPassReverse  /  http://localhost:8080/&lt;br /&gt;
&lt;br /&gt;
    ServerAdmin admin@oeey.com&lt;br /&gt;
    ErrorLog logs/oeey.com-error_log&lt;br /&gt;
    CustomLog logs/oeey.com-access_log common&lt;br /&gt;
&amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ubuntu:&lt;br /&gt;
 a2enmod proxy&lt;br /&gt;
 a2enmod proxy_http&lt;br /&gt;
 service apache2 restart&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Apache Proxy Pass HTTPS ===&lt;br /&gt;
&lt;br /&gt;
Proxy Pass to Jenkins:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
NameVirtualHost *:443&lt;br /&gt;
&amp;lt;VirtualHost *:443&amp;gt;&lt;br /&gt;
    ServerName jenkins.oeey.com&lt;br /&gt;
&lt;br /&gt;
    # Reverse Proxy&lt;br /&gt;
    ProxyPass         /  http://localhost:8080/&lt;br /&gt;
    ProxyPassReverse  /  http://localhost:8080/&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== SSL ==&lt;br /&gt;
&lt;br /&gt;
Apache Tomcat 6.0 - SSL Configuration HOW-TO - http://tomcat.apache.org/tomcat-6.0-doc/ssl-howto.html&lt;br /&gt;
&lt;br /&gt;
If the installation uses APR - i.e. you have installed the Tomcat native library - then it will use the APR SSL implementation, otherwise it will use the Java JSSE implementation.&lt;br /&gt;
&lt;br /&gt;
To enable HTTPS:&lt;br /&gt;
* Uncomment the &amp;quot;SSL HTTP/1.1 Connector&amp;quot; entry in $CATALINA_BASE/conf/server.xml&lt;br /&gt;
&lt;br /&gt;
To disable HTTP:&lt;br /&gt;
* Comment the &amp;quot;&amp;lt;Connector port=&amp;quot;8080&amp;quot; protocol=&amp;quot;HTTP/1.1&amp;quot;...&amp;quot; entry in $CATALINA_BASE/conf/server.xml&lt;br /&gt;
&lt;br /&gt;
=== SSL with Java keystore ===&lt;br /&gt;
&lt;br /&gt;
Tomcat currently operates only on JKS, PKCS11 or PKCS12 format keystores.&lt;br /&gt;
&lt;br /&gt;
Create a keystore file to store the server&amp;#039;s private key and self-signed certificate by executing the following command:&lt;br /&gt;
 $JAVA_HOME/bin/keytool -genkey -alias tomcat -keyalg RSA&lt;br /&gt;
 # use default password of &amp;#039;changeit&amp;#039;, or specify alternate in server.xml&lt;br /&gt;
 # key password must match keystore password&lt;br /&gt;
 # this generates ~/.keystore&lt;br /&gt;
&lt;br /&gt;
To generate the keystore in an alternate location:&lt;br /&gt;
 $JAVA_HOME/bin/keytool -genkey -alias tomcat -keyalg RSA -keystore [PATH_FOR_KEYSTORE]&lt;br /&gt;
&lt;br /&gt;
Uncomment the &amp;quot;SSL HTTP/1.1 Connector&amp;quot; entry in $CATALINA_BASE/conf/server.xml&lt;br /&gt;
&lt;br /&gt;
Convert OpenSSL PEM to PKCS12:&lt;br /&gt;
 openssl pkcs12 -export -in [MYCERT.CRT] -inkey [MYKEY.KEY] -out mycert.p12 -name tomcat&lt;br /&gt;
&lt;br /&gt;
 openssl pkcs12 -export -in [MYCERT.CRT] -inkey [MYKEY.KEY] -out mycert.p12 -name tomcat -CAfile [MYCA.CRT] -caname root -chain&lt;br /&gt;
&lt;br /&gt;
=== SSL with OpenSSL PEM ===&lt;br /&gt;
&lt;br /&gt;
MUCH GOODERER!&lt;br /&gt;
&lt;br /&gt;
If the installation uses APR (Tomcat native library) then it will use the APR SSL implementation.&lt;br /&gt;
&lt;br /&gt;
server.xml:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;Listener className=&amp;quot;org.apache.catalina.core.AprLifecycleListener&amp;quot; SSLEngine=&amp;quot;on&amp;quot; /&amp;gt;&lt;br /&gt;
	&lt;br /&gt;
&amp;lt;-- Define a SSL Coyote HTTP/1.1 Connector on port 8443 --&amp;gt;&lt;br /&gt;
&amp;lt;Connector &lt;br /&gt;
           port=&amp;quot;8443&amp;quot; maxThreads=&amp;quot;200&amp;quot;&lt;br /&gt;
           scheme=&amp;quot;https&amp;quot; secure=&amp;quot;true&amp;quot; SSLEnabled=&amp;quot;true&amp;quot;&lt;br /&gt;
           SSLCertificateFile=&amp;quot;/usr/local/ssl/server.crt&amp;quot; &lt;br /&gt;
           SSLCertificateKeyFile=&amp;quot;/usr/local/ssl/server.key&amp;quot;&lt;br /&gt;
           SSLProtocol=&amp;quot;TLSv1&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And if needed:&lt;br /&gt;
 SSLCertificateChainFile&lt;br /&gt;
&lt;br /&gt;
Note: All 3 can point to the same PEM file.&lt;br /&gt;
&lt;br /&gt;
References:&lt;br /&gt;
* TomcatSSLWithAPR - jianwikis - Tomcat SSL with Apr. - Jian Fang&amp;#039;s Wiki Pages - Google Project Hosting - http://code.google.com/p/jianwikis/wiki/TomcatSSLWithAPR&lt;br /&gt;
&lt;br /&gt;
=== Redirect HTTP to HTTPS ===&lt;br /&gt;
&lt;br /&gt;
Change the HTTP connector to redirect to 443 in $CATALINA_BASE/conf/server.xml:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    &amp;lt;Connector port=&amp;quot;80&amp;quot;&lt;br /&gt;
        enableLookups=&amp;quot;false&amp;quot; redirectPort=&amp;quot;443&amp;quot; ...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Add the following section to the end of $CATALINA_BASE/conf/web.xml within the &amp;lt;web-app&amp;gt; element.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    ...&lt;br /&gt;
    &amp;lt;!-- SSL settings. only allow HTTPS --&amp;gt;&lt;br /&gt;
    &amp;lt;security-constraint&amp;gt;&lt;br /&gt;
        &amp;lt;web-resource-collection&amp;gt;&lt;br /&gt;
            &amp;lt;web-resource-name&amp;gt;Entire Application&amp;lt;/web-resource-name&amp;gt;&lt;br /&gt;
            &amp;lt;url-pattern&amp;gt;/*&amp;lt;/url-pattern&amp;gt;&lt;br /&gt;
        &amp;lt;/web-resource-collection&amp;gt;&lt;br /&gt;
        &amp;lt;user-data-constraint&amp;gt;&lt;br /&gt;
            &amp;lt;transport-guarantee&amp;gt;CONFIDENTIAL&amp;lt;/transport-guarantee&amp;gt;&lt;br /&gt;
        &amp;lt;/user-data-constraint&amp;gt;&lt;br /&gt;
    &amp;lt;/security-constraint&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/web-app&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
References:&lt;br /&gt;
* The Wrath of Krang: Set up Tomcat to redirect HTTP requests to HTTPS - http://krangsquared.blogspot.com/2007/09/set-up-tomcat-to-redirect-http-requests.html&lt;br /&gt;
* Redirecting HTTP to HTTPS in Tomcat - Knowledgebase - iRise Support Knowledgebase - http://kb.irise.com/display/kbase/Redirecting+HTTP+to+HTTPS+in+Tomcat&lt;br /&gt;
* How to configure Tomcat to always require HTTPS | ITworld - http://www.itworld.com/development/79351/how-configure-tomcat-always-require-https&lt;br /&gt;
&lt;br /&gt;
== Hello World ==&lt;br /&gt;
&lt;br /&gt;
== Default Welcome Page ==&lt;br /&gt;
&lt;br /&gt;
How do I override the default home page loaded by Tomcat? - http://wiki.apache.org/tomcat/HowTo#How_do_I_override_the_default_home_page_loaded_by_Tomcat.3F&lt;br /&gt;
&lt;br /&gt;
$TOMCAT_HOME/conf/web.xml:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    &amp;lt;welcome-file-list&amp;gt;&lt;br /&gt;
        &amp;lt;welcome-file&amp;gt;index.html&amp;lt;/welcome-file&amp;gt;&lt;br /&gt;
        &amp;lt;welcome-file&amp;gt;index.htm&amp;lt;/welcome-file&amp;gt;&lt;br /&gt;
        &amp;lt;welcome-file&amp;gt;index.jsp&amp;lt;/welcome-file&amp;gt;&lt;br /&gt;
    &amp;lt;/welcome-file-list&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Default Web Application ==&lt;br /&gt;
&lt;br /&gt;
How do I make my web application be the Tomcat default application ? - http://wiki.apache.org/tomcat/HowTo#How_do_I_make_my_web_application_be_the_Tomcat_default_application_.3F&lt;br /&gt;
&lt;br /&gt;
Replace the application under $TOMCAT_HOME/webapps/ROOT with the desired webapp&lt;br /&gt;
&lt;br /&gt;
If war, rename your war to ROOT.war and deploy.&lt;br /&gt;
&lt;br /&gt;
java - Tomcat 6: How to change the ROOT application - Stack Overflow - http://stackoverflow.com/questions/715506/tomcat-6-how-to-change-the-root-application&lt;br /&gt;
&lt;br /&gt;
You can do this in a slightly hack-y way by:&lt;br /&gt;
    Stop Tomcat&lt;br /&gt;
    Move ROOT.war aside and rm -rf webapps/ROOT&lt;br /&gt;
    Copy the webapp you want to webapps/ROOT.war&lt;br /&gt;
    Start Tomcat&lt;br /&gt;
&lt;br /&gt;
== Clustering Tomcat ==&lt;br /&gt;
&lt;br /&gt;
See [[Clustering Tomcat]]&lt;br /&gt;
&lt;br /&gt;
== Securing Tomcat ==&lt;br /&gt;
&lt;br /&gt;
Securing tomcat - OWASP - https://www.owasp.org/index.php/Securing_tomcat&lt;br /&gt;
&lt;br /&gt;
== JSP ==&lt;br /&gt;
&lt;br /&gt;
See [[JSP]]&lt;br /&gt;
&lt;br /&gt;
hello.jsp: [http://www.roseindia.net/jsp/Hello_World.shtml]&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
        &amp;lt;head&amp;gt;&amp;lt;title&amp;gt;Hello World JSP Page.&amp;lt;/title&amp;gt;&amp;lt;/head&amp;gt;&lt;br /&gt;
        &amp;lt;body&amp;gt;&lt;br /&gt;
                &amp;lt;font size=&amp;quot;10&amp;quot;&amp;gt;&amp;lt;%=&amp;quot;Hello World!&amp;quot; %&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
        &amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Tomcat Alternatives ==&lt;br /&gt;
&lt;br /&gt;
=== Jetty ===&lt;br /&gt;
&lt;br /&gt;
&amp;quot;I find the Tomcat server as whole a rather messy business. I&amp;#039;ve often been displeased when perusing the source code. I see lots of arbitrary bandaid like solutions in much of Apache land. For a webserver/J2EE server, I find Jetty a cleaner implementation. Jetty is really easy to embed in applications too.&amp;quot; -- [http://www.javalobby.org/java/forums/t18141.html]&lt;br /&gt;
&lt;br /&gt;
== Tomcat Performance Tuning ==&lt;br /&gt;
&lt;br /&gt;
GZip:&lt;br /&gt;
* Apache Tomcat Configuration Reference - The HTTP Connector - http://tomcat.apache.org/tomcat-5.5-doc/config/http.html&lt;br /&gt;
* Enable GZIP compression in tomcat - http://viralpatel.net/blogs/2008/11/enable-gzip-compression-in-tomcat.html&lt;br /&gt;
* Enabling gzip compression in Tomcat - http://techxplorer.com/2010/09/17/enabling-gzip-compression-in-tomcat/&lt;br /&gt;
* Enable GZIP compression in tomcat server, Tomcat gzip compression - http://www.servletworld.com/tomcat/enable-tomcat-gzip-compression.html&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Tuning Tomcat Performance For Optimum Speed - A Step-By-Step Guide | MuleSoft - http://www.mulesoft.com/tomcat-performance&lt;br /&gt;
* Tomcat performance tuning tips | ITworld - http://www.itworld.com/networking/83035/tomcat-performance-tuning-tips&lt;br /&gt;
* Tomcat Performance Tuning - BrainDump - http://www.devshed.com/c/a/BrainDump/Tomcat-Performance-Tuning/&lt;br /&gt;
* Tomcat Production Server – Performance Tuning | Tech Brainwave - http://www.techbrainwave.com/?p=836&lt;br /&gt;
* Performance Tuning the JVM for Running Apache Tomcat | TomcatExpert - http://www.tomcatexpert.com/blog/2011/11/22/performance-tuning-jvm-running-tomcat&lt;br /&gt;
* Amazon.com: Tomcat: The Definitive Guide (9780596101060): Jason Brittain, Ian F. Darwin: Books - http://www.amazon.com/gp/product/0596101066?ie=UTF8&amp;amp;tag=develshedinc-20&amp;amp;linkCode=xm2&amp;amp;camp=1789&amp;amp;creativeASIN=0596101066&lt;br /&gt;
&lt;br /&gt;
== Virtual Hosts ==&lt;br /&gt;
&lt;br /&gt;
server.xml:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;Engine name=&amp;quot;Catalina&amp;quot; defaultHost=&amp;quot;apple&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Host name=&amp;quot;apple&amp;quot;    appBase=&amp;quot;appleapps&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;Host name=&amp;quot;orange&amp;quot;   appBase=&amp;quot;orangeapps&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;Host name=&amp;quot;t0e.org&amp;quot;  appBase=&amp;quot;t0eapps&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Context path=&amp;quot;&amp;quot; docBase=&amp;quot;ROOT&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;Alias&amp;gt;www.t0e.org&amp;lt;/Alias&amp;gt;&lt;br /&gt;
    &amp;lt;/Host&amp;gt;&lt;br /&gt;
&amp;lt;/Engine&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir $CATALINA_HOME/appleapps&lt;br /&gt;
mkdir $CATALINA_HOME/orangeapps&lt;br /&gt;
&lt;br /&gt;
# deploy ROOT.war and other WARs to $CATALINA_HOME/appleapps/&lt;br /&gt;
# deploy ROOT.war and other WARs to $CATALINA_HOME/orangeapps/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Context Option #1:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$CATALINA_HOME/appleapps/ROOT/META-INF/context.xml&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Conext Option #2:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir $CATALINA_HOME/conf/Catalina/appleapps&lt;br /&gt;
&lt;br /&gt;
$CATALINA_HOME/conf/Catalina/appleapps/ROOT.xml&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
References:&lt;br /&gt;
* Apache Tomcat 6.0 (6.0.35) - Virtual Hosting and Tomcat - http://tomcat.apache.org/tomcat-6.0-doc/virtual-hosting-howto.html&lt;br /&gt;
&lt;br /&gt;
== Access Logging - Log Requests ==&lt;br /&gt;
&lt;br /&gt;
Uncomment or add this to server.xml:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;Valve className=&amp;quot;org.apache.catalina.valves.AccessLogValve&amp;quot;&lt;br /&gt;
    directory=&amp;quot;logs&amp;quot; prefix=&amp;quot;localhost_access_log.&amp;quot; suffix=&amp;quot;.txt&amp;quot;&lt;br /&gt;
    pattern=&amp;quot;common&amp;quot; resolveHosts=&amp;quot;false&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
OR&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;Valve&lt;br /&gt;
    className=&amp;quot;org.apache.catalina.valves.AccessLogValve&amp;quot;&lt;br /&gt;
    directory=&amp;quot;${catalina.base}/logs&amp;quot;&lt;br /&gt;
    prefix=&amp;quot;access_log&amp;quot;&lt;br /&gt;
    fileDateFormat=&amp;quot;yyyy-MM-dd.HH&amp;quot;&lt;br /&gt;
    suffix=&amp;quot;.log&amp;quot;&lt;br /&gt;
    pattern=&amp;quot;%t %H cookie:%{SESSIONID}c request:%{SESSIONID}r  %m %U %s %q %r&amp;quot;&lt;br /&gt;
/&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
References:&lt;br /&gt;
* Java/Tomcat standalone, how to log/access all the HTTP GET requests - Stack Overflow - http://stackoverflow.com/questions/3017188/java-tomcat-standalone-how-to-log-access-all-the-http-get-requests&lt;br /&gt;
* AccessLogValve - Tomcat Wiki - http://wiki.apache.org/tomcat/AccessLogValve&lt;br /&gt;
&lt;br /&gt;
== AJP ==&lt;br /&gt;
&lt;br /&gt;
Apache:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
LoadModule proxy_ajp_module modules/mod_proxy_ajp.so&lt;br /&gt;
ProxyPass /testloadbalance/ ajp://localhost:8009/testloadbalance/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Tomcat:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;Connector port=&amp;quot;8009&amp;quot; protocol=&amp;quot;AJP/1.3&amp;quot; redirectPort=&amp;quot;8080&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Keep Alive ==&lt;br /&gt;
&lt;br /&gt;
KeepAlive – 2 parameters&lt;br /&gt;
* MaxKeepAliveRequests – max number of requests to serve before closing,&lt;br /&gt;
* ConnectionTimeOut – max time to keep thread open&lt;br /&gt;
&lt;br /&gt;
MaxKeepAliveRequests&lt;br /&gt;
* Set to 1 for high concurrency, not using SSL&lt;br /&gt;
* Set to &amp;gt;1 for SSL, low concurrency&lt;br /&gt;
&lt;br /&gt;
ConnectionTimeout - &lt;br /&gt;
* Default  = 20 seconds!&lt;br /&gt;
* ConnectionTimeout=&amp;quot;20000&amp;quot; too high turn down to +/- 3000 – 3 seconds&lt;br /&gt;
&lt;br /&gt;
References:&lt;br /&gt;
* Tomcat Performance Tuning - www.jumpingbean.co.za/files/tomcat-performance-tuning-jug.pdf&lt;br /&gt;
&lt;br /&gt;
== init.d Startup Script ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
touch /etc/init.d/tomcat&lt;br /&gt;
chmod +x /etc/init.d/tomcat&lt;br /&gt;
cat &amp;gt; /etc/init.d/tomcat &amp;lt;&amp;lt;&amp;quot;EOF&amp;quot;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
#&lt;br /&gt;
# Startup script for the Tomcat Server&lt;br /&gt;
#&lt;br /&gt;
# chkconfig: 35 90 10&lt;br /&gt;
# description: Tomcat application server&lt;br /&gt;
# processname: tomcat&lt;br /&gt;
# pidfile: /var/run/tomcat.pid&lt;br /&gt;
# config:&lt;br /&gt;
&lt;br /&gt;
# be sure to set up iptables:&lt;br /&gt;
# iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 8080&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Source function library.&lt;br /&gt;
. /etc/rc.d/init.d/functions&lt;br /&gt;
&lt;br /&gt;
# Source networking configuration.&lt;br /&gt;
. /etc/sysconfig/network&lt;br /&gt;
&lt;br /&gt;
# Check that networking is up.&lt;br /&gt;
[ ${NETWORKING} = &amp;quot;no&amp;quot; ] &amp;amp;&amp;amp; exit 0&lt;br /&gt;
&lt;br /&gt;
# Set Tomcat environment.&lt;br /&gt;
export TOMCAT_USER=tomcat&lt;br /&gt;
export JAVA_HOME=/opt/java-latest&lt;br /&gt;
&lt;br /&gt;
export CATALINA_HOME=/opt/tomcat-latest&lt;br /&gt;
#export CATALINA_OPTS=&amp;quot;-server -Xms64m -Xmx512m -Dbuild.compiler.emacs=true&amp;quot;&lt;br /&gt;
#export PATH=/usr/local/j2sdk/bin:/usr/local/j2re/bin:$PATH&lt;br /&gt;
&lt;br /&gt;
[ -f $CATALINA_HOME/bin/catalina.sh ] || exit 0&lt;br /&gt;
&lt;br /&gt;
# See how we were called.&lt;br /&gt;
case &amp;quot;$1&amp;quot; in&lt;br /&gt;
  start)&lt;br /&gt;
        # Start daemon.&lt;br /&gt;
        echo -n &amp;quot;Starting Tomcat: &amp;quot;&lt;br /&gt;
        cd $CATALINA_HOME&lt;br /&gt;
        su -c &amp;quot;$CATALINA_HOME/bin/catalina.sh $1&amp;quot; $TOMCAT_USER&lt;br /&gt;
        RETVAL=$?&lt;br /&gt;
        echo&lt;br /&gt;
        [ $RETVAL = 0 ] &amp;amp;&amp;amp; touch /var/lock/subsys/tomcat&lt;br /&gt;
        ;;&lt;br /&gt;
  stop)&lt;br /&gt;
        # Stop daemons.&lt;br /&gt;
        echo -n &amp;quot;Shutting down Tomcat: &amp;quot;&lt;br /&gt;
        su -c &amp;quot;$CATALINA_HOME/bin/catalina.sh $1&amp;quot; $TOMCAT_USER&lt;br /&gt;
        RETVAL=$?&lt;br /&gt;
        echo&lt;br /&gt;
        [ $RETVAL = 0 ] &amp;amp;&amp;amp; rm -f /var/lock/subsys/tomcat&lt;br /&gt;
        ;;&lt;br /&gt;
  restart)&lt;br /&gt;
        $0 stop&lt;br /&gt;
        $0 start&lt;br /&gt;
        ;;&lt;br /&gt;
  condrestart)&lt;br /&gt;
       [ -e /var/lock/subsys/tomcat ] &amp;amp;&amp;amp; $0 restart&lt;br /&gt;
       ;;&lt;br /&gt;
  status)&lt;br /&gt;
        status tomcat&lt;br /&gt;
        ;;&lt;br /&gt;
  *)&lt;br /&gt;
        echo &amp;quot;Usage: $0 {start|stop|restart|status}&amp;quot;&lt;br /&gt;
        exit 1&lt;br /&gt;
esac&lt;br /&gt;
&lt;br /&gt;
exit 0&lt;br /&gt;
EOF&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Startup Script #1==&lt;br /&gt;
Tomcat init.d [http://www.linuxquestions.org/questions/showthread.php?t=154863 startup script]:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#&lt;br /&gt;
# chkconfig: 345 91 10 &lt;br /&gt;
# description: Starts and stops the Tomcat daemon.&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
# Source function library.&lt;br /&gt;
. /etc/rc.d/init.d/functions&lt;br /&gt;
&lt;br /&gt;
# Get config.&lt;br /&gt;
. /etc/sysconfig/network&lt;br /&gt;
&lt;br /&gt;
# Check that networking is up.&lt;br /&gt;
[ &amp;quot;${NETWORKING}&amp;quot; = &amp;quot;no&amp;quot; ] &amp;amp;&amp;amp; exit 0&lt;br /&gt;
&lt;br /&gt;
tomcat=/usr/local/jakarta-tomcat&lt;br /&gt;
startup=$tomcat/bin/startup.sh&lt;br /&gt;
shutdown=$tomcat/bin/shutdown.sh&lt;br /&gt;
#export JAVA_HOME=/usr/local/jdk  -- i have this already....&lt;br /&gt;
&lt;br /&gt;
start(){&lt;br /&gt;
	echo -n $&amp;quot;Starting Tomcat service: &amp;quot; &lt;br /&gt;
	# Change to tomcat user to start server. Don&amp;#039;t run as root.&lt;br /&gt;
	#daemon -c &lt;br /&gt;
	$startup&lt;br /&gt;
	RETVAL=$?&lt;br /&gt;
	echo&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
stop(){&lt;br /&gt;
	action $&amp;quot;Stopping Tomcat service: &amp;quot; $shutdown	&lt;br /&gt;
	RETVAL=$?&lt;br /&gt;
	echo&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
restart(){&lt;br /&gt;
    stop&lt;br /&gt;
    start&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# See how we were called.&lt;br /&gt;
case &amp;quot;$1&amp;quot; in&lt;br /&gt;
  start)&lt;br /&gt;
	start&lt;br /&gt;
	;;&lt;br /&gt;
  stop)&lt;br /&gt;
	stop&lt;br /&gt;
	;;&lt;br /&gt;
  status)&lt;br /&gt;
        # This doesn&amp;#039;t work ;)&lt;br /&gt;
	status tomcat&lt;br /&gt;
	;;&lt;br /&gt;
  restart)&lt;br /&gt;
	restart&lt;br /&gt;
	;;&lt;br /&gt;
  *)&lt;br /&gt;
	echo $&amp;quot;Usage: $0 {start|stop|status|restart}&amp;quot;&lt;br /&gt;
	exit 1&lt;br /&gt;
esac&lt;br /&gt;
&lt;br /&gt;
exit 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Startup Script #2==&lt;br /&gt;
Another simpler init.d [http://mikepalmer.net/howto/tomcat/tomcat-startscript.html startup script]&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#&lt;br /&gt;
# apache&lt;br /&gt;
#&lt;br /&gt;
# chkconfig:&lt;br /&gt;
# description:  Start up the Tomcat servlet engine.&lt;br /&gt;
&lt;br /&gt;
# Source function library.&lt;br /&gt;
. /etc/init.d/functions&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
RETVAL=$?&lt;br /&gt;
TOMCATHOME=&amp;quot;/usr/local/tomcat&amp;quot;&lt;br /&gt;
&lt;br /&gt;
case &amp;quot;$1&amp;quot; in&lt;br /&gt;
 start)&lt;br /&gt;
        if [ -f $TOMCATHOME/bin/startup.sh ];&lt;br /&gt;
          then&lt;br /&gt;
            echo $&amp;quot;Starting Tomcat&amp;quot;&lt;br /&gt;
            /bin/su - tomcat -c $TOMCATHOME/bin/startup.sh&lt;br /&gt;
        fi&lt;br /&gt;
        ;;&lt;br /&gt;
 stop)&lt;br /&gt;
        if [ -f $TOMCATHOME/bin/shutdown.sh ];&lt;br /&gt;
          then&lt;br /&gt;
            echo $&amp;quot;Stopping Tomcat&amp;quot;&lt;br /&gt;
            /bin/su - tomcat -c $TOMCATHOME/bin/shutdown.sh&lt;br /&gt;
        fi&lt;br /&gt;
        ;;&lt;br /&gt;
 *)&lt;br /&gt;
        echo $&amp;quot;Usage: $0 {start|stop}&amp;quot;&lt;br /&gt;
        exit 1&lt;br /&gt;
        ;;&lt;br /&gt;
esac&lt;br /&gt;
&lt;br /&gt;
exit $RETVAL&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Startup Sript #3==&lt;br /&gt;
Anthill startup script:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
# anthill       Startup script for the Anthill&lt;br /&gt;
#&lt;br /&gt;
# httpd is 85 15&lt;br /&gt;
# chkconfig: - 84 16&lt;br /&gt;
# description: Anthill is a build manager&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
# Source function library.&lt;br /&gt;
. /etc/rc.d/init.d/functions&lt;br /&gt;
&lt;br /&gt;
# Get config.&lt;br /&gt;
. /etc/sysconfig/network&lt;br /&gt;
&lt;br /&gt;
# Check that networking is up.&lt;br /&gt;
[ &amp;quot;${NETWORKING}&amp;quot; = &amp;quot;no&amp;quot; ] &amp;amp;&amp;amp; exit 0&lt;br /&gt;
&lt;br /&gt;
JAVA_HOME=/usr/java/jdk1.5.0_13&lt;br /&gt;
&lt;br /&gt;
TOMCAT=/opt/anthill/apache-tomcat-5.5.25&lt;br /&gt;
TOMCATUSER=build&lt;br /&gt;
&lt;br /&gt;
# See how we were called.&lt;br /&gt;
case &amp;quot;$1&amp;quot; in&lt;br /&gt;
  start)&lt;br /&gt;
        echo -n $&amp;quot;Starting Anthill service: &amp;quot;&lt;br /&gt;
        sudo -u $TOMCATUSER sh -c &amp;quot;export JAVA_HOME=$JAVA_HOME ; $TOMCAT/bin/startup.sh&amp;quot;&lt;br /&gt;
        RETVAL=$?&lt;br /&gt;
        echo&lt;br /&gt;
        ;;&lt;br /&gt;
  stop)&lt;br /&gt;
        action $&amp;quot;Stopping Tomcat service: &amp;quot;&lt;br /&gt;
        sudo -u $TOMCATUSER sh -c &amp;quot;export JAVA_HOME=$JAVA_HOME ; $TOMCAT/bin/shutdown.sh&amp;quot;&lt;br /&gt;
        RETVAL=$?&lt;br /&gt;
        echo&lt;br /&gt;
        ;;&lt;br /&gt;
  status)&lt;br /&gt;
        # This doesn&amp;#039;t work ;)&lt;br /&gt;
        status tomcat&lt;br /&gt;
        ;;&lt;br /&gt;
  restart)&lt;br /&gt;
        stop&lt;br /&gt;
        start&lt;br /&gt;
        RETVAL=$?&lt;br /&gt;
        ;;&lt;br /&gt;
  *)&lt;br /&gt;
        echo $&amp;quot;Usage: $0 {start|stop|status|restart}&amp;quot;&lt;br /&gt;
        exit 1&lt;br /&gt;
        ;;&lt;br /&gt;
esac&lt;br /&gt;
&lt;br /&gt;
exit $RETVAL&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Startup Script #4==&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
# tomcat -- init script&lt;br /&gt;
#       This is the init script for starting up the&lt;br /&gt;
#               Jakarta Tomcat server&lt;br /&gt;
#&lt;br /&gt;
# chkconfig: 345 91 10&lt;br /&gt;
# description: Starts and stops the Tomcat daemon.&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
# Source function library.&lt;br /&gt;
. /etc/rc.d/init.d/functions&lt;br /&gt;
&lt;br /&gt;
# Get config.&lt;br /&gt;
. /etc/sysconfig/network&lt;br /&gt;
&lt;br /&gt;
# Check that networking is up.&lt;br /&gt;
[ &amp;quot;${NETWORKING}&amp;quot; = &amp;quot;no&amp;quot; ] &amp;amp;&amp;amp; exit 0&lt;br /&gt;
&lt;br /&gt;
tomcat=/opt/extreme_apache-tomcat-5.5.23/&lt;br /&gt;
startup=$tomcat/bin/startup.sh&lt;br /&gt;
shutdown=$tomcat/bin/shutdown.sh&lt;br /&gt;
#export JAVA_HOME=/usr/local/jdk  -- i have this already....&lt;br /&gt;
&lt;br /&gt;
start(){&lt;br /&gt;
        echo -n $&amp;quot;Starting Tomcat service: &amp;quot;&lt;br /&gt;
        # Change to tomcat user to start server. Don&amp;#039;t run as root.&lt;br /&gt;
        #daemon -c&lt;br /&gt;
        $startup&lt;br /&gt;
        RETVAL=$?&lt;br /&gt;
        echo&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
stop(){&lt;br /&gt;
        action $&amp;quot;Stopping Tomcat service: &amp;quot; $shutdown&lt;br /&gt;
        RETVAL=$?&lt;br /&gt;
        echo&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
restart(){&lt;br /&gt;
    stop&lt;br /&gt;
    start&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# See how we were called.&lt;br /&gt;
case &amp;quot;$1&amp;quot; in&lt;br /&gt;
  start)&lt;br /&gt;
        start&lt;br /&gt;
        ;;&lt;br /&gt;
  stop)&lt;br /&gt;
        stop&lt;br /&gt;
        ;;&lt;br /&gt;
  status)&lt;br /&gt;
        # This doesn&amp;#039;t work ;)&lt;br /&gt;
        status tomcat&lt;br /&gt;
        ;;&lt;br /&gt;
  restart)&lt;br /&gt;
        restart&lt;br /&gt;
        ;;&lt;br /&gt;
  *)&lt;br /&gt;
        echo $&amp;quot;Usage: $0 {start|stop|status|restart}&amp;quot;&lt;br /&gt;
        exit 1&lt;br /&gt;
esac&lt;br /&gt;
&lt;br /&gt;
exit 0&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Startup Script #5==&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
# chkconfig:    2345 60 90&lt;br /&gt;
# description:  JIRA init script&lt;br /&gt;
&lt;br /&gt;
# Source function library.&lt;br /&gt;
. /etc/init.d/functions&lt;br /&gt;
# Source networking configuration.&lt;br /&gt;
. /etc/sysconfig/network&lt;br /&gt;
# Check that networking is up. If networking isn&amp;#039;t up, don&amp;#039;t start.  Why?&lt;br /&gt;
# because Jira is useless without a network connection.&lt;br /&gt;
[ ${NETWORKING} = &amp;quot;no&amp;quot; ] &amp;amp;&amp;amp; exit 0&lt;br /&gt;
&lt;br /&gt;
JAVA_HOME=/usr/java/jdk1.5.0_10&lt;br /&gt;
JIRA_HOME=/opt/jira&lt;br /&gt;
DAEMON_HOME=/$JIRA_HOME/bin&lt;br /&gt;
JIRA_USER=root&lt;br /&gt;
TMP_DIR=/var/tmp&lt;br /&gt;
JIRA_OPTS=&amp;quot;-Xmx512m -Xms512m&amp;quot;&lt;br /&gt;
CLASSPATH=\&lt;br /&gt;
$JAVA_HOME/lib/tools.jar:\&lt;br /&gt;
$DAEMON_HOME/commons-daemon.jar:\&lt;br /&gt;
$JIRA_HOME/bin/bootstrap.jar&lt;br /&gt;
PID_FILE=/var/run/jira.pid&lt;br /&gt;
&lt;br /&gt;
case &amp;quot;$1&amp;quot; in&lt;br /&gt;
  start)&lt;br /&gt;
    #&lt;br /&gt;
    # Start JIRA&lt;br /&gt;
    #&lt;br /&gt;
    echo -n &amp;quot;Starting Jira:&amp;quot;&lt;br /&gt;
    $DAEMON_HOME/jsvc \&lt;br /&gt;
    -user $JIRA_USER \&lt;br /&gt;
    -home $JAVA_HOME \&lt;br /&gt;
    -Dcatalina.home=$JIRA_HOME \&lt;br /&gt;
    -Djava.io.tmpdir=$TMP_DIR \&lt;br /&gt;
    -outfile $JIRA_HOME/logs/catalina.out \&lt;br /&gt;
    -errfile &amp;#039;&amp;amp;1&amp;#039; \&lt;br /&gt;
    -pidfile $PID_FILE \&lt;br /&gt;
    $JIRA_OPTS \&lt;br /&gt;
    -cp $CLASSPATH \&lt;br /&gt;
    org.apache.catalina.startup.Bootstrap&lt;br /&gt;
    #&lt;br /&gt;
    # To get a verbose JVM&lt;br /&gt;
    #-verbose \&lt;br /&gt;
    # To get a debug of jsvc.&lt;br /&gt;
    #-debug \&lt;br /&gt;
    RETVAL=$?&lt;br /&gt;
    if [ &amp;quot;${RETVAL}&amp;quot; = 0 ] ; then&lt;br /&gt;
      success&lt;br /&gt;
    else&lt;br /&gt;
      failure&lt;br /&gt;
    fi&lt;br /&gt;
    echo&lt;br /&gt;
    exit ${RETVAL}&lt;br /&gt;
    ;;&lt;br /&gt;
&lt;br /&gt;
  stop)&lt;br /&gt;
    #&lt;br /&gt;
    # Stop JIRA&lt;br /&gt;
    #&lt;br /&gt;
    #PID=`cat /var/run/jsvc.pid`&lt;br /&gt;
    #kill $PID&lt;br /&gt;
    echo -n &amp;quot;Stopping Jira:&amp;quot;&lt;br /&gt;
    $DAEMON_HOME/jsvc \&lt;br /&gt;
      -stop \&lt;br /&gt;
      -pidfile $PID_FILE \&lt;br /&gt;
      org.apache.catalina.startup.Bootstrap&lt;br /&gt;
    RETVAL=$?&lt;br /&gt;
    if [ &amp;quot;${RETVAL}&amp;quot; = 0 ] ; then&lt;br /&gt;
      success&lt;br /&gt;
    else&lt;br /&gt;
      failure&lt;br /&gt;
    fi&lt;br /&gt;
    echo&lt;br /&gt;
    exit ${RETVAL}&lt;br /&gt;
    ;;&lt;br /&gt;
&lt;br /&gt;
  restart)&lt;br /&gt;
    #&lt;br /&gt;
    # Restart JIRA&lt;br /&gt;
    #&lt;br /&gt;
    echo &amp;quot;Restarting Jira...&amp;quot;&lt;br /&gt;
    $0 stop&lt;br /&gt;
    sleep 5&lt;br /&gt;
    $0 start&lt;br /&gt;
    ;;&lt;br /&gt;
&lt;br /&gt;
  *)&lt;br /&gt;
    # echo &amp;quot;Usage tomcat.sh start/stop&amp;quot;&lt;br /&gt;
    echo &amp;quot;Usage service jira \(start\|stop\|restart\)&amp;quot;&lt;br /&gt;
    exit 1&lt;br /&gt;
    ;;&lt;br /&gt;
esac&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Startup Script #6 ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#&lt;br /&gt;
# Required-Start:    $all&lt;br /&gt;
# Required-Stop:&lt;br /&gt;
# Default-Start:     99 2 3 4 5&lt;br /&gt;
# Default-Stop:&lt;br /&gt;
# Description:       Tomcat6&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
JAVA_HOME=/opt/java/&lt;br /&gt;
&lt;br /&gt;
TOMCAT=/opt/tomcat6&lt;br /&gt;
TOMCATUSER=tomcat&lt;br /&gt;
&lt;br /&gt;
case &amp;quot;$1&amp;quot; in&lt;br /&gt;
  start)&lt;br /&gt;
        echo -n $&amp;quot;Starting Tomcat service: &amp;quot;&lt;br /&gt;
        sudo -u $TOMCATUSER sh -c &amp;quot;export JAVA_HOME=$JAVA_HOME ; $TOMCAT/bin/startup.sh&amp;quot;&lt;br /&gt;
        RETVAL=$?&lt;br /&gt;
        echo&lt;br /&gt;
        ;;&lt;br /&gt;
  stop)&lt;br /&gt;
        echo -n $&amp;quot;Stopping Tomcat service: &amp;quot;&lt;br /&gt;
        sudo -u $TOMCATUSER sh -c &amp;quot;export JAVA_HOME=$JAVA_HOME ; $TOMCAT/bin/shutdown.sh&amp;quot;&lt;br /&gt;
        RETVAL=$?&lt;br /&gt;
        echo&lt;br /&gt;
        ;;&lt;br /&gt;
  restart)&lt;br /&gt;
        stop&lt;br /&gt;
        start&lt;br /&gt;
        RETVAL=$?&lt;br /&gt;
        ;;&lt;br /&gt;
  *)&lt;br /&gt;
        echo $&amp;quot;Usage: $0 {start|stop|restart}&amp;quot;&lt;br /&gt;
        exit 1&lt;br /&gt;
        ;;&lt;br /&gt;
esac&lt;br /&gt;
&lt;br /&gt;
exit $RETVAL&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Modified from Anthill startup script&lt;br /&gt;
&lt;br /&gt;
== Issues ==&lt;br /&gt;
&lt;br /&gt;
=== Apache Tomcat Native library ===&lt;br /&gt;
&lt;br /&gt;
Error:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
==&amp;gt; catalina.out &amp;lt;==&lt;br /&gt;
Oct 22, 2011 10:08:46 PM org.apache.catalina.core.AprLifecycleListener init&lt;br /&gt;
INFO: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: /usr/java/jdk1.6.0_23/jre/lib/i386/client:/usr/java/jdk1.6.0_23/jre/lib/i386:/usr/java/jdk1.6.0_23/jre/../lib/i386:/usr/java/packages/lib/i386:/lib:/usr/lib&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Solution:&lt;br /&gt;
* This can be safely ignore&lt;br /&gt;
* If you want to fix it - http://www.artemissoftware.net/display/art/2009/04/30/How+to+set+up+the+Apache+Portable+Runtime+for+Tomcat+-+Confluence+-+JIRA&lt;br /&gt;
&lt;br /&gt;
== keywords ==&lt;br /&gt;
&lt;br /&gt;
[[Category:Linux]]&lt;/div&gt;</summary>
		<author><name>Kenneth</name></author>
	</entry>
</feed>