1、环境和资源
操作系统:CentOS 6.5 x64
Java环境:Oracle JDK 1.7
Tomcat 7 下载:http://mirrors.hust.edu.cn/apache/tomcat/tomcat-7/v7.0.54/bin/apache-tomcat-7.0.54.tar.gz
2、安装JDK和环境变量
参照:http://blog.youkuaiyun.com/torycatkin/article/details/18446593
3、安装Tomcat7及环境变量
(1)解压tomcat到/opt/tomcat目录:tar -xvf apache-tomcat-7.0.54.tar.gz -C /opt/tomcat
(2)设置全局环境变量,修改/etc/bashrc文件
#vi /etc/bashrc
在最后追加内容:
CATALINA_HOME=/opt/tomcat
CATALINA_BASE=$CATALINA_HOME
TOMCAT_HOME=$CATALINA_HOME
export CATALINA_HOME CATALINA_BASE TOMCAT_HOME
保存文件后,并执行 source /etc/bashrc 更新
4、安装jsvc守护进程
tomcat 7 自带了jsvc源码包和启动守护进程的脚本daemon.sh,位于$TOMCAT_HOME/bin目录下;
jsvc源码包位置:$TOMCAT_HOME/bin/commons-daemon-native.tar.gz
守护进程启动脚本位置:$TOMCAT_HOME/bin/daemon.sh
首先安装jsvc
(1)解压 tar -xvf commons-daemon-native.tar.gz
(2)进入目录安装 cd commons-daemon-1.0.15-native-src/unix
./configure
make
(3)安装完成后在安装目录下出现jsvc的可执行程序,复制到$TOMCAT_HOME/bin目录下
cp commons-daemon-1.0.15-native-src/unix/jsvc ./
为了安全,jsvc通过tomcat用户启动服务,系统需要增加tomcat用户和组:
groupadd tomcat
useradd -g tomcat -d /opt/tomcat -s /sbin/nologin tomcat
修改tomcat目录的用户和组:
chown -R tomcat:tomcat ./
测试通过守护进程启动服务 :bin/daemon.sh start
通过ps -ef |grep tomcat查看,会发现有两个进程在运行,一个root用户下的jsvc守护,一个tomcat用户下的tomcat服务
5、设置启动服务
将jsvc启动tomat设置成开机自动启动服务,需要将bin/daemon.sh改名到/etc/init.d/tomcat
cp /opt/tomcat/bin/daemon.sh /etc/init.d/tomcat
chkconfig --add tomcat 此处会出现tomcat 服务不支持 chkconfig,是因为tomcat脚本中缺少两行信息
修改/etc/init.d/tomcat 在#!/bin/sh下增加两行:
#chkconfig: 2345 80 90
#description tomcat
chkconfig后面有三个参数2345,80和90告诉chkconfig程序,需要在rc2.d~rc5.d目录下,创建名字为 S80auto_run的文件连接,连接到/etc/rc.d/init.d目录下的的auto_run脚本。第一个字符是S,系统在启动的时候,运行脚
本auto_run,就会添加一个start参数,告诉脚本,现在是启动模式。同时在rc0.d和rc6.d目录下,创建名字为K90auto_run的 文件连接,第一个字符为K,个系统在关闭系统的时候,会运行auto_run,添加一个stop,告诉脚本,现在是关闭模式。
保存文件,并执行chkconfig --add tomcat OK可以执行了
reboot重启一下看看,tomcat服务已经自动启动了
6、其他环境及参数设置
(1)设置tomcat的JVM启动参数,需要在TOMCAT_HOME/bin目录下新建setenv.sh文件,启动脚本会自动调用该脚本
文件中加入:JAVA_OPTS='-Xms512m -Xmx2048m -XX:MaxPermSize=512m'
7、问题记录
(1) 通过jsvc启动tomcat服务报 cannot find any vm in java home
在CentOS 64位操作系统中,安装jre 32位版本,JSVC默认编译采用64位,不支持32位jre,重新安装64位jre即可
(2) tomcat 服务不支持 chkconfig
该问题主要是由于配置jsvc的脚本时没有在文件开头未包含关于chkconfig的注释信息。解决方法是在tomcat文件的头两行的注释语句中,加上chkconfig和description两部分内容:
#chkconfig:2 3 4 5 10 90
#description:Starts and Stops the Tomcat daemon
第一行表示默认启动的运行级别以及启动和停止的优先级,如要Tomcat服务默认不再任何运行级启动,则以 - 代替其运行级别。此时第一行表示脚本在运行级2、3、4、5启动,启动优先级为10,停止优先权为90。
(3)jsvc启动tomcat后,远程无法访问页面,本地可以访问
由于jsvc采用tomcat用户启动,需要将tomcat目录及文件的所有者改为tomcat,chown -R tomcat:tomcat ./apache-tomcat-7.0.54