Apache Tomcat is an open-source web application server used by Java applications for hosting purposes. It is very easy to install Apache Tomcat on Debian systems. Apache Tomcat consists of Java Servlet, JavaServer Pages (JSP), and Java EL.
Java-based applications require Apache Tomcat to host Java applications and run Java codes. Tomcat consists of rich features and functionality, including an extra level of security, lightweight application, flexibility, well-documented guidelines, and maturity.
This article will cover how to install and configure Apache Tomcat on Debian and run your Java-based application. So, let’s get started.
Install Apache Tomcat 10 on Debian 10
Before proceeding with the Tomcat installation, make sure that your Debian 10 machine is configured with sudo privilege or root access. The machine should also have a domain name if it is a server machine.
1. Update Packages
The first step is to update the system packages to the latest version using this command:
sudo apt-get update -y
Wait for all the packages to be updated before proceeding with the Java installation.
2. Install Java
Since Apache Tomcat is a Java-based application, you will install Java JRE first. Execute the following command to install Java JRE:
sudo apt install default-jre
Secondly, install the default Java JDK by running this command:
sudo apt install default-jdk -y

The installation will take some time. Wait for it to complete. After the installation, you can verify the Java version. For example:
java --version

If you see a similar output, you have successfully installed Java JDK.
3. Install Apache Tomcat on Debian
To install Apache Tomcat 10, you will add a user to run the Apache Tomcat. We will use the useradd command to add the user.
For example:
sudo useradd -m -d /opt/tomcat -U -s /bin/false tomcat
Secondly, you will download the Apache Tomcat 10 using the wget
command. This package does not exist in APT manager. Hence, we will use the wget
command.
wget https://mirrors.estointernet.in/apache/tomcat/tomcat-10/v10.0.7/bin/apache-tomcat-10.0.7.tar.gz

Once the download has been completed, you will extract the downloaded file using the tar
command. Extract the downloaded archive file to the /opt/tomcat
directory folder. You can also extract to any other folder, but make sure to use that directory name. For example:
tar -xzvf apache-tomcat-10.0.7.tar.gz -C /opt/tomcat --strip-components=1
Next, set the ownership to the extracted directory using the chown
command. For example:
sudo chown -R tomcat:tomcat /opt/tomcat/
4. Create Tomcat Admin User
In this step, you will create an admin user. Next, you will allow that user to access the Tomcat Admin interface. To perform this step, edit the tomcat-users.xml
file using the nano or vi editor. For example:
<!-- manager section user role -- >
<role rolename="manager-gui" />
<user username="manager" password="pasword" roles="manager-gui" />
<!-- admin section user role -- >
<role rolename="admin-gui" />
<user username="admin" password="password" roles="manager-gui,admin-gui" />

Save the file by pressing “Ctrl + X”. After that, type “y”, and hit the “Enter” key.
5. Allow Remote Access
By default, you can access Apache Tomcat from local systems only. To configure Tomcat accessibility from remote systems, you will edit the context.xml file. Firstly, open the file using the editor.
For example:
nano /opt/tomcat/webapps/manager/META-INF/context.xml
Modify the “allow” tag in the file.
Remove the following lines from the file:
<Valve className="org.apache.catalina.valves.RemoteAddrValve"
allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />
Save the file by pressing “Ctrl + X”. After that, type “y”, and hit the “Enter” key. Now, proceed to the next step.
6. Create a File to Manage Tomcat Service
Now that you have allowed the remote access, the next step is to create a systemd unit file. This file will be responsible for managing the Tomcat services. Firstly, create the file using the nano command.
For example:
nano /etc/systemd/system/tomcat.service
Secondly, add the following lines in the tomcat.service
file.
[Unit]
Description=Tomcat
After=network.target
[Service]
Type=forking
User=tomcat
Group=tomcat
Environment="JAVA_HOME=/usr/lib/jvm/java-1.11.0-openjdk-amd64"
Environment="JAVA_OPTS=-Djava.security.egd=file:///dev/urandom"
Environment="CATALINA_BASE=/opt/tomcat"
Environment="CATALINA_HOME=/opt/tomcat"
Environment="CATALINA_PID=/opt/tomcat/temp/tomcat.pid"
Environment="CATALINA_OPTS=-Xms512M -Xmx1024M -server -XX:+UseParallelGC"
ExecStart=/opt/tomcat/bin/startup.sh
ExecStop=/opt/tomcat/bin/shutdown.sh
[Install]
WantedBy=multi-user.target

Now, save the file and exit from the editor. Thirdly, restart the daemon to implement the changes you have recently made.
sudo systemctl daemon-reload
Next, start the Tomcat service and enable it using the systemctl command. For example:
systemctl start tomcat
systemctl enable tomcat
To check the status of the Tomcat service, use the systemctl command. For example:
systemctl status tomcat
Currently, the Tomcat service is listening on port 8080. To confirm this, use the ss command. For example
ss -antpl | grep 8080
7. Configure Nginx for Tomcat
Since we have allowed remote access to Tomcat, we will use Nginx as a reverse proxy to access the Tomcat application.
Firstly, install the Nginx web server using this command:
sudo apt-get install nginx -y

Secondly, you will create a virtual host configuration file using the editor. For example:
nano /etc/nginx/conf.d/tomcat.conf
Thirdly, add the following lines in the tomcat.conf
file:
server {
listen 80;
server_name tomcat.example.com;
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
location / {
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://127.0.0.1:8080/;
}
}
Save the file and exit the editor. To ensure that you have successfully made the changes, run the following command:
sudo nginx -t
You will get a similar output:

Next, restart the Nginx to implement the changes using the systemctl command.
sudo systemctl restart nginx
To check the status of Nginx, run the systemctl command. For example:
sudo systemctl status nginx
Now, enable the Nginx service:
sudo systemctl enable tomcat
Lastly, allow the ufw firewall.
sudo ufw allow 8080/tcp
8. Access the Apache Tomcat Application
To access the Apache Tomcat, open your web browser and type the Tomcat application URL. For example:
http://tomcat.<your_URL>.com
Or, you can access it locally by typing “http://username.local:8080” and you will be directed to the main page of Apache Tomcat on your localhost server.
From this portal, you can check the Server Status, Manage App and access the Host Manager. All of these actions would require your admin username and password.
Congratulations! you have successfully installed Apache Tomcat 10 on Debian 10 server. You can now easily deploy your Java-based applications including Java Servlet, JavaServer Pages (JSP), and Java EL using Tomcat.
We hope this step-by-step guide will assist you in installing Apache Tomcat 10 on Debian 10 successfully.
If this guide helped you, please share it.