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 "%r" %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';"
############安装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 "%r" %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
#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
阅读全文
0 0
- java+tomcat+apr+tomcatnative(+切割日志)
- 定期切割Tomcat日志
- tomcat catalina的日志切割
- tomcat catalina.out日志按日切割
- Linux下 切割tomcat日志 定期删除
- tomcat自动切割日志(Windows)
- 使用cronolog进行tomcat日志切割
- cronolog切割tomcat的catalina.out日志
- linux tomcat日志清理脚本 tomcat日志切割脚本
- Tomcat APR
- TOMCAT APR
- tomcat apr
- tomcat服务一---tomcat部署及日志切割
- 日志切割
- 日志切割
- 切割日志
- 日志切割
- 日志切割
- python之sys模块详解
- VUE自定义过滤器(注册在Vue全局)
- 最新版的微信支付全部流程(2017/7/24) php开发的
- 抽象类
- python 爬虫入门(3) proxy详解 代理详解
- java+tomcat+apr+tomcatnative(+切割日志)
- Gradle问题小记
- 学习了几个新的(多向)OLL手法
- 理解HTTP协议
- Vue 父组件与子组件
- Handler,Looper消息机制原理
- Linux find/grep命令
- 表达式求值
- JNI实现数据传输,App实现三点校准算法