Skip to content

Instantly share code, notes, and snippets.

@Zohorul
Created October 10, 2019 01:51
Show Gist options
  • Save Zohorul/76182b0f3250b611702738bc1d528fba to your computer and use it in GitHub Desktop.
Save Zohorul/76182b0f3250b611702738bc1d528fba to your computer and use it in GitHub Desktop.
Install and configure Tomcat8 on an Amazon Linux AMI using Java OpenJDK 1.8 that starts on reboot.
#!/bin/bash
mkdir /opt/tomcat
yum update -y
yum install java-1.8.0-openjdk-devel httpd24 git -y
service httpd start
chkconfig httpd on
yum remove java-1.7.0-openjdk -y
# calling the version may ensure that java recognizes 1.8 as the new defaut
java -version
echo "JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk/jre" | \
tee --append /etc/environment
echo "CATALINA_HOME=/opt/tomcat" | \
tee --append /etc/environment
source /etc/environment
export JAVA_HOME
export CATALINA_HOME
groupadd tomcat
useradd -M -s /bin/nologin -g tomcat -d /opt/tomcat tomcat
wget -q http://www-eu.apache.org/dist/tomcat/tomcat-8/v8.5.14/bin/apache-tomcat-8.5.14.tar.gz
tar xf apache-tomcat-8.*.tar.gz -C /opt/tomcat --strip-components=1
rm -f apache-tomcat-8.5.14.tar.gz
chgrp -R tomcat /opt/tomcat/conf
chmod g+rwx /opt/tomcat/conf
chmod g+r /opt/tomcat/conf/*
chown -R tomcat /opt/tomcat/work/ /opt/tomcat/temp/ /opt/tomcat/logs/
# sed -i -e 's/8080/<PORT_YOU_WANT_TO_RUN_ON>/g' /opt/tomcat/conf/server.xml
# remove this step to keep default of 8080
cat << EOM > /etc/init.d/tomcat
#!/bin/bash
# description: Tomcat Start Stop Restart
# processname: tomcat
# chkconfig: 234 20 80
case \$1 in
start)
sh /opt/tomcat/bin/catalina.sh start
;;
stop)
sh /opt/tomcat/bin/catalina.sh stop
;;
restart)
sh /opt/tomcat/bin/catalina.sh stop
sh /opt/tomcat/bin/catalina.sh start
;;
esac
exit 0
EOM
chmod +x /etc/init.d/tomcat
chgrp -R tomcat /opt/tomcat
chmod g+rwx /opt/tomcat/*
chown -R tomcat /opt/tomcat
chkconfig tomcat on
# exec /opt/tomcat/bin/catalina.sh start
service tomcat start
# Add a Host Manager for Tomcat8:
ex /opt/tomcat/conf/tomcat-users.xml << EOM
normal G
i
<role rolename="manager-gui"/>
<role rolename="manager-script"/>
<role rolename="manager-jmx"/>
<role rolename="manager-status"/>
<role rolename="admin-gui"/>
<role rolename="admin-script"/>
<user username="<CHANGE_ME>" password="<CHANGE_ME>" roles="manager-gui, manager-script, manager-jmx, manager-status, admin-gui, admin-script"/>
.
wq
EOM
# Allow the IP of the instance to be accessed via the Host Manager app
ex /opt/tomcat/webapps/manager/META-INF/context.xml << EOM
normal G2k
i
<!--
.
normal G
i
-->
.
wq
EOM
#privateIP=$(curl http://169.254.169.254/latest/meta-data/local-ipv4)
# Install Maven 3.5.0
mkdir /opt/maven
cd /home/ec2-user
wget http://www-eu.apache.org/dist/maven/maven-3/3.5.0/binaries/apache-maven-3.5.0-bin.tar.gz
tar xf apache-maven*.tar.gz -C /opt/maven --strip-components=1
rm /home/ec2-user/apachge-maven*.tar.gz
export PATH=$PATH:/opt/maven/bin
# clone Spring-petclinic and install it
git clone https://github.com/shanemacbride/spring-petclinic.git
cd spring-petclinic
/opt/maven/bin/mvn clean install
cp /home/ec2-user/spring-petclinic/target/petclinic.war /opt/tomcat/webapps/
service tomcat restart
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment