Learn how to install Tomcat and some of the cloud hosting option to deploy your Tomcat applications.
There are two parts to this blogpost – the first part talks about how to install Apache Tomcat on Ubuntu by yourself, and the second part talks about the best hosting platforms available to host Tomcat applications.
What is Apache Tomcat?
Apache Tomcat is an open-source web/application server from the Apache foundation. It was formerly called Jakarta. It is an HTTP server and a servlet container. By default, it runs on port 8080.
Tomcat implements the java servlets and the Java server pages specifications. It provides a Java web server environment for Java code to run in. Apache Tomcat includes configuration and management tools. It can also be configured directly by editing the XML configuration file.
Here is a step by step guide to install Tomcat 9 on Ubuntu 18.04.
Prerequisite
To install Tomcat, you need to have java installed on your system.
Update the repository and install Java 8.
sudo apt-get update
sudo apt-get install openjdk-8-jdk -y
Choose Java 8 you just installed as the current Java version.
sudo update-alternatives --config java
Check the Java version.
geekflare@geekflare:~$ java -version
openjdk version "1.8.0_212"
OpenJDK Runtime Environment (build 1.8.0_212-8u212-b03-0ubuntu1.18.10.1-b03)
OpenJDK 64-Bit Server VM (build 25.212-b03, mixed mode)
Install Tomcat 9
Download the latest package of Tomcat 9 version, currently its tomcat-9.0.27. You can always refer to the official download link for the latest version.
https://tomcat.apache.org/download-90.cgi
The below example is for 9.0.27.
- Download the Tomcat package
geekflare@geekflare:~$ wget http://www-eu.apache.org/dist/tomcat/tomcat-9/v9.0.27/bin/apache-tomcat-9.0.27.tar.gz
--2019-11-18 14:29:04-- http://www-eu.apache.org/dist/tomcat/tomcat-9/v9.0.27/bin/apache-tomcat-9.0.27.tar.gz
Resolving www-eu.apache.org (www-eu.apache.org)... 95.216.24.32, 2a01:4f9:2a:185f::2
Connecting to www-eu.apache.org (www-eu.apache.org)|95.216.24.32|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 10982406 (10M) [application/x-gzip]
Saving to: ‘apache-tomcat-9.0.27.tar.gz’
apache-tomcat-9.0.27.tar.gz 100%[=================================================================>] 10.47M 3.87MB/s in 2.7s
2019-11-18 14:29:38 (3.87 MB/s) - ‘apache-tomcat-9.0.27.tar.gz’ saved [10982406/10982406]
- Extract the Tomcat 9 package
geekflare@geekflare:~$ tar -xzf apache-tomcat-9.0.27.tar.gz
- For security reasons, we will create a separate system user for Tomcat.
geekflare@geekflare:~$ sudo useradd -r -m -U -d /home/geekflare/apache-tomcat-9.0.27 -s /bin/false tomcat
[sudo] password for geekflare:
- The tomcat user should have complete access to the Tomcat installation directory. This command changes the installation directory ownership to the tomcat user.
geekflare@geekflare:~$ sudo chown -RH tomcat: apache-tomcat-9.0.27
- All the scripts inside the bin directory of tomcat must be executable, so add the executable permission.
geekflare@geekflare:~$ sudo sh -c 'chmod +x apache-tomcat-9.0.27/bin/*.sh'
- Create a file
tomcat.service
inside/etc/systemd/system/
to run tomcat as a service.
Wondering why? well, this is to ensure Tomcat starts automatically when server reboot.
geekflare@geekflare:~$ sudo gedit /etc/systemd/system/tomcat.service
- Copy-paste the content below in the file. Change the
JAVA_HOME
path according to your java installation path.
[Unit]
Description=Tomcat 9 servlet container
After=network.target
[Service]
Type=forking
User=tomcat
Group=tomcat
Environment="JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-amd64"
Environment="JAVA_OPTS=-Djava.security.egd=file:///dev/urandom -Djava.awt.headless=true"
Environment="CATALINA_BASE=/home/geekflare/apache-tomcat-9.0.27"
Environment="CATALINA_HOME=/home/geekflare/apache-tomcat-9.0.27"
Environment="CATALINA_PID=/home/geekflare/apache-tomcat-9.0.27"
Environment="CATALINA_OPTS=-Xms512M -Xmx1024M -server -XX:+UseParallelGC"
ExecStart=/home/geekflare/apache-tomcat-9.0.27/bin/startup.sh
ExecStop=/home/geekflare/apache-tomcat-9.0.27/bin/shutdown.sh
[Install]
WantedBy=multi-user.target
- Run the below command to tell the system about the new service file you just created.
geekflare@geekflare:~$ sudo systemctl daemon-reload
- Start the tomcat service.
geekflare@geekflare:~$ sudo systemctl start tomcat
- Check if the tomcat service is in the running mode or not.
geekflare@geekflare:~$ systemctl status tomcat.service
● tomcat.service - Tomcat 9 servlet container
Loaded: loaded (/etc/systemd/system/tomcat.service; disabled; vendor preset: enabled)
Active: active (running) since Mon 2019-11-18 14:41:12 EST; 4s ago
Process: 22939 ExecStart=/home/geekflare/apache-tomcat-9.0.27/bin/startup.sh (code=exited, status=0/SUCCESS)
Main PID: 22947 (java)
Tasks: 14 (limit: 4680)
Memory: 63.0M
CGroup: /system.slice/tomcat.service
└─22947 /usr/lib/jvm/java-1.8.0-openjdk-amd64/bin/java -Djava.util.logging.config.file=/home/geekflare/apache-tomcat-9.0.27/conf/logg
Nov 18 14:41:12 geekflare systemd[1]: Starting Tomcat 9 servlet container...
Nov 18 14:41:12 geekflare systemd[1]: Started Tomcat 9 servlet container.
- You can ask the system to automatically start tomcat at boot time by running the command below.
geekflare@geekflare:~$ sudo systemctl enable tomcat
Created symlink /etc/systemd/system/multi-user.target.wants/tomcat.service → /etc/systemd/system/tomcat.service.
- Make sure your firewall does not stop Tomcat from running. Open port 8080 on which tomcat runs.
geekflare@geekflare:~$ sudo ufw allow 8080/tcp
Rules updated
Rules updated (v6)
- Edit the
tomcat-users.xml
file where all the users and roles are defined for the tomcat web management interface.
geekflare@geekflare:~$ sudo gedit apache-tomcat-9.0.27/conf/tomcat-users.xml
- I am giving a tomcat user manager-gui role also, which allows it to access the web management interface with a different credential.
<?xml version="1.0" encoding="UTF-8"?>
<!--
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements. See the NOTICE file distributed with
this work for additional information regarding copyright ownership.
The ASF licenses this file to You under the Apache License, Version 2.0
(the "License"); you may not use this file except in compliance with
the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<tomcat-users xmlns="http://tomcat.apache.org/xml"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://tomcat.apache.org/xml tomcat-users.xsd"
version="1.0">
<!--
NOTE: By default, no user is included in the "manager-gui" role required
to operate the "/manager/html" web application. If you wish to use this app,
You must define such a user - the username and password are arbitrary. It is
strongly recommended that you do NOT use one of the users in the commented out
the section below since they are intended for use with the examples web
application.
-->
<!--
NOTE: The sample user and role entries below are intended for use with the
examples web application. They are wrapped in a comment and thus are ignored
when reading this file. If you wish to configure these users for use with the
examples web application, do not forget to remove the <!.. ..> that surrounds
them. You will also need to set the passwords to something appropriate.
-->
<!--
-->
<role rolename="tomcat"/>
<role rolename="manager-gui"/>
<user username="tomcat" password="tomcat" roles="tomcat"/>
<user username="tomcat" password="admin" roles="manager-gui"/>
</tomcat-users>
- Open your favorite browser and access http://localhost:8080.

- Now go to http://localhost:8080/manager/html, where the web dashboard of tomcat is present. You will be asked to log in, use username tomcat and password admin to login. Using this interface, you can start, stop, reload, deploy an application with a click of a button.

Congratulations! You have successfully installed Tomcat 9 on Ubuntu 18.04.
Now the second part about the hosting platforms and their features.
A2 Hosting
A2 hosting platform claims its Tomcat hosting to be the fastest, easiest, and most reliable. On A2, you can run 20X faster using A2’s Turbo boost VPS.
They offer 24×7 support with any hosting issue you come across on their platform with a 99.9% uptime guarantee. That makes A2 a very reliable hosting platform.

It gives you enough options to customize the resources you need on the platform. A2 is developer-friendly and gives you the root access to all server’s files, which you are free to edit as per your need. There is a risk-free Anytime Money Back Guarantee in case you do not like the hosting platform and want to stop the usage.
Kamatera
Kamatera is a popular cloud hosting platform. It helps you set up, configure, and launch tomcat in seconds. You can choose the tomcat version you want to host and also the zone (region) where you want to host from a straightforward user interface.

Pricing is very attractive.
You can get it started from as low as $4 per month.
Depending on the configuration you choose, there is a wide range of pricing options offered by Kamatera. You can choose from a monthly pricing option or even hourly pricing option. The best part is the first 30 days are entirely free.

Virtuozzo
Virtuozzo offers a multi-cloud configuration where you can host applications on different clouds for extra high availability. Here, you can get a combination of PaaS (Platform as a Service) and CaaS (Container as a Service) models.
With its simple user interface, you can easily select the tomcat application and its version. Then, launching only takes a few seconds.

Automatic Tomcat Clustering in Virtuozzo offers a high availability feature. So, if any tomcat instance fails, another instance gets started automatically. Your tomcat cluster can automatically scale vertically and horizontally in Virtuozzo. However, you can manually scale your cluster horizontally as well.
Some other features that Virtuozzo offers are:
- Support for microservices and legacy applications
- Integrated CI and CD tools for automation
- Quick setup of clustered applications
- Built-in monitoring system with alert notification
- Integrated IDE Plugins: IntelliJ IDEA, Eclipse, NetBeans
- Automated traffic distribution for deployment without any downtime
- Sharing environment and account collaboration with different access levels
- Marketplace with a rich set of preconfigured applications for one-click installation
JavaPipe
Another hosting platform is Java Hosting Service for Tomcat. It contains built-in plugins for hibernate, Spring MVC, Servlets and JSPs, Grails, Play, and many more.
With JavaPipe, you can start with as low as $ 5.40 per month, which gives you dedicated Tomcat instance versions 7, 8, or 9 with JDK 7, 8, 10, or 11 support. It gives you 128 MB to 2 GB dedicated RAM and unlimited access to MariaDB. You also get 200 GB of monthly traffic and 5 GB of SSD storage. There are other pricing options also with Java Hosting platform offering more monthly traffic and SSD storage.
Also, you get 40% off if you pay for three years. So, if can think of a long term hosting plan, this could be beneficial.

Conclusion
That was all about Tomcat installation and hosting platforms. If you are interested in hosting Tomcat yourself but on the cloud, then check out these platforms.