CentOS6.4二进制包快速安装Tomcat7
老机器装新服务,最怕依赖滚雪球。CentOS6.4已经停止官方维护,yum源里连Tomcat的影子都找不到,源码编译又要把整个开发环境拖回来,折腾一晚都不一定跑得起来。直接上二进制包,解压即用,十分钟就能把Tomcat7钉在系统里,还能随系统开机自启,步骤少到可以背下来。

为什么选二进制包而不是rpm
CentOS6.4自带的软件仓库停留在十年前,rpm包版本老旧,强行装高版本会扯出一堆冲突。二进制包是官方已经编译好的绿色压缩包,里面自带脚本,只要系统里有JDK,就能直接跑。省掉编译时间,也省掉“缺lib、缺header”的报错。对生产环境来说,少装一个编译器就少一个攻击面。
准备:一台最小化安装的CentOS6.4与JDK
最小化安装的系统最干净,没有乱七八糟的依赖。先用cat /etc/redhat-release确认是CentOS6.4,再用java -version看JDK是否已经就位。如果没有,去Oracle归档站拉一份jdk-7u80-linux-x64.rpm,rpm -ivh一路回车即可。JDK是Tomcat7的唯一硬性要求,版本别低于1.7,否则启动会闪退。
下载:找对镜像,别让带宽打水漂
Apache官网把老版本藏在archive目录里,直接找apache-tomcat-7.0.109.tar.gz,体积不到十兆,国内镜像站同步完整。用wget拉文件时记得加-c断点续传,机房网络偶尔抽风,能省一半时间。下载完顺手sha512sum校验,别让破损包浪费后面排错时间。

解压:目录规划一次到位
官方推荐把Tomcat放在/usr/local下,方便统一权限。先建用户:useradd -r -s /sbin/nologin tomcat,再解压:tar -xf apache-tomcat-7.0.109.tar.gz -C /usr/local,然后mv /usr/local/apache-tomcat-7.0.109 /usr/local/tomcat7。把目录属主交给刚才建的用户:chown -R tomcat:tomcat /usr/local/tomcat7,后续升级直接换目录即可,配置文件可以软链出来,不动业务。
端口:别让防火墙把80拒之门外
CentOS6.4默认的iptables规则只开22端口。编辑/etc/sysconfig/iptables,照抄一行ssh规则,把22换成8080,重启服务service iptables restart。如果前面有硬件防火墙,记得同步放行。想改端口直接动server.xml,把Connector里的8080换成80,再把Tomcat用户加进root组,或者用setcap capnetbind_service=+ep /usr/local/tomcat7/bin/jsvc,就能让非root进程绑定低端口,安全又省事。
启动:一条命令看日志
切换用户:su - tomcat -s /bin/bash,进目录:cd /usr/local/tomcat7/bin,启动:./startup.sh。日志实时刷在../logs/catalina.out,用tail -f盯着,看到Server startup in xxx ms就稳了。浏览器里敲http://IP:8080,那只黄色小猫蹦出来,说明CentOS6.4二进制包快速安装Tomcat7已经跑通。如果页面空白,先查防火墙,再查端口占用,最后看日志里的异常堆栈,九成都是端口冲突。

自启:写一行脚本,断电能自愈
生产环境最怕重启后服务没起来。新建文件/etc/init.d/tomcat7,把官方给的jsvc脚本粘进去,修改CATALINA_HOME路径,给执行权限:chmod +x /etc/init.d/tomcat7,然后chkconfig --add tomcat7,chkconfig tomcat7 on。这样不管是机房掉电还是计划重启,系统都会先拉Tomcat,再对外开端口,运维可以睡整觉。
调优:老机器也能跑出高并发
CentOS6.4默认最大打开文件数是1024,高并发场景下会被日志里的“Too many open files”卡死。编辑/etc/security/limits.conf,给tomcat用户写上soft nofile 65536和hard nofile 65536,保存后重新登录即可生效。JVM层面在bin/setenv.sh里加一行:export JAVA_OPTS="-Xms512m -Xmx1024m -XX:MaxPermSize=256m",内存别超过物理机的七成,留点余地给系统缓存。压测时再用jstat -gc看回收频率,微调新生代比例,老系统也能顶住两千并发。
升级:替换目录,三分钟完成
二进制升级就是“换文件夹”。先把旧目录改名备份:mv /usr/local/tomcat7 /usr/local/tomcat7.bak,再把新版本解压到原位置,把原来的conf/server.xml、conf/tomcat-users.xml、以及webapps里的应用拷回来,权限重新赋给tomcat用户,重启服务即可。回滚更快,删新目录,把bak改回来,再启一次,生产环境几乎零停机。
常见坑清单:一句话记住
1. JDK版本低于1.7,启动直接闪退,日志里找不到原因。
2. 用root启动后,再切回普通用户,文件权限错乱,只能重装。
3. 防火墙没放行,本地能访问,远程打不开,先别急着改配置。
4. 把应用直接丢在webapps下,忘记关自动部署,重启时重复解压,磁盘瞬间爆满。
5. 复制粘贴网上脚本,路径写死,升级后找不到目录,服务起不来。
照着上面一步步敲命令,CentOS6.4二进制包快速安装Tomcat7就能在老旧硬件上稳如老狗。二进制方式不挑源、不挑内核,只要JDK在,就能把服务跑起来。十分钟搞定,省下的时间喝杯咖啡,比折腾编译链舒服多了。
