在 CentOS5.3 上安装 Tomcat6 记录

为 Tomcat 创建专门的用户

考虑到安全问题,不建议用 root 用户运行 Tomcat,所以我们为 Tomcat 创建一个独立用户,

1
2
$ sudo useradd -d /usr/local/tomcat6 -s /sbin/nologin
$ sudo chown -R tomcat:tomcat /usr/local/tomcat6

安装和配置 JDK1.6

从 Oracle 下载 jdk-6u45-linux-x64.bin,拷贝到 /usr/local/jdk 下,

1
2
$ sudo chmod +x jdk-6u45-linux-x64.bin
$ sudo ./jdk-6u45-linux-x64.bin

会生成路径 /usr/local/jdk/jdk1.6.0_45,jdk文件都在其中。

安装和配置 Tomcat6

从 Apache 下载 apache-tomcat-6.0.37.tar.gz,

1
2
3
4
$ sudo tar zxvf apache-tomcat-6.0.37.tar.gz
$ sudo cp apache-tomcat-6.0.37/* /usr/local/tomcat6
$ sudo cd /usr/local/tomcat6
$ sudo chown -R tomcat:tomcat .

编辑环境变量

1
2
$ sudo vim /etc/profile

export PATH USER ... 上方添加以下变量声明,

1
2
3
4
5
JAVA_HOME=/usr/local/jdk/jdk1.6.0_45
JRE_HOME=/usr/local/jdk/jdk1.6.0_45/jre
CLASS_PATH=.:$JAVA_HOME/lib
CATALINA_HOME=/usr/local/tomcat6
CATALINA_BASE=$CATALINA_HOME

并在 export 后面追加新的内容,如下,

1
2
export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE HISTCONTROL JAVA_HOME CATALINA_HOME
export PATH=$PATH:/usr/local/bin:$JAVA_HOME/bin

使环境变量生效,

1
$ source /etc/profile

将 Tomcat 设置为开机启动

Tomcat 自带了 Apache 的 commons-daemon 包,编译其源码生成 jsvc 可执行文件,

1
2
3
4
5
6
7
8
$ cd $CATALINA_HOME/bin
$ sudo -u tomcat -H tar zxvf commons-daemon-native.tar.gz
$ cd commons-daemon-1.0.15-native-src/unix
$ sudo ./configure --prefix=/usr/local --with-java=/usr/local/jdk/jdk1.6.0_45
$ sudo -u tomcat -H cp jsvc ../..
$ cd ../..
$ sudo cp daemon.sh /etc/init.d/tomcatd
$ sudo vim /etc/init.d/tomcatd

如上,我们将 daemon.sh 拷贝到 /etc/init.d/tomcatd 作为启动脚本,daemon.sh 是 Tomcat 提供的模板,可根据自己的情况稍加改动使用,在我的环境中我做了如下修改,

1.找到注释行:

1
# Set JAVA_HOME to working JDK or JRE

在下面添加:

1
2
3
JAVA_HOME=/usr/local/jdk/jdk1.6.0_45
CATALINA_HOME=/usr/local/tomcat6
CATALINA_BASE=/usr/local/tomcat6

2.在文件头添加 chkconfig 注释参数,添加后如下:

1
2
3
4
5
6
#!/bin/sh
# tomcatd Startup script for the Tomcat 6 Server
# chkconfig: 345 61 61
# description: Tomcat 6 Server
# processname: tomcatd

接着将 tomcatd 注册到系统服务,并设置为自动启动,

1
2
chkconfig --add tomcats
chkconfig tomcats on

问题及处理

*启动 Tomcat 报异常:“java.lang.NoClassDefFoundError: org.apache.catalina.mbeans.ServerLifecycleListener”
一开始使用 yum 安装的 java 是 1.5 的版本,但是 Tomcat6 是在 JDK6 的版本上开发的,所以发生异常,重新安装 JDK6 之后就不再出现了。

*Tomcat 可以启动运行,但是日志中存在错误信息:“Failed to get local InetAddress for VMID” “java.net.UnknownHostException”
这个是因为 JAVA 无法通过在 /etc/sysconfig/network 中配置的 HOSTNAME 找到对应的 IP,只需要修改 /etc/hosts 即可,在 127.0.0.1 后面增加配置的 HOSTNAME 即可。