Tomcat is web server and servlet container which is used to run java applications, i will be showing the steps to install tomcat and java in an production system. i will be installing Tomcat 9 and OpenJDK 1.8 (Java 8). Most Steps are common for Redhat and Debian based systems.

Java 8 Installation

For Redhat based Distribution
yum install java-1.8.0-openjdk.x86_64 java-1.8.0-openjdk-devel.x86_64

For Debian and Ubuntu based Distribution
sudo apt install openjdk-8-jdk

Get the Java Installed Version
java -version
openjdk version "1.8.0_181"
OpenJDK Runtime Environment (build 1.8.0_181-b13)
OpenJDK 64-Bit Server VM (build 25.181-b13, mixed mode)

We need to set JAVA_HOME so run and get the JAVA_HOME Path
sudo update-alternatives --config java

Edit file vim /etc/environment add JAVA_HOME Environment Variable
JAVA_HOME="/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.111-1.b15.el7_2.x86_64/jre"

Logout and Login, run env, Check for JAVA_HOME in the output.

Tomcat 9 Installation

Create a tomcat group
groupadd tomcat

Create a tomcat user with /opt/tomcat as its home directory
mkdir -p /opt/tomcat
useradd -s /bin/false -g tomcat -d /opt/tomcat tomcat

Change working directory and download the latest tomcat from tomcat website
cd /opt
wget http://mirrors.wuchna.com/apachemirror/tomcat/tomcat-9/v9.0.12/bin/apache-tomcat-9.0.12.tar.gz

Extract the Tomcat archive
tar -xzvf apache-tomcat-9.0.12.tar.gz

Move Contents to /opt/tomcat
mv apache-tomcat/* /opt/tomcat

Change ownership and user to tomcat
chown -R tomcat:tomcat /opt/tomcat

Create Systemd Service for Tomcat Service
vim /etc/systemd/system/tomcat.service

Reload systemd manager configuration.
systemctl daemon-reload

Start Tomcat Process.
systemctl start tomcat

Enable Tomcat to Start at System Boot.
systemctl enable tomcat

Run netstat -plntu and check port 8080 is in LISTEN State by a java program. Now open http://server-ip-addres:8080 you should see tomcat homepage

Configure Tomcat Manager Users

Restart Tomcat Process.
systemctl restart tomcat

Make sure all the Files in /opt/tomcat belong to Tomcat user and group, Run this Command whenever you new deploy WAR in /opt/tomcat/webapps
chown -R tomcat:tomcat /opt/tomcat