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