您的位置:首页 > 运维架构 > Tomcat

linux下简洁优化部署tomcat应用

2016-08-17 17:29 531 查看
本文来自我的githubpages博客http://galengao.github.io/即www.gaohuirong.cn

摘要:

本文是自己根据公司架构部署tomcat方法整理出来的文本

修改系统内核

修改linux的一些系统参数,以优化系统性能

修改LIMITS.CONF

$vi/etc/security/limits.conf
#增加
*softnofile65536
*hardnofile65536




修改SYSCTL.CONF

#备份
$mv/etc/sysctl.conf/etc/sysctl.conf.bak

$vi/etc/sysctl.conf
#插入
net.ipv4.ip_forward=0
net.ipv4.conf.default.rp_filter=1
net.ipv4.conf.default.accept_source_route=0
kernel.sysrq=0
kernel.core_uses_pid=1
net.ipv4.tcp_syncookies=1
kernel.msgmnb=65536
kernel.msgmax=65536
kernel.shmmax=68719476736
kernel.shmall=4294967296
net.ipv4.tcp_max_tw_buckets=6000
net.ipv4.tcp_sack=1
net.ipv4.tcp_window_scaling=1
net.ipv4.tcp_rmem=4096873804194304
net.ipv4.tcp_wmem=4096163844194304
net.core.wmem_default=8388608
net.core.rmem_default=8388608
net.core.rmem_max=16777216
net.core.wmem_max=16777216
net.core.netdev_max_backlog=262144
net.core.somaxconn=262144
net.ipv4.tcp_max_orphans=3276800
net.ipv4.tcp_max_syn_backlog=262144
net.ipv4.tcp_timestamps=0
net.ipv4.tcp_synack_retries=1
net.ipv4.tcp_syn_retries=1
net.ipv4.tcp_tw_recycle=1
net.ipv4.tcp_tw_reuse=1
net.ipv4.tcp_mem=94500000915000000927000000
net.ipv4.tcp_fin_timeout=1
net.ipv4.tcp_keepalive_time=30
net.ipv4.ip_local_port_range=102465000



安装APR

下载apr-1.5.2.tar.gz和apr-util-1.5.4.tar.gz
安装apr,方便tomcat开启aoi
apr下载地址

$tar-zxvfapr-1.5.2.tar.gz
$tar-zxvfapr-util-1.5.4.tar.gz
$yuminstallgccgcc-c++autoconflibtool

#apr安装
$cdapr-1.5.2
$./configure--prefix=/usr/local/apr
#--prefix=/usr/local/apr指apr的安装路径,以下要用到
$make
$makeinstall

#apr-util安装
$cdapr-util-1.5.4
$./configure--with-apr=/usr/local/apr
#--with-apr=/usr/local/apr指定APR安装路径
$make
$makeinstall



安装JDK1.7

下载jdk-7u76-linux-x64.tar.gz拷贝到/usr/local下面

cd/usr/local
$tar-zxvfjdk-7u76-linux-x64.tar.gz

#mv重命名为jdk1.7.0_76
mvjdk1.7.0_76jdk1.7

#在环境变量/etc/profile里配置JAVA_HOME
JAVA_HOME=/usr/local/jdk1.7
PATH=$PATH:$HOME/bin:$JAVA_HOME/bin
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
exportJAVA_HOMEPATHCLASSPATH

#环境变量立即生效
$source.bash_profile



编译安装tomcat

创建DATA目录

$mkdir/data



复制TOMCAT到目标目录并解压

$cpapache-tomcat-7.0.64.tar.gz/data
$tar-zxvfapache-tomcat-7.0.64.tar.gz
#mv重命名为你所需的项目名称,如zhnx
$mvapache-tomcat-7.0.64zhnx



进入TOMCAT精简目录

请参照下面步骤一步一步顺序操作

$cdzhnx

#把项目除了binlibconf目录的其它全部删除
$rm-rfLICENSElogsNOTICERELEASE-NOTESRUNNING.txttemp/webapps/work/

#在同目录新建三个文件夹domain、server、sbin
$mkdirdomain
$mkdirserver
$mkdirsbin

#把bin和lib目录移动到server下面
$mvbin/server/
$mvlib/server/

#把conf目录移动到domain下面
$mvconf/domain/

#安装tomcatnative开启aio
#进入server/bin目录下安装tomcatnative与apr连起来开启tomcataio模式
$cdserver/bin

#解压tomcatnative
$tar-zxvftomcat-native.tar.gz

#进入安装tomcatnative目录
$cdtomcat-native-1.1.33-src
$cdjni
$cdnative

#执行命令
$./configure--with-apr=/usr/local/apr--with-java-home=/usr/local/jdk1.7.0_76
$make
$makeinstall

#创建项目目录(这里项目名称示例CENTER)
$cd/data/zhnx/domain
$mkdircenter

#把conf目录移动到项目下
$mvconf/center/



拷贝并修改脚本启动参数

到目录/data/zhnx/sbin下新建三个脚本,这里与center项目为例:startcenter.sh、stopcenter.sh和super.sh

$cd/data/zhnx/sbin




#脚本一
$vistartcenter.sh
#!/bin/bash

#下面需要修改的地方
#1、HOME=/data/zhnx根据自己建的目录
exportHOME=/data/zhnx
exportDOMAIN_HOME=${HOME}/domain
exportLOG_HOME=${HOME}/logs
exportTOMCAT_HOME=${HOME}/server

#Variablesettingsbegin
#下面需要修改的地方
#1、exportprojectName=center服务名称,即war包名称
#2、exporthttpPort=7001启动接收请求端口端口
#3、exportserverPort=8001tomcat启动的本地端口
exportprojectName=center
exporthttpPort=7001
exportserverPort=8001
exportminMsMem=3200m
exportmaxMsMem=3200m
exportssMem=300k
exportmnMem=1100m
exportsurvivorRatior=2
exportminPermSize=250m
exportmaxPermSize=300m
exportthreshold=20
exportfraction=60
exportpageSize=128m
exportwarFile=${HOME}/center_webapps#服务名加webappswar包地址
exportlogFile=${LOG_HOME}/${projectName}/catalina.$(date+'%Y-%m-%d').out
exportpidFile=${LOG_HOME}/${projectName}.pid
exportLD_LIBRARY_PATH=/usr/local/apr/lib
exportheapDumpPath=${DOMAIN_HOME}/${projectName}/heapDump
#Variablesettingsend

#JVMargssettingsbegin
#下面需要修改的地方:
#1、Dtjtag=center服务名称
CATALINA_OPTS="-server-Dtjtag=center-Dtomcat.server.port=${serverPort}-Dtomcat.http.port=${httpPort}-Dtomcat.deploy.home=${warFile}"
CATALINA_OPTS="${CATALINA_OPTS}-Xms${minMsMem}-Xmx${maxMsMem}-Xss${ssMem}-Xmn${mnMem}-XX:SurvivorRatio=${survivorRatior}-XX:PermSize=${minPermSize}-XX:MaxPermSize=${maxPermSize}"
CATALINA_OPTS="${CATALINA_OPTS}-XX:+UseCompressedOops-XX:+TieredCompilation-XX:+AggressiveOpts-XX:+UseBiasedLocking"
CATALINA_OPTS="${CATALINA_OPTS}-XX:+DisableExplicitGC-XX:+UseConcMarkSweepGC-XX:+UseParNewGC-XX:+CMSParallelRemarkEnabled-XX:+UseCMSCompactAtFullCollection-Xnoclassgc-XX:MaxTenuringThreshold=${threshold}-XX:CMSInitiatingOccupancyFraction=${fraction}-XX:LargePageSizeInBytes=${pageSize}-XX:+UseFastAccessorMethods-XX:+UseCMSInitiatingOccupancyOnly-XX:+HeapDumpOnOutOfMemoryError-XX:HeapDumpPath=${heapDumpPath}"
#JVMargssettingsend

exportCATALINA_BASE=${DOMAIN_HOME}/${projectName}
exportCATALINA_OPTS
exportCATALINA_OUT="${logFile}"
exportCATALINA_PID="${pidFile}"
exportCATALINA_OPTS
${TOMCAT_HOME}/bin/catalina.shstart

exit$?




$cd/data/zhnx/sbin


[/code]

#脚本二
$vistopcenter.sh

#!/bin/bash

#下面需要修改的地方
#1、HOME=/data/zhnx根据自己建的目录
#2、JAVA_HOME=/usr/local/jdk1.7根据自己JDK的路劲
exportHOME=/data/zhnx
exportJAVA_HOME=/usr/local/jdk1.7
exportDOMAIN_HOME=${HOME}/domain
exportLOG_HOME=${HOME}/logs
exportTOMCAT_HOME=${HOME}/server
exportCLASSPATH=.:${JAVA_HOME}/lib/dt.jar:${JAVA_HOME}/lib/tools.jar
exportPATH=${JAVA_HOME}/bin:${PATH}

#Variablesettingsbegin
#下面需要修改的地方
#1、exportprojectName=center项目名称,即war包名称
#2、exportserverPort=8001tomcat本地启动端口,以上面对应
exportprojectName=center
exportserverPort=8001
#Variablesettingsend

exportJAVA_OPTS="-Dtomcat.server.port=${serverPort}"
exportCATALINA_PID="${LOG_HOME}/${projectName}.pid"
exportCATALINA_BASE=${DOMAIN_HOME}/${projectName}
${TOMCAT_HOME}/bin/catalina.shstop30-force
exit$?




$cd/data/zhnx/sbin


[/code]

#脚本三
visuper.sh

checkProcess(){
pid=`ps-ef|grep${classname}|grep-v'grep'|awk'{print$2}'`
if["X${pid}"!="X"];then
return0
else
return1
fi
}

printStartStatus(){
checkProcess
if[$?-eq0];then
echo"${_moduleName}startsucessful.[OK]"
return0
else
echo"${_moduleName}startFailed.[Failed]"
return1
fi
}

startProcess(){
echo$1
checkProcess
if[$?-eq0];then
echo"${_moduleName}hadstarted."
return0
else
${start}
sleep3
printStartStatus
fi
}

stopProcess(){
echo$1
checkProcess
if[$?-eq1];then
echo"${_moduleName}notrunning.[FAILED]"
else
pid=`ps-ef|grep${classname}|grep-v'grep'|awk'{print$2}'`
if["X${pid}"="X"];then
echo"${_moduleName}hadstop.[OK]"
else
kill-9$pid
echo"${_moduleName}stopsucessful.[OK]"
fi
fi
}

restartProcess(){
stopProcess$1
startProcess$2
}

getProcessStatus(){
checkProcess
if[$?-eq0];then
echo"${_moduleName}isrunning."
return0
else
echo"${_moduleName}isnotrunning."
return1
fi
}

unstall(){
checkProcess
if[$?-eq0];then
pid=`ps-ef|grep${classname}|grep-v'grep'|awk'{print$2}'`
if["X${pid}"!="X"];then
kill-9$pid
fi
fi
${remove}
}

commandError(){
echo""
echo"ERROR:UNKNOWNCOMMAND:\"$_command\""
exit1
}




到目录/etc/rc.d/init.d/下新建一个脚本,这里与center项目为例:center

$cd/etc/rc.d/init.d/




#脚本四
$vicenter

#!/bin/sh

#下面需要修改的地方
#1、classname="tjtag=center"center服务名称
#2、_moduleName="center"modul名称
#3、start="/data/zhnx/sbin/startcenter.sh"上面新建的脚本
#4、./data/zhnx/sbin/super.sh上面新建的脚本
classname="tjtag=center"
_command=$1
_moduleName="center"
start="/data/zhnx/sbin/startcenter.sh"
./data/zhnx/sbin/super.sh
case$_commandin
start)
startProcess"Starting${_moduldName}:"
;;
stop)
stopProcess"Stoping${_moduldName}:"
;;
restart)
restartProcess"Stoping${_moduldName}:""Starting${_moduldName}:"
;;
status)
getProcessStatus
;;
*)
commandError
;;
esac



删除原始的并替换修改过的SERVER.XML

$cd/data/zhnx/domain/center/conf
$rm-rfserver.xml

viserver.xml

<?xmlversion='1.0'encoding='utf-8'?>
<Serverport="${tomcat.server.port}"shutdown="SHUTDOWN">
<ListenerclassName="org.apache.catalina.core.AprLifecycleListener"SSLEngine="off"/>
<ListenerclassName="org.apache.catalina.core.JasperListener"/>
<ListenerclassName="org.apache.catalina.core.JreMemoryLeakPreventionListener"/>
<ListenerclassName="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener"/>
<ListenerclassName="org.apache.catalina.core.ThreadLocalLeakPreventionListener"/>

<GlobalNamingResources>
<Resourcename="UserDatabase"auth="Container"
type="org.apache.catalina.UserDatabase"
description="Userdatabasethatcanbeupdatedandsaved"
factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
pathname="conf/tomcat-users.xml"/>
</GlobalNamingResources>

<Servicename="Catalina">

<ConnectorURIEncoding="UTF-8"minSpareThreads="15"maxSpareThreads="30"enableLookups="false"disableUploadTimeout="true"acceptCount="500"maxThreads="50"maxProcessors="1000"minProcessors="10"useURIValidationHack="false"compression="on"compressionMinSize="512"compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain"protocol="org.apache.coyote.http11.Http11AprProtocol"port="${tomcat.http.port}"connectionTimeout="20000"/>

<Enginename="Catalina"defaultHost="localhost">

<RealmclassName="org.apache.catalina.realm.LockOutRealm">
<RealmclassName="org.apache.catalina.realm.UserDatabaseRealm"resourceName="UserDatabase"/>
</Realm>

<Hostname="localhost"appBase="${tomcat.deploy.home}"unpackWARs="true"autoDeploy="false">
<Contextpath=""docBase="sso"sessionCookiePath="/"sessionCookieDomain=".qasite.com"useHttpOnly="true"crossContext="true"debug="0"reloadable="false">
<ManagerclassName="de.javakaffee.web.msm.MemcachedBackupSessionManager"
memcachedNodes="n1:192.168.10.11:11220"sticky="false"lockingMode="auto"
sessionBackupAsync="false"sessionBackupTimeout="1000"
transcoderFactoryClass="de.javakaffee.web.msm.JavaSerializationTranscoderFactory"/>
</Context>
<ValveclassName="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>



若有自己需要增加的jar就拷进去
$cd/data/zhnx/server/lib把jar考进去

项目部署

新建目录webapp名称与startcenter.sh里的webapps名称一样
日志名称与服务名一样
$mkdir-p/data/zhnx/center_webapps

$mkdir-p/data/zhnx/logs/center

center.war部署至center_webapps

部署时需将对应webapps目录下的文件及文件夹清空;
然后把项目war包拷入对应webapps目录下
启动服务


servicecenterstart
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: