Manual Linux Tomcat Install

  1. Download a Tomcat 9 install package:

    $ sudo yum install wget
    $ wget https://www-eu.apache.org/dist/tomcat/tomcat-9/v9.0.84/bin/apache-tomcat-9.0.84.tar.gz
    
  2. Uncompress the Tomcat 9 install package:

    $ sudo yum install tar
    $ sudo mkdir /opt/tomcat
    $ sudo tar -xf apache-tomcat-9.0.84.tar.gz -C /opt/tomcat
    $ sudo ln -s /opt/tomcat/apache-tomcat-9.0.84 /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 9 servlet container
    After=network.target
    
    [Service]
    Type=forking
    
    User=tomcat
    Group=tomcat
    
    Environment="JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64/jre"
    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=-Xms512M -Xmx10G -server -XX:SoftRefLRUPolicyMSPerMB=36000 -XX:-UsePerfData -Dorg.geotools.referencing.forceXY=true -Dorg.geotoools.render.lite.scale.unitCompensation=true"
    
    ExecStart=/opt/tomcat/latest/bin/startup.sh
    ExecStop=/opt/tomcat/latest/bin/shutdown.sh
    
    [Install]
    WantedBy=multi-user.target
    
  5. Define CATALINA_OPTS by creating /opt/tomcat/latest/bin/setenv.sh:

    #!/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 1/4 of system memory, to set a lower limit adjust CATALINA_OPTS using setenv.sh.

    #!/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="-Xms512M -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