Monitor and troubleshoot Java applications and services with Datadog: 

>> Try it free!

1. Overview

By default, Apache Tomcat runs on port 8080. In some cases, this port may already be taken by another process, or requirements may state that we have to use a different port.

In this quick article, we’re going to show how to change Apache Tomcat server’s HTTP port. We’ll use port 80 in our examples, although the process is the same for any port.

2. Apache Tomcat Configuration

The first step in this process is to modify the Apache Tomcat configuration.

First, we locate our server’s <TOMCAT_HOME>/conf/server.xml file. Then we find the line that configures the HTTP connector port:

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

And we change the port to 80:

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

3. Linux and Unix System Changes

On Linux and Unix systems, port numbers below 1024 are privileged ports and are reserved for programs running as root. If we’re running on port 1024 or higher, then we can skip the remainder of this section and move directly to starting/restarting our server as explained in section 4.

If we have root or sudo access, we can simply start the Tomcat process as root using the command:

sudo startup.sh

But if we do not have root or sudo access, we’ll have to install and configure authbind, as described below.

Note: when using a non-privileged port (1024 or higher), we can skip the remainder of this section and move directly to starting/restarting our server.

3.1. Install authbind Package

For Linux-based systems: download and install the authbind package:

sudo apt-get install authbind

For MacOS systems: first, download authbind for MacOS from here and expand the package. Then go into the expanded directory to build and install:

$ cd MacOSX-authbind
$ make
$ sudo make install

3.2. Enable authbind on Apache Tomcat

Open <TOMCAT_HOME>/conf/server.xml file uncomment following line:

AUTHBIND=yes

3.3. Enable Read and Execute for Port

Now we’ll need to execute a few commands to enable read and execute permissions for the port.

Here’s an example using Tomcat version 8.x:

sudo touch <AUTHBIND_HOME>/byport/80
sudo chmod 500 <AUTHBIND_HOME>/byport/80
sudo chown tomcat8 <AUTHBIND_HOME>/byport/80

Note: if using Tomcat version 6 or 7, then we would use tomcat6 or tomcat7, respectively, in the last command instead of tomcat8.

3.4. Using Older Versions of authbind

If using an older authbind (version lower than 2.0.0) that does not support IPv6, we’ll need to make IPv4 the default.

If we already have a <TOMCAT_HOME>/bin/setenv.sh file, then replace:

exec “$PRGDIR”/”$EXECUTABLE” start “[email protected]

with this line:

exec authbind --deep "$PRGDIR"/"$EXECUTABLE" start "[email protected]"

and then add the following line:

export CATALINA_OPTS="$CATALINA_OPTS -Djava.net.preferIPv4Stack=true"

If we don’t already have <TOMCAT_HOME>/bin/setenv.sh file, then create one using:

exec authbind --deep "$PRGDIR"/"$EXECUTABLE" start "[email protected]"
export CATALINA_OPTS="$CATALINA_OPTS -Djava.net.preferIPv4Stack=true"

4. Restart Server

Now as we have made all necessary changes to our configuration, we can start or restart the Tomcat server and access it on port 80.

5. Conclusion

In this article, we showed how to change Apache Tomcat’s port from the default 8080 to port 80. It’s worth noting that the process is the same for Tomcat versions 6.x, 7.x, and 8.x.

Monitor and troubleshoot Java applications and services with Datadog: 

>> Try it free!

  Subscribe  
newest oldest most voted
Notify of
Maksim
Guest

I think Nginx or Apache is better solution to running Tomcat to port 80.