Skip to content

Manual Linux Tomcat Install

  1. Download a Tomcat 11 install package:

    $ sudo yum install wget
    $ wget https://dlcdn.apache.org/tomcat/tomcat-11/v11.0.25/bin/apache-tomcat-11.0.25.tar.gz
    
  2. Uncompress the Tomcat 11 install package:

    $ sudo yum install tar
    $ sudo mkdir /opt/tomcat
    $ sudo tar -xf apache-tomcat-11.0.25.tar.gz -C /opt/tomcat
    $ sudo ln -s /opt/tomcat/apache-tomcat-11.0.25 /opt/tomcat/latest
    
  3. Create a Tomcat user and set permissions:

    $ sudo useradd -m -U -d /opt/tomcat -s /bin/false tomcat
    $ sudo chown -R tomcat:tomcat /opt/tomcat
    
  4. Create/Edit the Tomcat service file:

    $ sudo vi /etc/systemd/system/tomcat.service
    

    and add this:

    [Unit]
    Description=Tomcat 11 servlet container
    After=network.target
    
    [Service]
    Type=forking
    
    User=tomcat
    Group=tomcat
    
    Environment="JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64"
    Environment="JAVA_OPTS=-Djava.security.egd=file:///dev/urandom"
    
    Environment="CATALINA_BASE=/opt/tomcat/latest"
    Environment="CATALINA_HOME=/opt/tomcat/latest"
    Environment="CATALINA_PID=/opt/tomcat/latest/temp/tomcat.pid"
    Environment="CATALINA_OPTS=-Xms2G -Xmx4G -XX:SoftRefLRUPolicyMSPerMB=36000 -XX:-UsePerfData"
    
    ExecStart=/opt/tomcat/latest/bin/startup.sh
    ExecStop=/opt/tomcat/latest/bin/shutdown.sh
    
    [Install]
    WantedBy=multi-user.target
    

    Note

    The -Xms2G -Xmx4G values above are a Large profile starting point. See Memory sizing for guidance on choosing a profile, and Garbage collection tuning for larger deployments.

  5. Optional: You may choose to manage CATALINA_OPTS by creating /opt/tomcat/latest/bin/setenv.sh (or by editing tomcat.service above):

    #!/bin/sh
    
    # Prepend JVM Options
    CATALINA_OPTS="-XX:SoftRefLRUPolicyMSPerMB=36000 -XX:-UsePerfData ${CATALINA_OPTS}"
    
    # Append system properties
    CATALINA_OPTS="${CATALINA_OPTS} -Dorg.geotools.referencing.forceXY=true"
    

    Note

    -X java options must be listed before any -D system properties.

  6. Optional: By default Tomcat will use ¼ of system memory, to set a lower limit adjust CATALINA_OPTS using setenv.sh (or by editing tomcat.service above).

    #!/bin/sh
    
    # Prepend JVM Options
    CATALINA_OPTS="-XX:SoftRefLRUPolicyMSPerMB=36000 -XX:-UsePerfData ${CATALINA_OPTS}"
    
    # Append system properties
    CATALINA_OPTS="${CATALINA_OPTS} -Dorg.geotools.referencing.forceXY=true"
    
    # Prepend JVM Memory Options
    CATALINA_OPTS="-Xms2G -Xmx4G ${CATALINA_OPTS}"
    
  7. Setup the Service

    $ systemctl daemon-reload
    $ systemctl enable tomcat
    $ systemctl start tomcat
    $ systemctl status tomcat
    
  8. Test that Tomcat is running

    http://server_IP_address:8080