Total Pageviews

Friday, 16 September 2016

生产环境配置tomcat以daemon方式运行

一、为什么生产环境中要以daemon方式运行tomcat

通常我们在开发环境(例如windows)使用tomcat时可以直接调用$CATALINA_HOME/bin/startup.bat来启动 tomcat,调用$CATALINA_HOME/bin/shutdown.bat来关闭tomcat。然而在生产环境(通常是linux)中我们需要 将tomcat配置成以daemon守护进程来运行,主要是因为
  1. 以daemon方式运行tomcat可以使tomcat不受终端影响,不会因为退出终端而停止运行。
  2. 可以让tomcat以普通用户身份运行
  3. 可以让tomcat在系统启动时自动运行

二、如何将tomcat配置成守护进程

将tomcat配置成守护进程需要借助apache-commons-daemon项目的jsvc工具(http://commons.apache.org/proper/commons-daemon/jsvc.html),通常该工具会包含在我们下载的tomcat包中($CATALINA_HOME/bin/commons-daemon-native.tar.gz)
1.配置JAVA_HOME,CATALINA_HOME两个环境变量
1
2
export JAVA_HOME=/opt/jdk
export CATALINA_HOME=/opt/tomcat
2.编译安装jsvc
1
2
3
4
5
6
cd $CATALINA_HOME/bin
tar -xvf commons-daemon-native.tar.gz
cd commons-daemon-1.0.x-native-src/unix
./configure
make
cp jsvc ../..
3.创建运行tomcat的普通用户tomcat
1
useradd -s /sbin/nologin tomcat
4.修改$CATALINA_HOME的所属用户和所属组,以便可以以tomcat这个普通用户来运行


chown -R $CATALINA_HOME tomcat
chgrp -R $CATALINA_HOME tomcat
5.修改制作tomcat启动脚本
$CATALINA_HOME/bin/daemon.sh是tomcat官方为我们提供的一个脚本模版,简单修改即可
cp $CATALINA_HOME/bin/daemon.sh /etc/init.d/tomcat
在注释位置加入chkconfig配置,使得该脚本可以被chkconfig命令识别,从而可以设置成开机启动tomcat
1
# chkconfig: 2345 85 15
由于service命令会去除系统环境变量,因此在脚本开始位置加入以下代码,配置该脚本运行时需要的几个变量
1
2
3
JAVA_HOME=/opt/jdk
CATALINA_HOME=/opt/tomcat
TOMCAT_USER=tomcat
(6)设置tomcat开机启动
1
chkconfig tomcat on

三、结论

经过以上配置后tomcat便能够以守护进程方式运行,并且可以随系统启动而启动
运行以下命令开启tomcat
1
service tomcat start
运行以下命令结束tomcat
1
service tomcat stop