Apache Tomcat is a web server and servlet container that is used to serve Java applications. Tomcat is an open source implementation of the Java Servlet and JavaServer Pages technologies, released by the Apache Software Foundation. This tutorial covers the basic installation and some configuration of the latest release of Tomcat 8 on your Ubuntu 14.04 server.
Before you begin with this guide, you should have a separate, non-root user account set up on your server. You can learn how to do this by completing steps 1-3 in the initial server setup for Ubuntu 14.04. We will be using the demo
user created here for the rest of this tutorial.
Tomcat requires that Java is installed on the server, so any Java web application code can be executed. Let’s satisfy that requirement by installing OpenJDK 7 with apt-get.
First, update your apt-get package index:
- sudo apt-get update
Then install the Java Development Kit package with apt-get:
- sudo apt-get install default-jdk
Answer y
at the prompt to continue installing OpenJDK 7.
Now that Java is installed, let’s create a tomcat
user, which will be used to run the Tomcat service.
For security purposes, Tomcat should be run as an unprivileged user (i.e. not root). We will create a new user and group that will run the Tomcat service.
First, create a new tomcat
group:
- sudo groupadd tomcat
Then create a new tomcat
user. We’ll make this user a member of the tomcat
group, with a home directory of /opt/tomcat
(where we will install Tomcat), and with a shell of /bin/false
(so nobody can log into the account):
- sudo useradd -s /bin/false -g tomcat -d /opt/tomcat tomcat
Now that our tomcat
user is set up, let’s download and install Tomcat.
The easiest way to install Tomcat 8 at this time is to download the latest binary release then configure it manually.
Find the latest version of Tomcat 8 at the Tomcat 8 Downloads page. At the time of writing, the latest version is 8.0.23. Under the Binary Distributions section, then under the Core list, copy the link to the “tar.gz”.
Let’s download the latest binary distribution to our home directory.
First, change to your home directory:
- cd ~
Then use wget
and paste in the link to download the Tomcat 8 archive, like this (your mirror link will probably differ from the example):
- wget http://mirror.sdunix.com/apache/tomcat/tomcat-8/v8.0.23/bin/apache-tomcat-8.0.23.tar.gz
We’re going to install Tomcat to the /opt/tomcat
directory. Create the directory, then extract the the archive to it with these commands:
- sudo mkdir /opt/tomcat
- sudo tar xvf apache-tomcat-8*tar.gz -C /opt/tomcat --strip-components=1
Now we’re ready to set up the proper user permissions.
The tomcat
user that we set up needs to have the proper access to the Tomcat installation. We’ll set that up now.
Change to the Tomcat installation path:
- cd /opt/tomcat
Then give the tomcat
user write access to the conf
directory, and read access to the files in that directory:
- sudo chgrp -R tomcat conf
- sudo chmod g+rwx conf
- sudo chmod g+r conf/*
Then make the tomcat
user the owner of the work
, temp
, and logs
directories:
- sudo chown -R tomcat work/ temp/ logs/
Now that the proper permissions are set up, let’s set up an Upstart init script.
Because we want to be able to run Tomcat as a service, we will set up an Upstart script.
Tomcat needs to know where Java was installed. This path is commonly referred to as “JAVA_HOME”. The easiest way to look up that location is by running this command:
- sudo update-alternatives --config java
Output:There is only one alternative in link group java (providing /usr/bin/java): /usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java
Nothing to configure.
The JAVA_HOME will be in the output, without the trailing /bin/java
. For the example above, the JAVA_HOME is highlighted in red.
Now we’re ready to create the Upstart script. Create and open it by running this command:
- sudo nano /etc/init/tomcat.conf
Paste in the following script, and modify the value of JAVA_HOME
if necessary. You may also want to modify the memory allocation settings that are specified in CATALINA_OPTS
:
description "Tomcat Server"
start on runlevel [2345]
stop on runlevel [!2345]
respawn
respawn limit 10 5
setuid tomcat
setgid tomcat
env JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64/jre
env CATALINA_HOME=/opt/tomcat
# Modify these options as needed
env JAVA_OPTS="-Djava.awt.headless=true -Djava.security.egd=file:/dev/./urandom"
env CATALINA_OPTS="-Xms512M -Xmx1024M -server -XX:+UseParallelGC"
exec $CATALINA_HOME/bin/catalina.sh run
# cleanup temp directory after stop
post-stop script
rm -rf $CATALINA_HOME/temp/*
end script
Save and exit. This script tells the server to run the Tomcat service as the tomcat
user, with the settings specified. It also enables Tomcat to run when the server is started.
Now let’s reload the Upstart configuration, so we can use our new Tomcat script:
- sudo initctl reload-configuration
Tomcat is ready to be run. Start it with this command:
- sudo initctl start tomcat
Tomcat is not completely set up yet, but you can access the default splash page by going to your domain or IP address followed by :8080
in a web browser:
Open in web browser:http://server_IP_address:8080
You will see the default Tomcat splash page, in addition to other information. Now we will go deeper into the installation of Tomcat.
In order to use the manager webapp that comes with Tomcat, we must add a login to our Tomcat server. We will do this by editing the tomcat-users.xml
file:
- sudo nano /opt/tomcat/conf/tomcat-users.xml
This file is filled with comments which describe how to configure the file. You may want to delete all the comments between the following two lines, or you may leave them if you want to reference the examples:
<tomcat-users>
...
</tomcat-users>
You will want to add a user who can access the manager-gui
and admin-gui
(webapps that come with Tomcat). You can do so by defining a user similar to the example below. 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 quit the tomcat-users.xml file. To put our changes into effect, restart the Tomcat service:
- sudo initctl restart tomcat
Now that Tomcat is up and running, let’s access the web management interface in a web browser. You can do this by accessing the public IP address of the server, on port 8080:
Open in web browser:http://server_IP_address:8080
You will see something like the following image:
As you can see, there are links to the admin webapps that we configured an admin user for.
Let’s take a look at the Manager App, accessible via the link or http://server_IP_address:8080/manager/html
:
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 (i.e. find memory leaks). Lastly, 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_IP_address:8080/host-manager/html/
:
From the Virtual Host Manager page, you can add virtual hosts to serve your applications from.
Your installation of Tomcat is complete! Your are now free to deploy your own Java web applications!
Thanks for learning with the DigitalOcean Community. Check out our offerings for compute, storage, networking, and managed databases.
This textbox defaults to using Markdown to format your answer.
You can type !ref in this text area to quickly search our full set of tutorials, documentation & marketplace offerings and insert the link!
Sign up for Infrastructure as a Newsletter.
Working on improving health and education, reducing inequality, and spurring economic growth? We'd like to help.
Get paid to write technical tutorials and select a tech-focused charity to receive a matching donation.
There is a little issue on tomcat.conf file, it’s needed to remove all initial spaces in each line to be able to run initctl reload-configuration successfully, that was the only problem here. Thanks for the tutorial!
I also get this error deploying a new app: Unable to create the directory [/opt/tomcat/webapps/ROOT] So, I guess that is needed to grant tomcat permissions to webapps folder, you can do this executing this command: sudo chown -R tomcat /opt/tomcat/webapp
Great tutorial! Thanks!
I found that I could not deploy (server would start but the webpage would not load) unless I gave tomcat rights to the webapps folder too (as we did for conf):
sudo chgrp -R tomcat webapps sudo chmod g+rwx webapps sudo chmod g+r webapps/*
I’m getting an error as below
How to uninstall it?
hello.after creating a tomcat user, should not we change the user to tomcat somewhere?What is the password for tomcat user?After running tomcat, what should output be on console?
Hello, i know this is a pretty old post but after i did all steps of the install the tomcat is running but not accepting any login from users, so i decided to restart the server. Now after the reboot tomcat is not showing up anymore, it just doesn’t show the splash screen or anything else
This comment has been deleted
This comment has been deleted
This comment has been deleted
This comment has been deleted