Skip to main content

tomcat upgrade

Prerequisites

  • Ubuntu server with sudo, network

Install

Update system

sudo apt update && sudo apt upgrade -y

Install Java

sudo apt install default-jdk -y

Create Tomcat user

sudo useradd -m -U -s /bin/false tomcat

Download Tomcat 9.0.82

cd /tmp
wget https://archive.apache.org/dist/tomcat/tomcat-9/v9.0.82/bin/apache-tomcat-9.0.82.tar.gz

Extract

sudo mkdir /opt/tomcat-9.0.82
sudo tar -xzvf apache-tomcat-9.0.82.tar.gz -C /opt/tomcat-9.0.82 --strip-components=1

Symbolic link

sudo ln -sfn /opt/tomcat-9.0.82 /opt/tomcat

Set permissions

sudo chown -R tomcat:tomcat /opt/tomcat-9.0.82 /opt/tomcat
sudo chmod -R u+x,g+rx,o+rx /opt/tomcat-9.0.82/bin/
sudo chmod +x /opt/tomcat-9.0.82/bin/*.sh

Systemd service (/etc/systemd/system/tomcat.service)

[Unit]
Description=Apache Tomcat
After=network.target

[Service]
Type=forking
User=tomcat
Group=tomcat
Environment="JAVA_HOME=/usr/lib/jvm/default-java"
Environment="CATALINA_PID=/opt/tomcat/temp/tomcat.pid"
Environment="CATALINA_HOME=/opt/tomcat"
Environment="CATALINA_BASE=/opt/tomcat"
Environment="CATALINA_OPTS=-Xms512M -Xmx1024M -server -XX:+UseParallelGC"
Environment="JAVA_OPTS=-Djava.awt.headless=true -Djava.security.egd=file:/dev/./urandom"
ExecStart=/opt/tomcat/bin/startup.sh
ExecStop=/opt/tomcat/bin/shutdown.sh
Restart=on-failure

[Install]
WantedBy=multi-user.target

Start service

sudo systemctl daemon-reload
sudo systemctl start tomcat
sudo systemctl enable tomcat

Allow port

sudo ufw allow 8080

Check version

sudo java -cp /opt/tomcat/lib/catalina.jar org.apache.catalina.util.ServerInfo

Backup

sudo mkdir -p /backups/tomcat
sudo tar -czvf /backups/tomcat/tomcat-9.0.82-backup-$(date +%Y%m%d).tar.gz /opt/tomcat-9.0.82
sudo cp -r /opt/tomcat/conf /backups/tomcat/tomcat-9.0.82-conf-backup-$(date +%Y%m%d)
sudo cp -r /opt/tomcat/webapps /backups/tomcat/tomcat-9.0.82-webapps-backup-$(date +%Y%m%d)
sudo cp /etc/systemd/system/tomcat.service /backups/tomcat/tomcat-9.0.82-tomcat.service-backup-$(date +%Y%m%d)

Upgrade

Download 9.0.85

cd /tmp
wget https://archive.apache.org/dist/tomcat/tomcat-9/v9.0.85/bin/apache-tomcat-9.0.85.tar.gz

Extract

sudo mkdir /opt/tomcat-9.0.85
sudo tar -xzvf apache-tomcat-9.0.85.tar.gz -C /opt/tomcat-9.0.85 --strip-components=1

Set permissions

sudo chown -R tomcat:tomcat /opt/tomcat-9.0.85
sudo chmod -R u+x,g+rx,o+rx /opt/tomcat-9.0.85/bin/
sudo chmod +x /opt/tomcat-9.0.85/bin/*.sh

Copy config, webapps from the current installation

sudo chown -R tomcat:tomcat /opt/tomcat-9.0.85
sudo chmod -R u+x,g+rx,o+rx /opt/tomcat-9.0.85/bin/
sudo chmod +x /opt/tomcat-9.0.85/bin/*.sh

Copy configs/webapps

sudo cp -r /opt/tomcat/conf/* /opt/tomcat-9.0.85/conf/
sudo cp -r /opt/tomcat/webapps/* /opt/tomcat-9.0.85/webapps/

Stop service

sudo systemctl stop tomcat

Update link

sudo ln -sfn /opt/tomcat-9.0.85 /opt/tomcat

Start service

sudo systemctl start tomcat

Check version

sudo java -cp /opt/tomcat/lib/catalina.jar org.apache.catalina.util.ServerInfo

Rollback

Stop service

sudo systemctl stop tomcat

Revert link

sudo ln -sfn /opt/tomcat-9.0.82 /opt/tomcat

Start service

sudo systemctl start tomcat

Common Errors and Fixes

Permission denied on bin/

sudo chmod -R u+x,g+rx,o+rx /opt/tomcat/bin/
ls -ld /opt/tomcat/bin/ # Verify drwxr-xr-x