java+tomcat+apr+tomcatnative(+切割日志)

来源:互联网 发布:淘宝客技巧 编辑:程序博客网 时间:2024/06/11 10:45
#!/bin/bash
############安装APR################
 
cd /data/soft/
tar zxf apr-1.5.2.tar.gz
cd apr-1.5.2
./configure --prefix=/usr/local/apr/
make
make install


 
cd /data/soft/
tar zxf apr-iconv-1.2.1.tar.gz
cd apr-iconv-1.2.1
./configure --prefix=/usr/local/apr-iconv/ --with-apr=/usr/local/apr/
make
make install


 
cd /data/soft/
tar zxf apr-util-1.5.2.tar.gz
cd apr-util-1.5.2
./configure --prefix=/usr/local/apr-util/ --with-apr=/usr/local/apr/ --with-apr-iconv=/usr/local/apr-iconv/bin/apriconv
make
make install


##################安装JDK+TOMCAT#####################
cd /data/soft/
tar zxf jdk-7u71-linux-x64.tar.gz
mkdir -p /data/test_apps/jdk/
/bin/cp -ap jdk1.7.0_71/* /data/test_apps/jdk/
cat > /etc/profile.d/java.sh << 'EOF'
export JAVA_HOME=/data/test_apps/jdk
export JRE_HOME=/data/test_apps/jdk/jre
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib
export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
EOF
source /etc/profile.d/java.sh
java -version


mkdir -p /data/test_apps/
mkdir -p /data/test_logs/


cd /data/soft/
tar zxf apache-tomcat-8.0.32.tar.gz
/bin/cp -ap apache-tomcat-8.0.32 /data/test_apps/tomcat
cd /data/test_apps/tomcat/
rm -rf logs
ln -s /data/test_logs logs


cd /data/soft
tar zxf tomcat-native-1.2.7-src.tar.gz
cd /data/soft/tomcat-native-1.2.7-src/native
./configure \
--prefix=/usr/local/tomcatnative \
--with-apr=/usr/local/apr/bin/apr-1-config \
--with-java-home=/data/test_apps/jdk \
--with-ssl=no
make
make install


#这个地方启用ssl的话会报OpenSSL不兼容,应该是要升级版本
#总之不建议启用tomcat的APR模式
cat > /etc/profile.d/tomcatnative.sh << EOF
export LD_LIBRARY_PATH=/usr/local/tomcatnative/lib/:/usr/local/apr/lib/
EOF
. /etc/profile.d/tomcatnative.sh
/data/test_apps/tomcat/bin/catalina.sh configtest


#自定义tomcat启动关闭脚本
cat > /data/test_apps/tomcat/start << 'EOF' 
#!/bin/bash 
cd `dirname $0`;
current_path=$PWD
CATALINA_HOME=$current_path
CATALINA_BASE=$current_path
CATALINA_PID=$current_path/pid
JAVA_OPTS="-server -Xms8192m -Xmx8192m -Xmn3072m -XX:SurvivorRatio=6 -XX:PermSize=256m -XX:MaxPermSize=512m -XX:ParallelGCThreads=8 -XX:+UseConcMarkSweepGC"
JAVA_OPTS="-Dcom.sun.management.jmxremote \
-Dcom.sun.management.jmxremote.port=8014 \
-Dcom.sun.management.jmxremote.ssl=false \
-Dcom.sun.management.jmxremote.authenticate=false $JAVA_OPTS"
export JAVA_HOME=/data/test_apps/jdk
export LD_LIBRARY_PATH=/usr/local/tomcatnative/lib/:/usr/local/apr/lib/
export CATALINA_HOME CATALINA_BASE CATALINA_PID JAVA_OPTS
$CATALINA_HOME/bin/catalina.sh start
EOF
cat > /data/test_apps/tomcat/start_jprofiler << 'EOF'
#!/bin/bash
cd `dirname $0`;
current_path=$PWD
CATALINA_HOME=$current_path
CATALINA_BASE=$current_path
CATALINA_PID=$current_path/pid
JAVA_OPTS="-server -Xms8192m -Xmx8192m -Xmn3072m -XX:SurvivorRatio=6 -XX:PermSize=256m -XX:MaxPermSize=512m -XX:ParallelGCThreads=8 -XX:+UseConcMarkSweepGC"
CATALINA_OPTS="-agentpath:/usr/local/jprofiler/bin/linux-x64/libjprofilerti.so=port=8849,nowait $CATALINA_OPTS"
export CATALINA_OPTS
export JAVA_HOME=/data/test_apps/jdk
export LD_LIBRARY_PATH=/usr/local/tomcatnative/lib/:/usr/local/apr/lib/
export CATALINA_HOME CATALINA_BASE CATALINA_PID JAVA_OPTS
$CATALINA_HOME/bin/catalina.sh start
EOF
#启用jvm监控时,注意要在/etc/hosts里面增加127.0.0.1 hostname的解析记录,不然可能会报错
cat > /data/test_apps/tomcat/stop << 'EOF' 
#! /bin/bash
cd `dirname $0`
current_path=$PWD
CATALINA_HOME=$current_path
CATALINA_BASE=$current_path
CATALINA_PID=$current_path/pid
export JAVA_HOME=/data/test_apps/jdk
export CATALINA_HOME CATALINA_BASE CATALINA_PID
$CATALINA_HOME/bin/catalina.sh stop -force
EOF


echo "/bin/bash /data/test_apps/tomcat/start" >> /etc/rc.local


sh /data/test_apps/tomcat/start
sh /data/test_apps/tomcat/stop
ps:关于jvm启动配置,可以先知配置堆最大最小内存和GC,别的以后慢慢再配置
-server 
-Xms8192m    #设置堆最大最小内存相同,避免抖动
-Xmx8192m    #设置堆最大最小内存相同,避免抖动
-Xmn1536m    ##设置堆年轻代大小,官方推荐配置为整个堆的3/8
-XX:SurvivorRatio=6  #建议值
-XX:PermSize=256m #设置非堆内存最小值
-XX:MaxPermSize=512m #设置非堆内存最大值
-XX:ParallelGCThreads=8   #设置成和CPU核数相同,年老代垃圾回收线程
-XX:+UseConcMarkSweepGC"  #
================================================================
cat > server.xml << 'EOF'
<?xml version='1.0' encoding='utf-8'?>
<Server port="8005" shutdown="SHUTDOWN">
  <Listener className="org.apache.catalina.startup.VersionLoggerListener" />
  <Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="off" />
  <Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />
  <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />
  <Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" />
 
  <GlobalNamingResources>
    <Resource name="UserDatabase" auth="Container"
              type="org.apache.catalina.UserDatabase"
              description="User database that can be updated and saved"
              factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
              pathname="conf/tomcat-users.xml" />
  </GlobalNamingResources>
 
  <Service name="Catalina">
    <Executor name="tomcatThreadPool" namePrefix="catalina-exec-"
        maxThreads="1000" minSpareThreads="200"/>
 
    <Connector executor="tomcatThreadPool"
               port="8080"
               protocol="org.apache.coyote.http11.Http11AprProtocol"
               acceptCount="200"
               connectionTimeout="60000"
               keepAliveTimeout="30000"
               maxKeepAliveRequests="100"
               maxConnections="3000"
               redirectPort="8443"
               maxHttpHeaderSize="8192"
               URIEncoding="UTF-8"
               enableLookups="false"
               disableUploadTimeout="true"
    />
 
    <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
    <Engine name="Catalina" defaultHost="localhost">
 
      <Realm className="org.apache.catalina.realm.LockOutRealm">
        <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
               resourceName="UserDatabase"/>
      </Realm>
 
      <Host name="localhost"  appBase="webapps"
            unpackWARs="true" autoDeploy="true">
        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
               prefix="localhost_access_log" suffix=".txt"
               pattern="%h %l %u %t &quot;%r&quot; %s %b" />
 
      </Host>
    </Engine>
  </Service>
</Server>
EOF
##tomcat的最大连接数参数是maxConnections,这个值表示最多可以有多少个socket连接到tomcat上。
##BIO模式下默认最大连接数是它的最大线程数(缺省是200),NIO模式下默认是10000,APR模式则是8192(windows上则是低于或等于maxConnections的1024的倍数)。
##如果设置为-1则表示不限制。
##普通账号启动tomcat的脚本
=====================================================================
cd `dirname $0`;
current_path=$PWD
 
CATALINA_HOME=$current_path
CATALINA_BASE=$current_path
CATALINA_PID=$current_path/pid
JAVA_OPTS="-server -Xms8192m -Xmx8192m -XX:+UseConcMarkSweepGC"
JAVA_OPTS="-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=8024 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false $JAVA_OPTS"
 
# For SELinux we need to use 'runuser' not 'su'
if [ -x "/sbin/runuser" ]; then
    SU="/sbin/runuser -s /bin/sh"
else
    SU="/bin/su -s /bin/sh"
fi
 
 
# Get the tomcat config (use this for environment specific settings)
TOMCAT_CFG="/etc/tomcat/tomcat.conf"
if [ -r "$TOMCAT_CFG" ]; then
    . $TOMCAT_CFG
fi
 
# Get instance specific config file
if [ -r "/etc/sysconfig/${NAME}" ]; then
    . /etc/sysconfig/${NAME}
fi
 
 
TOMCAT_SCRIPT="$CATALINA_HOME/bin/catalina.sh"
 
TOMCAT_USER="${TOMCAT_USER:-tomcat}"
 
#chown ${TOMCAT_USER}:${TOMCAT_USER} /var/log/${NAME}
 
options="export CATALINA_HOME CATALINA_BASE CATALINA_PID JAVA_OPTS;"
#options=""
#options="$options $(awk '!/^#/ && !/^$/ { ORS=" "; print "export ", $0, ";" }' $TOMCAT_CFG)"
#options="$options $(awk '!/^#/ && !/^$/ { ORS=" ";print "export ", $0, ";" }' /etc/sysconfig/${NAME})"
TOMCAT_SCRIPT="$options ${TOMCAT_SCRIPT}"
 
 
$SU - $TOMCAT_USER -c "${TOMCAT_SCRIPT} start"
 
 
options="export \
CATALINA_BASE="${current_path}" \
CATALINA_HOME="${current_path}" \
CATALINA_PID="${current_path}/pid" \
JAVA_OPTS='-server -Xms8192m -Xmx8192m -XX:+UseConcMarkSweepGC';"

########切割tomcat日志########
crontab -l
#catalina.out logs cut
*/1 * * * * /bin/bash /scripts/logrotate.sh
 
cat /scripts/logrotate.sh
#!/bin/bash 
log="/data/test_apps/test*/tomcat/logs/catalina.out"
size=`ls -lrt $log | cut -d " " -f 5`
if [ $size -ge 30000000 ]; then
egrep "at |Exception" $log >> /data/test_apps/test*/tomcat/logs/Exception.log
/usr/sbin/logrotate -f /scripts/tomcat;
fi
 
cat /scripts/tomcat
/data/test_apps/test*/tomcat/logs/catalina.out {
rotate 300
missingok
notifempty
copytruncate
size = 30M
原创粉丝点击