Овде ћемо инсталирати (на дан писања) последњу верзију Apache Tomcat-а на ЦентОС 7 Линуксу у минимал варијанти – а то је тренутно верзија 9.0.10. Пошто радимо на чистој машини, немамо Јаву тако да ћемо инсталирати и њу, исто ручно. Tomcat не може да се стартује ако не види варијаблу JAVA_HOME која треба да пуца на праву локацију.

# Скините Java jdk са званичног сајта (линк овде)
# У овом случају ради се о верѕији 8u181, и после скидања покрените
tar zxvf jdk-8u181-linux-x64.tar.gz
rm -f jdk-8u181-linux-x64.tar.gz
mv jdk1.8.0_181/ /opt/
alternatives --install /usr/bin/java java /opt/jdk1.8.0_181/bin/java 2

# Изаберите редни број тазе инсталиране Јаву (у овом случају редни број1) па притисните ЕНТЕР
# и касније само проверите да ли java -version даје исправну верзију (скриншот овде)
alternatives --config java

# Додаћемо JAVA_HOME и JRE_HOME као глобалне варијабле додавањем у /etc/profile
cp /etc/profile ~/etc-profile-backup-$(date +%Y%m%d%H%M)
echo "export JAVA_HOME=/opt/jdk1.8.0_181" >> /etc/profile
echo "export JRE_HOME=/opt/jdk1.8.0_181/jre" >> /etc/profile

# Skinite Tomcat као и његов sha512 како би упоређивањем проверили да ли је скинут фајл добар
curl -O http://www-us.apache.org/dist/tomcat/tomcat-9/v9.0.10/bin/apache-tomcat-9.0.10.tar.gz
curl -O https://www.apache.org/dist/tomcat/tomcat-9/v9.0.10/bin/apache-tomcat-9.0.10.tar.gz.sha512

# Проверавамо SHA512 скинутог фајла. Ако добијете било какав резултати из доње команде нешто сте
# зајебали приликом скидања фајла па пробајте поново.
diff  <(echo "$(sha512sum apache-tomcat-9.0.10.tar.gz | awk '{print $1}')" ) <(echo "$(cat apache-tomcat-9.0.10.tar.gz.sha512 | awk '{print $1}')") 

# Распакујте Tomcat и пребаците га у /opt
tar zxvf apache-tomcat-9.0.10.tar.gz 
mv /opt/tomcat /opt/tomcat-$(date +%Y%m%d%H%M) 2>/dev/null # За сваки случај
mv apache-tomcat-9.0.10 /opt/tomcat

# Додајте CATALINA_HOME environment варијаблу ако не постоји (исто ћемо глобалну)
[ -z ${CATALINA_HOME} ] && echo "export CATALINA_HOME='/opt/tomcat/'" >> /etc/profile
. /etc/profile || echo "CATALINA_HOME already exists. Please check"

# Правимо корисника и додељујемо му власништво над /opt/tomcat
useradd -r tomcat --shell /bin/false
chown -R tomcat:tomcat /opt/tomcat/

# Правимо systemd фајл а самом Tomcat-у доделити гига RAM-a (погле CATALINA_OPTS)
[ ! -f /etc/systemd/system/tomcat.service ] &&
echo "[Unit]
Description=Apache Tomcat 9
After=syslog.target network.target

[Service]
User=tomcat
Group=tomcat
Type=forking
Environment=CATALINA_PID=/opt/tomcat/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" >> /etc/systemd/system/tomcat.service || echo "File is missing"

# Радимо ново учитавање дејмона
systemctl daemon-reload

# Отварамо портове за Tomcat на firewalld-у
firewall-cmd --add-port=8080/tcp
firewall-cmd --add-port=8080/tcp --permanent

# Стартујемо, енејблујемо и проверавамо статус Tomcat-a
systemctl start tomcat
systemctl enable tomcat
systemctl status tomcat

Сад можете отићи на веб адресу свог сервера и дифолтни порт (може да се промени касније) 8080, тј у овом случају  http://SERVER-IP-ADDRESS:8080 да проверимо види ли се дифолт почетна страница нашег Tomcat-a и ако се види – посао је готов.

# Ако желите да Tomcat буде на http порту 80 уместо на 8080 најлакше је то одрадити
# путем "port forward" на firewalld нивоу путем следећих команди
firewall-cmd --add-forward-port=port=80:proto=tcp:toport=8080 --permanent
firewall-cmd --reload
# Ако желите да испробате како би изгледала нека тестна веб апликација, пример можете
# скинути са Apache Tomcat сајта и поставити. Кад окинете команде идити преко бразуера
# на http://tomcaturl/sample да видите тај пример (погле скриншот испод)
cd /opt/tomcat/webapps/
curl -O https://tomcat.apache.org/tomcat-9.0-doc/appdev/sample/sample.war