How to Install Apache Tomcat 8 On Debian

tomcat-debian

In this tutorial, we will show you how to install Apache Tomcat 8 On Debian, manually.

Environment :

  1. Debian 7
  2. JDK 1.8
  3. Apache Tomcat 8

P.S Assume the JDK 1.8 is installed in /opt/jdk folder. Refer to this guide to install Oracle JDK 8 on Debian.

Note
On Debian 7, the Tomcat 8 is not included in the default apt-get repository.
Note
This guide should work in other Debian derivatives like Ubuntu or Mint.

1. Get Tomcat 8

1.1 Visit Tomcat 8 page and download the tar.gz file.

1.2 In this example, we get the version 8.0.30 via wget command.


$ cd /opt
$ sudo wget http://www.eu.apache.org/dist/tomcat/tomcat-8/v8.0.30/bin/apache-tomcat-8.0.30.tar.gz

2. Extracts to /opt/tomcat8

2.1 Extracts it to path /opt/tomcat8


$ pwd
/opt
$ sudo tar -xvzf apache-tomcat-8.0.30.tar.gz
$ mv apache-tomcat-8.0.30 tomcat8

$ ls -lsh
4.0K drwxr-xr-x  6 root   root   4.0K Dec 27 09:16 .
4.0K drwxr-xr-x 23 root   root   4.0K Feb 26  2014 ..
8.8M -rw-r--r--  1 root   root   8.8M Dec  1 17:56 apache-tomcat-8.0.30.tar.gz
4.0K drwxr-xr-x  3 root   root   4.0K Dec 27 09:06 jdk
4.0K drwxr-xr-x  9 root   root   4.0K Dec 27 09:16 tomcat8

3. Create a Tomcat user

3.1 Review the extracted tomcat8 folder, which is belonging to “root” user. For good practice, we should create a new user to run the Tomcat. In this example, we will create a non-login user “tomcat”, and set his home to /opt/tomcat/temp (anywhere you want).


#Usage : useradd -s <login shell> -d <home-dir> <user>

$ sudo useradd -s /sbin/nologin -d /opt/tomcat/temp tomcat

3.2 Change permissions of the /opt/tomcat8 folder, so that the new “tomcat” user can run the Tomcat.


$ sudo chown -R tomcat:tomcat /opt/tomcat8

$ pwd
/opt
$ls -lsh
8.8M -rw-r--r--  1 root   root   8.8M Dec  1 17:56 apache-tomcat-8.0.30.tar.gz
4.0K drwxr-xr-x  3 root   root   4.0K Dec 27 09:06 jdk
4.0K drwxr-xr-x  9 tomcat tomcat 4.0K Dec 27 09:16 tomcat8

4. /etc/init.d/tomcat8

To run Tomcat as a init service, create a custom script and put it in the /etc/init.d folder.

4.1 Create a script and save it as /etc/init.d/tomcat8


$ sudo vim /etc/init.d/tomcat8
/etc/init.d/tomcat8

#!/bin/bash
#
#https://wiki.debian.org/LSBInitScripts
### BEGIN INIT INFO
# Provides:          tomcat8
# Required-Start:    $local_fs $remote_fs $network
# Required-Stop:     $local_fs $remote_fs $network
# Should-Start:      $named
# Should-Stop:       $named
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Start Tomcat.
# Description:       Start the Tomcat servlet engine.
### END INIT INFO

export CATALINA_HOME=/opt/tomcat8
export JAVA_HOME=/opt/jdk/jdk1.8.0_66
export PATH=$JAVA_HOME/bin:$PATH

start() {
 echo "Starting Tomcat 8..."
 /bin/su -s /bin/bash tomcat -c $CATALINA_HOME/bin/startup.sh
}
stop() {
 echo "Stopping Tomcat 8..."
 /bin/su -s /bin/bash tomcat -c $CATALINA_HOME/bin/shutdown.sh
}
case $1 in
  start|stop) $1;;
  restart) stop; start;;
  *) echo "Usage : $0 <start|stop|restart>"; exit 1;;
esac

exit 0
Note
This simple Tomcat init script is running in one of my servers, and I believe it is enough to control the Tomcat. If you are looking for more advanced features, try visiting this Tomcat init script

4.2 Assign “execute” permission.


$ sudo chmod 755 /etc/init.d/tomcat8

#Review permission
$ ls -lsh /etc/init.d/tomcat8
4.0K -rwxr-xr-x 1 root root 859 Dec 27 22:07 /etc/init.d/tomcat8

4.3 Install the script.


$ sudo update-rc.d tomcat8 defaults

4.4 Test it


$ sudo service tomcat8
Usage : /etc/init.d/tomcat8 <start|stop|restart>

#Start Tomcat...
$ sudo service tomcat8 start
Starting Tomcat 8...
Using CATALINA_BASE:   /opt/tomcat8
Using CATALINA_HOME:   /opt/tomcat8
Using CATALINA_TMPDIR: /opt/tomcat8/temp
Using JRE_HOME:        /opt/jdk/jdk1.8.0_66
Using CLASSPATH:       /opt/tomcat8/bin/bootstrap.jar:/opt/tomcat8/bin/tomcat-juli.jar
Tomcat started.

#Stop Tomcat...
$ sudo service tomcat8 stop
Stopping Tomcat 8...
Using CATALINA_BASE:   /opt/tomcat8
Using CATALINA_HOME:   /opt/tomcat8
Using CATALINA_TMPDIR: /opt/tomcat8/temp
Using JRE_HOME:        /opt/jdk/jdk1.8.0_66
Using CLASSPATH:       /opt/tomcat8/bin/bootstrap.jar:/opt/tomcat8/bin/tomcat-juli.jar

Visit Tomcat default URL : http://localhost:8080

Done.

6. Extras…

6.1 To deploy a WAR file, just copy the WAR file in the /opt/tomcat8/webapps/ folder. Restart Tomcat, the war file will be extracted and deployed automatically.

  1. Example – /opt/tomcat8/webapps/lovejava.war
  2. Deployed URL – http://localhost:8080/lovejava

6.2 To change the default port (8080), just update the connector port to another port number and restart Tomcat.

/opt/tomcat8/conf/server.xml

<Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />

6.3 Make the web app as the default path.

/opt/tomcat8/conf/server.xml

<Host name="localhost"  appBase="webapps"
      unpackWARs="true" autoDeploy="true">

      <!-- update here -->
      <Context path="" docBase="lovejava">
       		<!-- Default set of monitored resources -->
                <WatchedResource>WEB-INF/web.xml</WatchedResource>
      </Context>

</Host>
  1. Before : http://localhost:8080/lovejava
  2. After : http://localhost:8080/

Now, we can access the /lovejava web app via this URL http://localhost:8080/

References

  1. Tomcat 8 download page
  2. Install Tomcat on Ubuntu
  3. Apache Tomcat On Linux – Installation and Configuration On Multiple Platforms

About the Author

author image
mkyong
Founder of Mkyong.com, love Java and open source stuff. Follow him on Twitter, or befriend him on Facebook or Google Plus. If you like my tutorials, consider make a donation to these charities.

Comments

avatar
4 Comment threads
0 Thread replies
0 Followers
 
Most reacted comment
Hottest comment thread
4 Comment authors
Thiago MarquesFrançois ALBERTLUIS CARLOS MARIN CAMPOSJon Inazio Recent comment authors
newest oldest most voted
Thiago Marques
Guest
Thiago Marques

Thanks!

François ALBERT
Guest
François ALBERT

Thanks very useful !

LUIS CARLOS MARIN CAMPOS
Guest
LUIS CARLOS MARIN CAMPOS

muy. bueno. Gracias

Jon Inazio
Guest
Jon Inazio

Excellent, thank you for your hard work. Keep on publishing stuff. Cheers!