本文来自我的github pages博客http://galengao.github.io/ 即www.gaohuirong.cn

摘要:

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

修改系统内核

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

  • 修改LIMITS.CONF
$ vi /etc/security/limits.conf
# 增加
* soft nofile
* hard nofile
 
  • 修改SYSCTL.CONF
# 备份
$ mv /etc/sysctl.conf /etc/sysctl.conf.bak $ vi /etc/sysctl.conf
# 插入
net.ipv4.ip_forward =
net.ipv4.conf.default.rp_filter =
net.ipv4.conf.default.accept_source_route =
kernel.sysrq =
kernel.core_uses_pid =
net.ipv4.tcp_syncookies =
kernel.msgmnb =
kernel.msgmax =
kernel.shmmax =
kernel.shmall =
net.ipv4.tcp_max_tw_buckets =
net.ipv4.tcp_sack =
net.ipv4.tcp_window_scaling =
net.ipv4.tcp_rmem =
net.ipv4.tcp_wmem =
net.core.wmem_default =
net.core.rmem_default =
net.core.rmem_max =
net.core.wmem_max =
net.core.netdev_max_backlog =
net.core.somaxconn =
net.ipv4.tcp_max_orphans =
net.ipv4.tcp_max_syn_backlog =
net.ipv4.tcp_timestamps =
net.ipv4.tcp_synack_retries =
net.ipv4.tcp_syn_retries =
net.ipv4.tcp_tw_recycle =
net.ipv4.tcp_tw_reuse =
net.ipv4.tcp_mem =
net.ipv4.tcp_fin_timeout =
net.ipv4.tcp_keepalive_time =
net.ipv4.ip_local_port_range =
 

安装APR

  • 下载apr-1.5.2.tar.gz和apr-util-1.5.4.tar.gz
    安装apr,方便tomcat 开启aoi 
    apr下载地址
$ tar -zxvf apr-1.5..tar.gz
$ tar -zxvf apr-util-1.5..tar.gz
$ yum install gcc gcc-c++ autoconf libtool # apr安装
$ cd apr-1.5.
$ ./configure --prefix=/usr/local/apr
# --prefix=/usr/local/apr指apr的安装路径,以下要用到
$ make
$ make install # apr-util安装
$ cd apr-util-1.5.
$ ./configure --with-apr=/usr/local/apr
# --with-apr=/usr/local/apr 指定APR安装路径
$ make
$ make install
 

安装JDK1.7

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

cd /usr/local
$ tar -zxvf jdk-7u76-linux-x64.tar.gz # mv 重命名 为jdk1..0_76
mv jdk1..0_76 jdk1. # 在环境变量/etc/profile里配置JAVA_HOME
JAVA_HOME=/usr/local/jdk1.
PATH=$PATH:$HOME/bin:$JAVA_HOME/bin
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export JAVA_HOME PATH CLASSPATH # 环境变量立即生效
$ source .bash_profile
 

编译安装tomcat

创建DATA目录

$ mkdir /data
 

复制TOMCAT到目标目录并解压

$ cp apache-tomcat-7.0..tar.gz /data
$ tar -zxvf apache-tomcat-7.0..tar.gz
# mv 重命名为你所需的项目名称,如zhnx
$ mv apache-tomcat-7.0. zhnx
 

进入TOMCAT精简目录

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

$ cd zhnx

# 把项目除了bin lib conf目录的其它全部删除
$ rm -rf LICENSE logs NOTICE RELEASE-NOTES RUNNING.txt temp/webapps/work/ # 在同目录新建三个文件夹domain、server、sbin
$ mkdir domain
$ mkdir server
$ mkdir sbin # 把bin 和lib目录移动到server下面
$ mv bin/ server/
$ mv lib/ server/ # 把conf目录移动到domain下面
$ mv conf/ domain/ # 安装tomcat native 开启aio
# 进入server/bin目录下安装tomcat native 与apr连起来 开启tomcat aio模式
$ cd server/bin # 解压 tomcat native
$ tar -zxvf tomcat-native.tar.gz # 进入安装tomcat native目录
$ cd tomcat-native-1.1.-src
$ cd jni
$ cd native # 执行命令
$ ./configure --with-apr=/usr/local/apr --with-java-home=/usr/local/jdk1..0_76
$ make
$ make install # 创建项目目录(这里项目名称示例CENTER)
$ cd /data/zhnx/domain
$ mkdir center # 把conf目录移动到项目下
$ mv conf/ center/
 

拷贝并修改脚本启动参数

  • 到目录/data/zhnx/sbin 下新建三个脚本,这里与center项目为例:startcenter.sh、stopcenter.sh和super.sh
$ cd /data/zhnx/sbin
# 脚本一
$ vi startcenter.sh
#!/bin/bash # 下面需要修改的地方
# 、HOME=/data/zhnx根据自己建的目录
export HOME=/data/zhnx
export DOMAIN_HOME=${HOME}/domain
export LOG_HOME=${HOME}/logs
export TOMCAT_HOME=${HOME}/server #Variable settings begin
# 下面需要修改的地方
# 、export projectName=center 服务名称,即war包名称
# 、export httpPort= 启动接收请求端口端口
# 、export serverPort= tomcat启动的本地端口
export projectName=center
export httpPort=
export serverPort=
export minMsMem=3200m
export maxMsMem=3200m
export ssMem=300k
export mnMem=1100m
export survivorRatior=
export minPermSize=250m
export maxPermSize=300m
export threshold=
export fraction=
export pageSize=128m
export warFile=${HOME}/center_webapps # 服务名加webapps war包地址
export logFile=${LOG_HOME}/${projectName}/catalina.$(date +'%Y-%m-%d').out
export pidFile=${LOG_HOME}/${projectName}.pid
export LD_LIBRARY_PATH=/usr/local/apr/lib
export heapDumpPath=${DOMAIN_HOME}/${projectName}/heapDump
#Variable settings end #JVM args settings begin
# 下面需要修改的地方:
# 、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}"
#JVM args settings end export CATALINA_BASE=${DOMAIN_HOME}/${projectName}
export CATALINA_OPTS
export CATALINA_OUT="${logFile}"
export CATALINA_PID="${pidFile}"
export CATALINA_OPTS
${TOMCAT_HOME}/bin/catalina.sh start exit $?
$ cd /data/zhnx/sbin
 
# 脚本二
$ vi stopcenter.sh #!/bin/bash # 下面需要修改的地方
# 、HOME=/data/zhnx根据自己建的目录
# 、JAVA_HOME=/usr/local/jdk1. 根据自己JDK的路劲
export HOME=/data/zhnx
export JAVA_HOME=/usr/local/jdk1.
export DOMAIN_HOME=${HOME}/domain
export LOG_HOME=${HOME}/logs
export TOMCAT_HOME=${HOME}/server
export CLASSPATH=.:${JAVA_HOME}/lib/dt.jar:${JAVA_HOME}/lib/tools.jar
export PATH=${JAVA_HOME}/bin:${PATH} #Variable settings begin
# 下面需要修改的地方
# 、export projectName=center 项目名称,即war包名称
# 、export serverPort= tomcat本地启动端口,以上面对应
export projectName=center
export serverPort=
#Variable settings end export JAVA_OPTS="-Dtomcat.server.port=${serverPort}"
export CATALINA_PID="${LOG_HOME}/${projectName}.pid"
export CATALINA_BASE=${DOMAIN_HOME}/${projectName}
${TOMCAT_HOME}/bin/catalina.sh stop -force
exit $?
$ cd /data/zhnx/sbin
 
# 脚本三
vi super.sh checkProcess(){
pid=`ps -ef|grep ${classname}|grep -v 'grep'|awk '{print $2}'`
if [ "X${pid}" != "X" ]; then
return
else
return
fi
} printStartStatus(){
checkProcess
if [ $? -eq ]; then
echo "${_moduleName} start sucessful. [OK]"
return
else
echo "${_moduleName} start Failed. [Failed]"
return
fi
} startProcess(){
echo $
checkProcess
if [ $? -eq ]; then
echo "${_moduleName} had started."
return
else
${start}
sleep
printStartStatus
fi
} stopProcess(){
echo $
checkProcess
if [ $? -eq ]; then
echo "${_moduleName} not running. [FAILED]"
else
pid=`ps -ef|grep ${classname}|grep -v 'grep'|awk '{print $2}'`
if [ "X${pid}" = "X" ]; then
echo "${_moduleName} had stop. [OK]"
else
kill - $pid
echo "${_moduleName} stop sucessful. [OK]"
fi
fi
} restartProcess(){
stopProcess $
startProcess $
} getProcessStatus(){
checkProcess
if [ $? -eq ]; then
echo "${_moduleName} is running."
return
else
echo "${_moduleName} is not running."
return
fi
} unstall(){
checkProcess
if [ $? -eq ]; then
pid=`ps -ef|grep ${classname}|grep -v 'grep'|awk '{print $2}'`
if [ "X${pid}" != "X" ]; then
kill - $pid
fi
fi
${remove}
} commandError(){
echo ""
echo "ERROR:UNKNOWN COMMAND:\"$_command\" "
exit
}
 
  • 到目录/etc/rc.d/init.d/下新建一个脚本,这里与center项目为例:center
$ cd /etc/rc.d/init.d/
 
# 脚本四
$ vi center #!/bin/sh # 下面需要修改的地方
# 、classname="tjtag=center" center服务名称
# 、_moduleName="center" modul名称
# 、start="/data/zhnx/sbin/startcenter.sh" 上面新建的脚本
# 、. /data/zhnx/sbin/super.sh 上面新建的脚本
classname="tjtag=center"
_command=$
_moduleName="center"
start="/data/zhnx/sbin/startcenter.sh"
. /data/zhnx/sbin/super.sh
case $_command in
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 -rf server.xml vi server.xml <?xml version='1.0' encoding='utf-8'?>
<Server port="${tomcat.server.port}" shutdown="SHUTDOWN">
<Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="off" />
<Listener className="org.apache.catalina.core.JasperListener" />
<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"> <Connector URIEncoding="UTF-8" minSpareThreads="" maxSpareThreads="" enableLookups="false" disableUploadTimeout="true" acceptCount="" maxThreads="" maxProcessors="" minProcessors="" useURIValidationHack="false" compression="on" compressionMinSize="" compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain" protocol="org.apache.coyote.http11.Http11AprProtocol" port="${tomcat.http.port}" connectionTimeout=""/> <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="${tomcat.deploy.home}" unpackWARs="true" autoDeploy="false">
<Context path="" docBase="sso" sessionCookiePath="/" sessionCookieDomain=".qasite.com" useHttpOnly="true" crossContext="true" debug="" reloadable="false">
<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
memcachedNodes="n1:192.168.10.11:11220" sticky="false" lockingMode="auto"
sessionBackupAsync="false" sessionBackupTimeout=""
transcoderFactoryClass="de.javakaffee.web.msm.JavaSerializationTranscoderFactory" />
</Context>
<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>
 

若有自己需要增加的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目录下
启动服务


service center start
 

linux下简洁优化部署tomcat应用的更多相关文章

  1. linux下实现自动部署tomcat的脚本

    linux下实现自动部署tomcat的脚本 由于经常部署war到tomccat上,经常有一些重复的工作要做:停服务.备份war包.上传新的war包.启动服务.索性就写了一个自动部署的脚本. 脚本如下a ...

  2. linux下jvm优化、tomcat调优

    系统环境:jdk1.8,apache-tomcat-8.5.35 一.jvm优化 进入 bin/catalina.sh,修改JAVA_OPTS配置: JAVA_OPTS="-server - ...

  3. Linux 下启动两个tomcat

    Linux 下启动两个tomcat 闲来无事学习nginx,想要配置个load balance.可是先决条件是:得有两个web容器.两个电脑是不用想了.只能想办法在一个机器上启动两个tomcat.原以 ...

  4. 在linux下安装并操作tomcat

    1.安装tomcat1).下载tomcat从官网http://tomcat.apache.org/下载tomcat,保存在/home目录下.root@ubuntu:/home/ubuntu/Downl ...

  5. MongoDB在Linux下常用优化设置

    MongoDB在Linux下常用优化设置 以下是一些MongoDB推荐的常用优化设置.在生产环境下选取合适的参数值,例如预读值和默认文件描述符数目等,会对系统性能有很大的影响. 1.关闭数据库文件的 ...

  6. Linux下配置多个tomcat多个域名

    Linux下配置多个tomcat多个域名复制tomcat:mkdir /home/server/testcp -rf /home/server/shichuan/* /home/server/test ...

  7. Linux下Apache服务部署静态网站------网站服务程序

    文章链接(我的CSDN博客): Linux下Apache服务部署静态网站------网站服务程序

  8. Linux下使用JDK11部署Nacos启动报错:Could not find or load main class

    Linux下使用JDK11部署Nacos 错误日志 /nacos/jdk-11.0.12/bin/java -server -Xms2g -Xmx2g -Xmn1g -XX:MetaspaceSize ...

  9. linux下打开、关闭tomcat,实时查看tomcat运行日志

    启动:一般是执行sh tomcat/bin/startup.sh 停止:一般是执行sh tomcat/bin/shutdown.sh脚本命令 查看:执行ps -ef |grep tomcat 输出如下 ...

随机推荐

  1. jquery 图片自动无缝滚动

    <!DOCTYPE html><html><head> <meta charset="utf-8"> <meta http-e ...

  2. iOS的相对路径和绝对路径

    iOS程序有固定的文件访问限制,只能在自己的沙盒内. UIImage *img=[UIImage imageNamed:@"cellicon.png"]; 这段代码从相对路径加载了 ...

  3. Python 魔法方法详解

    据说,Python 的对象天生拥有一些神奇的方法,它们总被双下划线所包围,他们是面向对象的 Python 的一切. 他们是可以给你的类增加魔力的特殊方法,如果你的对象实现(重载)了这些方法中的某一个, ...

  4. Shell中脚本变量的作用域

    原文地址:http://blog.csdn.net/abc86319253/article/details/46341839    在shell中定义函数可以使代码模块化,便于复用代码.不过脚本本身的 ...

  5. 在eclispe的类中快速打出main方法

    在java类中快速打出main方法有两种途径: 1. 在新建类时,在New Java Class窗口中,将public static void main ( String[ ] args ) 前面打上 ...

  6. Linux常用命令(二)--文件目录命令

    1. 列表目录命令: 格式: ls [参数] 用于显示文件或目录信息 选项: -l 每行显示一个文件和目录信息(长格式),简写:ll等同于ls -l 注意:当参数是文件时,显示此文件全部信息 当参数是 ...

  7. java 中字符串比较equals()和equalsIgnoreCase()的区别

    1.使用equals( )方法比较两个字符串是否相等 boolean equals(Object str) 这里str是一个用来与调用字符串(String)对象做比较的字符串(String)对象. 如 ...

  8. java 网络编程之TCP通信和简单的文件上传功能

    */ .hljs { display: block; overflow-x: auto; padding: 0.5em; color: #333; background: #f8f8f8; } .hl ...

  9. MOOC网视频下载并视频倍速播放,超简单哒,亲测可用,( •̀ ω •́ )y

    由于视频在线播放太卡,想着下载看吧~~可是这个坑爹的网站没有下载按钮,难道就不可以下载视频了吗? 小白不甘心~ 于是动手查了一下,实验很成功,估计如果会爬虫的都不用像我一样一个一个自己去下了,奈何我知 ...

  10. ng机器学习视频笔记(十六) ——从图像处理谈机器学习项目流程

    ng机器学习视频笔记(十六) --从图像处理谈机器学习项目流程 (转载请附上本文链接--linhxx) 一.概述 这里简单讨论图像处理的机器学习过程,主要讨论的是机器学习的项目流程.采用的业务示例是O ...