最近实验tomcat集群,顺便整理了一下之前的tomcat的安装脚本,适合centos安装使用。
集成了apr启动模式。脚本跑完,apr应该就可以生效了。
再加上一个cronolog日志分割的小脚本单独放在最后,没有合并在一起。
#!/bin/bash
#Auto install Apache Tomcat8.5.39
#需要的包:jdk-8u201-linux-x64.tar.gz,apache-tomcat-8.5.39.tar.gz,apr-1.7.0.tar.gz,apr-util-1.6.1.tar.gz
echo "-----------------install Tomcat -----------------"
echo "将脚本,jdk-8u201-linux-x64.tar.gz,apache-tomcat-8.5.39.tar.gz,apr-1.7.0.tar.gz,apr-util-1.6.1.tar.gz放在同一目录下,Enter继续"
read
read -p "是否安装jdk环境(输入y/Y安装,其他不安装):" inputMsg
if [ "$inputMsg" == "Y" ] || [ "$inputMsg" == 'y' ]
then
echo "-----------------unzip JDK tar file-----------------"
tar zxf ./jdk-8u201-linux-x64.tar.gz
if [ $? -eq 0 ];then
echo "Unzip JDK file success! "
else
exit 18
fi
echo "Mv it to /usr/local/java"
mv ./jdk1.8.0_201 /usr/local/java
echo 'JAVA_HOME=/usr/local/java'>>/etc/profile
echo 'JRE_HOME=/usr/local/java/jre'>>/etc/profile
echo 'PATH=$PATH:$JAVA_HOME/bin'>>/etc/profile
echo 'CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib'>>/etc/profile
echo 'export JAVA_HOME JRE_HOME CLASSPATH PATH'>>/etc/profile
source /etc/profile
fi
if [ $? -eq 0 ]
then
echo "Success! Now we will unzip Apache Tomcat file,Press any key to Go Next"
read
fi
tar zxf ./apache-tomcat-8.5.39.tar.gz
if [ $? -eq 0 ]
then
echo "Unzip Apache Tomcat file Success! Now we will MV it to /usr/local/tomcat."
fi
mv ./apache-tomcat-8.5.39 /usr/local/tomcat
tar zxf ./apr-1.7.0.tar.gz
if [ $? -eq 0 ]
then
echo "Success Unzip Apr! Let's Install it."
fi
cd apr-1.7.0
yum install -y gcc gcc-c++
./configure --prefix=/usr/local/apr
make
make install
if [ $? -eq 0 ]
then
echo "Success install Apr! Let's Install apr-util"
read
fi
cd ..
if [ ! -f "apr-util-1.6.1.tar.gz" ]
then
echo "apr-util-1.6.1.tar.gz 不存在,安装退出"
exit 16
fi
yum install -y expat-devel
tar zxf ./apr-util-1.6.1.tar.gz
cd apr-util-1.6.1
./configure --with-apr=/usr/local/apr
make
make install
if [ $? -eq 0 ]
then
echo "Success install Apr-utils! Let's install tomcat-native"
fi
yum install openssl-devel -y
cd /usr/local/tomcat/bin/
if [ ! -f "tomcat-native.tar.gz" ]
then
echo "tomcat-native.tar.gz 不存在,安装退出"
fi
tar zxf tomcat-native.tar.gz
cd ./tomcat-native-1.2.21-src/native
if [ $? -ne 0 ];then
echo "没有进入到tomcat-native-1.2.21-src/native"
exit 18
fi
./configure --with-java-home=/usr/local/java --with-apr=/usr/local/apr/ --with-ssl=yes
if [ $? -eq 0 ]
then
echo "tomcat-native --with-ssl Success!"
else
./configure --with-java-home=/usr/local/java --with-apr=/usr/local/apr
fi
make
make install
if [ $? -eq 0 ]
then
echo "Success! Set LB now! Press any key to Go Next"
read
fi
echo "export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/apr/lib">>/etc/profile
source /etc/profile
echo "在server.xml中修改apr配置"
sed -i "s#Connector port=\"8080\" protocol=\"HTTP/1.1\"#Connector port=\"8080\" protocol=\"org.apache.coyote.http11.Http11AprProtocol\"#g" /usr/local/tomcat/conf/server.xml
echo "Now configure tomcat configure files.Like catalina.sh servert.conf"
read
read -p "是否修改网络内核参数(输入y/Y修改,其他不修改):" inputMsg
if [ "$inputMsg" == "Y" ] || [ "$inputMsg" == 'y' ]
then
echo "net.ipv4.tcp_syncookies = 1" >> /etc/sysctl.conf
echo "net.ipv4.tcp_fin_timeout = 30" >> /etc/sysctl.conf
echo "net.ipv4.tcp_keepalive_time = 1200" >> /etc/sysctl.conf
echo "net.ipv4.tcp_tw_reuse = 1" >> /etc/sysctl.conf
echo "net.ipv4.tcp_tw_recycle = 1" >> /etc/sysctl.conf
echo "net.ipv4.tcp_max_syn_backlog = 8192" >> /etc/sysctl.conf
echo "net.ipv4.ip_local_port_range = 10000 65000" >> /etc/sysctl.conf
sysctl -p
fi
read -p "是否把tomcat加入开机启动(输入y/Y加入,其他不加入):" inputMsg
if [ "$inputMsg" == "Y" ] || [ "$inputMsg" == 'y' ]
then
echo "把tomcat加入开机启动."
echo "export JAVA_HOME=/usr/local/java">>/etc/rc.d/rc.local
echo "export PATH=\$JAVA_HOME/bin:\$PATH">>/etc/rc.d/rc.local
echo "export CLASSPATH=\$JAVA_HOME/jre/lib/ext:\$JAVA_HOME/lib/tools.jar">>/etc/rc.d/rc.local
echo "export LD_LIBRARY_PATH=/usr/local/apr/lib">>/etc/rc.d/rc.local
echo "/usr/local/tomcat/bin/startup.sh">>/etc/rc.d/rc.local
chmod +x /etc/rc.d/rc.local
fi
read -p "是否在/data/tomcat/下建立链接(输入y/Y加入,其他不加入):" inputMsg
if [ "$inputMsg" == "Y" ] || [ "$inputMsg" == 'y' ]
then
echo "在/data/tomcat/下建立链接"
mkdir -p /data/tomcat
mv /usr/local/tomcat/logs /data/tomcat/
mv /usr/local/tomcat/webapps /data/tomcat/
ln -s /data/tomcat/logs /usr/local/tomcat/
ln -s /data/tomcat/webapps /usr/local/tomcat/
fi
echo "脚本安装结束"
echo "使用启动命令启动: /usr/local/tomcat/bin/startup.sh"
以下是cronolog日志分割的东东
#!/bin/bash
echo "脚本跟cronolog-1.6.2.tar.gz放在一起"
read
tar zxf ./cronolog-1.6.2.tar.gz
cd cronolog-1.6.2
./configure
make
make install
echo "cronolog已经安装在:`which cronolog`"
read -p "是否需要配置catalina.sh分割日志(输入y/Y配置,其他不配置):" inputMsg
if [ "$inputMsg" == 'y' ] || [ "$inputMsg" == 'Y' ]
then
cd /usr/local/tomcat/bin
# 设置备份日期
TODAY=`date +%Y%m%d`
# 备份catalina.sh
cp catalina.sh catalina.sh.bak$TODAY
# 将不以"#"开头的符合正则的行替换
# sed -i '/^#/!s/catalina.out/catalina.%Y-%m-%d.log/g' catalina.sh
# 此处的"&"表示引用正则匹配的部分
sed -i 's/touch "$CATALINA_OUT"/#&/g' catalina.sh
# 使用"\"转义"\"
sed -i 's/start \\/start 2>\&1 \\/g' catalina.sh
# 使用"\"转义"&";使用"@"代替原本的"/"
sed -i 's@>> "$CATALINA_OUT" 2>&1 "&"@| /usr/local/sbin/cronolog "$CATALINA_BASE"/logs/catalina.%Y-%m-%d.out >> /dev/null \&@g' catalina.sh
echo "配置分割完成"
else
echo "不做配置"
fi