<?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 the JDK or a JRE. If only a JRE (or an incorrect path) 
            is specified, Tomcat will run but will be unable to compile
            JSP pages at runtime. Either all webapps will need to be 
            precompiled (this can be easily done using the Tomcat deployer),
            or the <code>lib\tools.jar</code> file from a JDK installation
            must be copied to the <code>common\lib</code> path of the Tomcat 
            installation.
            </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>

  </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>
  </section>

</body>
</document>
