<?xml version="1.0"?>
<!DOCTYPE document [
  <!ENTITY project SYSTEM "project.xml">
]>
<document url="setup.html">

  &project;

  <properties>
    <author email="remm@apache.org">Remy Maucherat</author>
    <title>Tomcat Setup</title>
  </properties>

<body>

  <section name="Introduction">



  </section>

  <section name="Windows">

    <p>
      Installing Tomcat on Windows can be done easily using the Windows 
      installer. Its interface and functionality is similar to other wizard
      based installers, with only a few items of interest.
    </p>

    <p>
      <ul>
        <li><strong>Installation as a service</strong>: Tomcat will be 
            installed as a Windows
            NT/2k/XP service no matter what setting is selected. Using the
            checkbox on the component page sets the service as "auto"
            startup, so that Tomcat is automatically started when Windows
            starts. For optimal security, the service should be run as a
            separate user, with reduced permissions (see the Windows Services
            administration tool and its documentation).</li>
        <li><strong>Java location</strong>: The installer will use the registry
            or the JAVA_HOME environment variable to determine the base path
            of a J2SE 5 JRE.
            </li>
        <li><strong>Tray icon</strong>: When Tomcat is run as a service, there
            will not be any tray icon present when Tomcat is running. Note that
            when choosing to run Tomcat at the end of installation, the tray
            icon will be used even if Tomcat was installed as a service.</li>
        <li>Refer to the
            <a href="windows-service-howto.html">Windows Service HOW-TO</a>
            for information on how to manage Tomcat as Windows NT service.
            </li>            
      </ul>
    </p>

    <p>The installer will create shortcuts allowing starting and configuring 
       Tomcat. It is important to note that the Tomcat administration web 
       application can only be used when Tomcat is running.</p>

    <p>If using a J2SE 1.4 JRE, the compatibility package must be downloaded and
       expanded inside the folder where Tomcat was installed.</p>

  </section>

  <section name="Unix daemon">

    <p>Tomcat can be run as a daemon using the jsvc tool from the 
       commons-daemon project. Source tarballs for jsvc are included with the
       Tomcat binaries, and need to be compiled. Building jsvc requires
       a C ANSI compiler (such as GCC), GNU Autoconf, and a JDK.</p>

    <p>Before running the script, the <code>JAVA_HOME</code> environment
       variable should be set to the base path of the JDK. Alternately, when
       calling the <code>./configure</code> script, the path of the JDK may
       be specified using the <code>--with-java</code> parameter, such as
       <code>./configure --with-java=/usr/java</code>.</p>

    <p>Using the following commands should result in a compiled jsvc binary,
       located in the <code>$CATALINA_HOME/bin</code> folder. This assumes
       that GNU TAR is used, and that <code>CATALINA_HOME</code> is an 
       environment variable pointing to the base path of the Tomcat 
       installation.</p>
  
    <p>Please note that you should use the GNU make (gmake) instead of
       the native BSD make on FreeBSD systems.</p>


<source>
    cd $CATALINA_HOME/bin
    tar xvfz jsvc.tar.gz
    cd jsvc-src
    autoconf
    ./configure
    make
    cp jsvc ..
    cd ..
</source>

    <p>Tomcat can then be run as a daemon using the following commands.</p>

<source>
    cd $CATALINA_HOME
    ./bin/jsvc -Djava.endorsed.dirs=./common/endorsed -cp ./bin/bootstrap.jar \
        -outfile ./logs/catalina.out -errfile ./logs/catalina.err \
        org.apache.catalina.startup.Bootstrap
</source>

    <p>jsvc has other useful parameters, such as <code>-user</code> which 
       causes it to switch to another user after the daemon initialization is
       complete. This allows, for example, running Tomcat as a non privileged
       user while still being able to use privileged ports. 
       <code>jsvc --help</code> will return the full jsvc usage 
       information. In particular, the <code>-debug</code> option is useful
       to debug issues running jsvc.</p>

    <p>The file <code>$CATALINA_HOME/bin/jsvc/native/tomcat.sh</code> can be 
       used as a template for starting Tomcat automatically at boot time from 
       <code>/etc/init.d</code>.  The file is currently setup for running 
       Tomcat 4.1.x, so it is necessary to edit it and change the classname 
       from <code>BootstrapService</code> to <code>Bootstrap</code>.</p>

    <p>Note that the Commons-Daemon JAR file must be on your runtime classpath 
       to run Tomcat in this manner.  The Commons-Daemon JAR file is in the Class-Path 
       entry of the bootstrap.jar manifest, but if you get a ClassNotFoundException 
       or a NoClassDefFoundError for a Commons-Daemon class, add the Commons-Daemon 
       JAR to the -cp argument when launching jsvc.</p> 

  </section>

</body>
</document>
