This tutorial will explain how to install Tomcat on Ubuntu 18.04 server. The same instructions mentioned here can be used for Ubuntu 20.04 and other Ubuntu-based distributions. Let’s get started!

Apache Tomcat is an open-source web server and servlet container that serves Java applications. Apache Tomcat, often called Tomcat, is one of the most popular applications used to execute a Java servlet and render web pages with Java page coding. The Apache Software Foundation released Tomcat, which many developers favour and is widely used in web servers worldwide.

Tomcat generates JSP files (server-generated webpages similar to PHP and ASP files) into Java code, compiling to .class files by the server, and executed by the Java virtual machine. As of today, Tomcat is one of the more useable servlet containers available. There are some key features of using Apache Tomcat:

  • Tomcat makes it fast and easy to run applications in Ubuntu
  • It contains built-in customization choices which provide flexibility to its users
  • It’s free and open-source
  • It offers an extra layer of security to its users
  • It's stable: even if something happens to Tomcat, the server will keep running without any interruptions

Prerequisites

  • A Ubuntu 18.04 server
  • A basic understanding of Linux commands
  • A root user account or a user account with Sudo privileges

Step 1: Install Java (OpenJDK)

For Tomcat to work, you will need Java installed on your system. With Java installed, it’s possible to execute any Java web application code. OpenJDK is the default Java development and runtime for Ubuntu 18.04, and installing it is straightforward. Enter the following commands:

sudo apt-get update

Once the system is updated, go ahead and enter the following command:

sudo apt-get install default-jdk

Now that Java has been installed on your system let’s go ahead and create a new Tomcat user.

Step 2: Create a Tomcat user

For security reasons, using a unique Tomcat user without any root privileges is recommended. First, we will create a new tomcat group that will run the service:

sudo groupadd tomcat

Now we will create the Tomcat user. We will create a user in the tomcat group and with a home directory of /opt/tomcat (this is where we install Tomcat) to run the service.

sudo useradd -s /bin/false -g tomcat -d /opt/tomcat tomcat

PS: the /bin/false/ makes it so that nobody can log into the account.

Step 3: Install Tomcat

The best way to install Tomcat 8 is to download the latest binary release and then configure it manually. You can find the latest download version from the Tomcat official webpage. We will install the latest version to the date of writing, Tomcat 10.0.5. If the version is not 10.0.5 or the latest version, follow the latest stable version. Just copy the link of the Core tar.gz file under the Binary Distributions section.

Let's go into the /tmp directory to download the items which you won’t need after extracting the Tomcat contents:

cd /tmp

Use curl to download the link that you copied from the Tomcat website:

curl -O https://apache.mirror.serveriai.lt/tomcat/tomcat-10/v10.0.5/bin/apache-tomcat-10.0.5.tar.gz

 Step 4: Updating Permissions

The installation of Tomcat is finished, but we will need to set the Tomcat user to have full access to the Tomcat installation. To do this, follow the below commands:

sudo mkdir /opt/tomcat

cd /opt/tomcat

sudo tar xzvf /tmp/apache-tomcat-10.0.5.tar.gz -C /opt/tomcat --strip-components=1

You can check this article to learn more about the tar command!

Now we will provide tomcat with group ownership over the entire installation directory:

sudo chgrp -R tomcat /opt/tomcat

The newly created Tomcat user needs access to the conf directory to view and execute changes. This can be done using the following commands:

sudo chmod -R g+r conf

sudo chmod g+x conf

The last permission to set is to provide the Tomcat user with the owner of the web apps, work, temp and log directories:

sudo chown -R tomcat webapps/ work/ temp/ logs/

Now that the proper permissions are set up, we can create a systemd service file to manage the Tomcat process.

Step 5: Create a systemd Unit file

We must create a new system file to run Tomcat as a service. To do this, we will use the nano text editor to create the file tomcat.service in the /etc/systemd/system/ location.

sudo nano /etc/systemd/system/tomcat.service

Paste the following text into the file:

[Unit]
Description=Apache Tomcat Web Application Container
After=network.target

[Service]
Type=forking

Environment=JAVA_HOME=/usr/lib/jvm/java-1.11.0-openjdk-amd64/jre
Environment=CATALINA_PID=/opt/tomcat/temp/tomcat.pid
Environment=CATALINA_Home=/opt/tomcat
Environment=CATALINA_BASE=/opt/tomcat
Environment=’CATALINA_OPTS=-Xms512M -Xmx1024M -server -XX:+UseParallelGC’
Environment=’JAVA_OPTS.awt.headless=true -Djava.security.egd=file:/dev/v/urandom’

ExecStart=/opt/tomcat/bin/startup.sh
ExecStop=/opt/tomcat/bin/shutdown.sh

User=tomcat
Group=tomcat
UMask=0007
RestartSec=10
Restart=always

[Install]
WantedBy=multi-user.target

When you are finished, save and close the file by pressing Ctrl + x > y > Enter.

Note: In the above text next to JAVA_HOME might be different in your system. To check for the correct path, enter the following command.

sudo update-java-alternatives –l

The new system file is created! To notify the system that you have created a new file, enter this command:

sudo systemctl daemon-reload

Everything is set! Enter the following commands to start the Tomcat service:

sudo systemctl start tomcat

Double-check that it started without errors by typing:

sudo systemctl status tomcat

Step 6: firewall configurations

Tomcat uses port 8080, and it is essential to adjust the firewall to accept the requests coming to and from the server. To allow traffic, enter the following:

sudo ufw allow 8080

Now go to your favourite web browser and enter the following address. Don’t forget to enter your server IP address instead of IP:

http://IP:8080

You will see the default Tomcat splash page (See the picture below).

Step 7: Configure the Tomcat Web management interface

To use the web app manager of Tomcat, we need to add a login to the Tomcat server. Enter the following command to edit the tomcat-users.xml file:

sudo nano /opt/tomcat/conf/tomcat-users.xml

Be sure to change the username and password to something secure:

<tomcat-users . . .>
    <user username="admin" password="password" roles="manager-gui,admin-gui"/>
</tomcat-users>

Save and close the file.

By default, newer versions of Tomcat restrict access to the Manager and Host Manager apps to connections from the server itself. Since we are installing it on a remote machine, you will probably want to remove or alter this restriction.

For the Manager app, type:

sudo nano /opt/tomcat/webapps/manager/META-INF/context.xml

For the Host Manager app, type:

sudo nano /opt/tomcat/webapps/host-manager/META-INF/context.xml

Inside, comment out the IP address restriction to allow connections from anywhere.

<Context antiResourceLocking="false" privileged="true" >
<!--<Valve className="org.apache.catalina.valves.RemoteAddrValve"
        allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />-->
</Context>

Don’t forget to save and close the files.

To apply the changes, restart the Tomcat service:

sudo systemctl restart tomcat

Step 8: Accessing the Tomcat web interface

To access the Tomcat web browser, enter the following address on your browser:

http://server_domain_or_IP:8080

It should be the same as the one you saw when testing it earlier.

Let’s take a look at the Manager App, accessible via the link or

http://server_domain_or_IP:8080/manager/html

You must enter the account credentials you added to the tomcat-users.xml file.

The Web Application Manager is used to manage your Java applications. You can Start, Stop, Reload, Deploy, and Undeploy here. You can also run some diagnostics on your apps. Information about your server is available at the very bottom of this page.

Now let’s take a look at the Host Manager, accessible via the link or:

http://server_domain _or_IP:8080/host-manager/html/

You can add virtual hosts to serve your applications from the Virtual Host Manager page.

Conclusions

If you're looking to expand your server's capabilities, consider setting up an Ubuntu VPS server for enhanced performance and flexibility. A VPS (Virtual Private Server) allows you to scale your applications and services while maintaining full control over your environment. Additionally, you might also want to configure an RDP server on Ubuntu to enable remote desktop access, which can be particularly useful for managing your server from any location with a graphical interface.

Currently, your Tomcat installation is functional but entirely unencrypted. This means that all data, including sensitive items like passwords, are sent in plain text that can be intercepted and read by other parties on the internet. We strongly recommend that you add an SSL certificate to encrypt your connection.

People also read: 

Save