How to install Tomcat 8.5 on CentOS 7
MARCH 31, 2018
https://linuxize.com/post/how-to-install-tomcat-8-5-on-centos-7/
This tutorial shows you how to install Tomcat 8.5 on CentOS 7. Tomcat is an open source implementation of the Java Servlet, JavaServer Pages, Java Expression Language and Java WebSocket technologies.
Prerequisites
Before starting with this tutorial, make sure you are logged into your server with a user account with sudo privileges or with the root user. It is best practice to run administrative commands as sudo user instead of root, if you don’t have a sudo user on your system you can create one by following these instructions.
Install OpenJDK
Tomcat 8.5 requires Java SE 7 or later. In this tutorial we will install OpenJDK, the open source implementation of the Java Platform which is the default Java development and runtime in CentOS 7.
The installation is simple and straight forward:
sudo yum install java-1.8.0-openjdk-devel
Copy
If you want to install Oracle Java instead of OpenJDK please check this guide.
Create Tomcat system user
Running Tomcat as a root user is a security risk and is not recommended. Instead we will create a new system user and group with home directory /opt/tomcat
that will run the Tomcat service:
sudo useradd -m -U -d /opt/tomcat -s /bin/false tomcat
Copy
Download Tomcat
We will download the latest version of Tomcat 8.5.x from the Tomcat downloads page. At the time of writing, the latest version is 8.5.33. Before continuing with the next step you should check the download page for any new version.
Change to the /tmp
directory and use wget
to download the zip file:
cd /tmp
wget http://www-us.apache.org/dist/tomcat/tomcat-8/v8.5.33/bin/apache-tomcat-8.5.33.zip
Once the download is completed, extract the zip file and move it to the /opt/tomcat
directory:
unzip apache-tomcat-*.zip
sudo mkdir -p /opt/tomcat
sudo mv apache-tomcat-8.5.33 /opt/tomcat/
Because Tomcat 8.5 is updated frequently to have more control over versions and updates, we will create a symbolic link latest
which will point to the Tomcat installation directory:
sudo ln -s /opt/tomcat/apache-tomcat-8.5.33 /opt/tomcat/latest
Copy
The tomcat user that we previously set up needs to have access to the tomcat directory, so we will change the directory ownership to user and group tomcat:
sudo chown -R tomcat: /opt/tomcat
Copy
and we will also make the scripts inside bin
directory executable:
sudo chmod +x /opt/tomcat/latest/bin/*.sh
CopyAdvertisement
Create a systemd unit file
To run Tomcat as a service we will create a tomcat.service
unit file in the /etc/systemd/system/
directory with the following contents:
/etc/systemd/system/tomcat.service
[Unit]
Description=Tomcat 8.5 servlet container
After=network.target
[Service]
Type=forking
User=tomcat
Group=tomcat
Environment="JAVA_HOME=/usr/lib/jvm/jre"
Environment="JAVA_OPTS=-Djava.security.egd=file:///dev/urandom"
Environment="CATALINA_BASE=/opt/tomcat/latest"
Environment="CATALINA_HOME=/opt/tomcat/latest"
Environment="CATALINA_PID=/opt/tomcat/latest/temp/tomcat.pid"
Environment="CATALINA_OPTS=-Xms512M -Xmx1024M -server -XX:+UseParallelGC"
ExecStart=/opt/tomcat/latest/bin/startup.sh
ExecStop=/opt/tomcat/latest/bin/shutdown.sh
[Install]
WantedBy=multi-user.target
<span class="code-copy button main small" data-clipboard-text="[Unit]
Description=Tomcat 8.5 servlet container
After=network.target
[Service]
Type=forking
User=tomcat
Group=tomcat
Environment="JAVA_HOME=/usr/lib/jvm/jre"
Environment="JAVA_OPTS=-Djava.security.egd=file:///dev/urandom"
Environment="CATALINA_BASE=/opt/tomcat/latest"
Environment="CATALINA_HOME=/opt/tomcat/latest"
Environment="CATALINA_PID=/opt/tomcat/latest/temp/tomcat.pid"
Environment="CATALINA_OPTS=-Xms512M -Xmx1024M -server -XX:+UseParallelGC"
ExecStart=/opt/tomcat/latest/bin/startup.sh
ExecStop=/opt/tomcat/latest/bin/shutdown.sh
[Install]
WantedBy=multi-user.target">Copy
Notify systemd that we created a new unit file and start the Tomcat service by executing:
sudo systemctl daemon-reload
sudo systemctl start tomcat
You can check the service status with the following command:
sudo systemctl status tomcat
Copy
tomcat.service - Tomcat 8.5 servlet container
Loaded: loaded (/etc/systemd/system/tomcat.service; disabled; vendor preset: disabled)
Active: active (running) since Sat 2018-03-31 16:30:48 UTC; 3s ago
Process: 23826 ExecStart=/opt/tomcat/latest/bin/startup.sh (code=exited, status=0/SUCCESS)
Main PID: 23833 (java)
CGroup: /system.slice/tomcat.service
└─23833 /usr/lib/jvm/jre/bin/java -Djava.util.logging.config.file=/opt/tomcat/latest/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.security.egd=fi...
and if there are no errors you can enable the Tomcat service to be automatically started at boot time:
sudo systemctl enable tomcat
Copy
Adjust the Firewall
If your server is protected by a firewall and you want to access the tomcat interface from the outside of the local network you also need to open port 8080
.
Use the following commands to open the necessary port:
sudo firewall-cmd --zone=public --permanent --add-port=8080/tcp
sudo firewall-cmd --reload
In most cases, when running Tomcat in a production environment you will use a load balancer or reverse proxy and it’s a best practice to allow access to port 8080 only to your internal network.
Configure Tomcat Web Management Interface
At this point Tomcat is installed and we can access it with a web browser on port 8080
, but we can not access the web management interface because we have not created a user yet.
Tomcat users and their roles are defined in the tomcat-users.xml
file.
If you open the file you will notice that it is filled with comments and examples describing how to configure the file.
sudo vim /opt/tomcat/latest/conf/tomcat-users.xml
Copy
To add a new user who will be able to access the tomcat web interface (manager-gui and admin-gui) we need to define the user in tomcat-users.xml
file as shown bellow. Make sure you change the username and password to something more secure:
/opt/tomcat/latest/conf/tomcat-users.xml
<tomcat-users>
<!--
Comments
-->
<role role/>
<role role/>
<user user/>
</tomcat-users>
Copyright © 2015 Powered by MWeb, Theme used GitHub CSS.