DEV Community

Wycliffe A. Onyango
Wycliffe A. Onyango

Posted on

100 Days of DevOps: Day 11

A Comprehensive Guide to Deploying a Web Application on Tomcat

This article outlines the complete process of deploying a web application, specifically a ROOT.war file, onto a Tomcat server. The instructions account for common hurdles, such as file transfer and permission issues, and provide all the necessary commands and explanations.

1. Transferring the ROOT.war File

The deployment begins with transferring the ROOT.war file from the jump host to the application server. This is done using the scp command. We'll first copy the file to a temporary location on the application server to avoid initial permission issues.

From the jump host, execute this command:

scp /tmp/ROOT.war <username>@<application_server_ip>:/tmp/
Enter fullscreen mode Exit fullscreen mode
  • /tmp/ROOT.war: The source file on the jump host.
  • <username>@<application_server_ip>: The destination user and server address.
  • :/tmp/: The temporary directory on the application server where the file will be placed.

2. Resolving Permissions and Moving the File

Once the file is on the application server, you must move it to Tomcat's webapps directory. The webapps directory is typically owned by the tomcat user for security, which means a regular user like steve won't have permission to write to it. To solve this, you'll temporarily change the ownership of the directory.

First, log in to the application server:

ssh <username>@<application_server_ip>
Enter fullscreen mode Exit fullscreen mode

Next, change the ownership of the webapps directory. The exact path may vary, but for a yum installation, it's usually /var/lib/tomcat/webapps/.

sudo chown <username>:<username> /var/lib/tomcat/webapps/
Enter fullscreen mode Exit fullscreen mode

Now, move the ROOT.war file from the temporary directory to the webapps directory:

sudo mv /tmp/ROOT.war /var/lib/tomcat/webapps/
Enter fullscreen mode Exit fullscreen mode

Finally, for security, it is a best practice to revert the ownership of the webapps directory back to the tomcat user.

sudo chown tomcat:tomcat /var/lib/tomcat/webapps/
Enter fullscreen mode Exit fullscreen mode

3. Configuring the Tomcat Server

If you installed Tomcat via a package manager, its port might be set to the default 8080. To run the application on port 3003, you need to edit the server.xml configuration file.

  • Locate the server.xml file: This is typically at /etc/tomcat/server.xml or /usr/share/tomcat/conf/server.xml.
  • Edit the file using a text editor like vi:
sudo vi /etc/tomcat/server.xml
Enter fullscreen mode Exit fullscreen mode
  • Find the <Connector> tag and change the port from 8080 to 3003:
<Connector port="3003" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
Enter fullscreen mode Exit fullscreen mode
  • Save and exit the file.

4. Starting the Tomcat Service and Verification

After moving the ROOT.war file and configuring the port, you must restart the Tomcat service for the changes to take effect. Tomcat will automatically detect and deploy the ROOT.war file upon startup.

Restart the Tomcat service:

sudo systemctl restart tomcat
Enter fullscreen mode Exit fullscreen mode

Verify the deployment using curl from either the jump host or a local terminal. A successful deployment will return the HTML content of your web application.

curl http://stapp02:3003
Enter fullscreen mode Exit fullscreen mode

This command should display the content of your web application, confirming that the deployment was successful and the application is running correctly on the specified port.

Top comments (0)