PhixFlow Help

Install Tomcat on Linux

Introduction

Apache Tomcat is the java web server which runs the PhixFlow web application.

This guide covers downloading and installing Tomcat 8 on an Ubuntu Linux server.

Prerequisites

You have installed Ubuntu 16 Linux.

You can login as a non-root user with sudo access.

You have installed Java.

Instructions

Create Tomcat user

Do not run Tomcat as root as this constitutes a security risk.

This is the tomcat user (in the tomcat group).

We set the shell to /bin/false so that it is not possible to login as tomcat, and set the home directory to /opt/tomcat, the directory under which we will install tomcat.

This user will own all files created by PhixFlow and must be able to read all PhixFlow-specific files and directories.

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

Download and Install Tomcat

Find the latest version

Go to the tomcat downloads page, find the latest Binary Distributions section, then the Core sub-heading, and copy the tar.gz link.

Download Tomcat

On the linux server, goto the tmp directory then use curl to download from the link that you found above. E.g.

cd /tmp
curl -O http://mirror.ox.ac.uk/sites/rsync.apache.org/tomcat/tomcat-8/v8.5.11/bin/apache-tomcat-8.5.11.tar.gz

Install Tomcat

Unpack the tomcat tar.gz file into /opt/tomcat.

sudo mkdir /opt/tomcat
cd /opt/tomcat
sudo tar xvf /tmp/apache-tomcat-8*tar.gz --strip-components=1

This will have created the tomcat folders (conf, logs, webapps etc.) directly under /opt/tomcat.

Now to set the file ownership and permissions.

cd /opt/tomcat
sudo chown -R tomcat webapps/ work/ temp/ logs/
sudo chgrp -R tomcat .
sudo chmod -R g+r conf
sudo chmod g+x conf

Create a service wrapper

This stage creates a wrapper which allows tomcat to be managed as a service; this allows tomcat to be stopped and started reliably, and ensures that the running environment (e.g. the starting directory) is well defined.

Specifically, these instructions create a systemd service.

First, create a service definition file:

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

And then paste the following script into the file, making sure that the script is adjusted so that: 

  1. JAVA_HOME points to the version of java that you want to use
  2. the memory settings (-Xms and -Xmx) on the line for CATALINE_OPTS are set as needed (this example assumes you are allocating 8GB of memory to tomcat)
[Unit]
Description=Apache Tomcat Web Application Container
After=network.target

[Service]
Type=forking

Environment=JAVA_HOME=/opt/jdk/jdk1.8.0_85/jre
Environment=CATALINA_PID=/opt/tomcat/temp/tomcat.pid
Environment=CATALINA_HOME=/opt/tomcat
Environment=CATALINA_BASE=/opt/tomcat
Environment='CATALINA_OPTS=-Xms8096M -Xmx8096M -server -verbose:gc'
Environment='JAVA_OPTS=-Djava.awt.headless=true'

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

WorkingDirectory=/opt/tomcat

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

[Install]
WantedBy=multi-user.target

Now enable, then start the service:

sudo systemctl daemon-reload
sudo systemctl start tomcat

Lastly, check that the service started:

sudo systemctl status tomcat

Conclusion

From this point on, tomcat will start automatically when the host restarts, and you can re-start tomcat manually like this:

sudo systemctl restart tomcat



Please let us know if we could improve this page feedback@phixflow.com