Tomcat作为Linux系统服务自启动设置
一. 简单的方法
最简单的方法就是通过Tomcat自带的startup.sh来自动启动,编辑/etc/rc.d/rc.local,增加:
export JDK_HOME=/usr/local/jdk
export JAVA_HOME=/usr/local/jdk
/usr/local/tomcat/bin/startup.sh
 
二. 复杂而专业的方法
第一个方法无法指定启动Tomcat服务的用户,存在安全隐患,另外在系统关闭时无法自动停止服务。在 Linux下,Tomcat可以作为一个守护进程来启动以及停止,这个必须借助于项目commons-daemon中的jsvc工具。Tomcat安装完后就带有这个工具的源码$CATALINA_HOME/bin/jsvc.tar.gz。首先安装这个工具:
# tar zxvf jsvc.tar.gz
# cd jsvc-src
# chmod +x configure
# ./configure --with-java=/usr/jdk
# make
# ./jsvc -help  //检验
 
完成后是无法用chkconfig --add tomcat设置为自动启动,会显示错误信息:service tomcat does not support chkconfig ,需要修改脚本$CATALINA_HOME/bin/jsvc-src/native/Tomcat.sh,并cp到/etc/rc.d /init.d。我的启动脚本如下(中间出现了几次问题,结果发现都是脚本的问题,所以一定要谨慎):
#!/bin/sh
#
# Startup Script for Tomcat5
#
# chkconfig: 345 87 13
# description: Tomcat Daemon
# processname: jsvc
# pidfile: /var/run/jsvc.pid
# config:
#
# Source function library.
. /etc/rc.d/init.d/functions
#
prog=tomcat
#
# Small shell script to show how to start/stop Tomcat using jsvc
# If you want to have Tomcat running on port 80 please modify the server.xml
# file:
#
# <!-- Define a non-SSL HTTP/1.1 Connector on port 80 -->
# <Connector className="org.apache.catalina.connector.http.HttpConnector"
# port="80" minProcessors="5" maxProcessors="75"
# enableLookups="true" redirectPort="8443"
# acceptCount="10" debug="0" connectionTimeout="60000"/>
#
# You need a developement version of Tomcat (Apache Tomcat/4.1-dev)
#
# Adapt the following lines to your configuration
JAVA_HOME=/usr/local/jdk
CATALINA_HOME=/usr/local/tomcat
DAEMON_HOME=$CATALINA_HOME/bin/jsvc-src
TOMCAT_USER=tomcat6
TMP_DIR=/var/tmp
CATALINA_OPTS=
CLASSPATH=$JAVA_HOME/lib/tools.jar:$CATALINA_HOME/bin/commons-daemon.jar:$CATALINA_HOME/bin/bootstrap.jar
start(){
echo -n $"Starting $prog: "
    #
    # Start Tomcat
    #
    $DAEMON_HOME/jsvc \
    -user $TOMCAT_USER \
    -home $JAVA_HOME \
    -Dcatalina.home=$CATALINA_HOME \
    -Djava.io.tmpdir=$TMP_DIR \
    -outfile $CATALINA_HOME/logs/catalina.out \
    -errfile '&1' \
    $CATALINA_OPTS \
    -cp $CLASSPATH \
    org.apache.catalina.startup.Bootstrap
    #
    # To get a verbose JVM
    #-verbose \
    # To get a debug of jsvc.
    #-debug \
    RETVAL=$?
    [ $RETVAL = 0 ] && touch /var/lock/subsys/jsvc
    [ $RETVAL = 0 ] && echo_success || echo_failure
    echo
    return $RETVAL
}
stop(){
    echo -n $"Stopping $prog: "
    #
    # Stop Tomcat
    #
    PID=`cat /var/run/jsvc.pid`
    kill $PID
    RETVAL=$?
    [ $RETVAL = 0 ] && rm /var/lock/subsys/jsvc
    [ $RETVAL = 0 ] && echo_success || echo_failure
    echo
    return $RETVAL
}
case "$1" in
start)
start
;;
stop)
stop
;;
restart|reload)
stop
start
;;
*)
echo "Usage $0 start/stop"
exit 1;;
esac
这样便大功告成了(某些路径、用户设置需要根据自己的具体环境修改)。可能还需要用chown tomcat tomcat及chmod  +x tomcat修改属主及可执行权限。




2、分配权限

* 设置用户访问权限

  1. #useradd tomcat6     //添加用户   
  2. #groupadd tomcat  //添加组   
  3. #usermod -G tomcat tomcat6  //把tomcat5加入tomcat组   
  4. #chown -R tomcat6 [color=red]你的tomcat目录[/color]   //设置用户tomcat6对目录的权限   

* 设置文件属性
chmod +x /etc/init.d/tomcat


3、/etc/rc.d/init.d/tomcat start|stop 来验证守护进程是否可以正常启动和停止。

很关键,用这个命令可以测试自己的脚本是否能正常工作,不然,老重复重启服务器要烦死。脚本配置成功的话,则会显示

[root@mygridserver ~]# /etc/init.d/tomcat start
Starting tomcat: [  OK  ]


注意:有可能上述命令运行成功,但是仍然不能开机启动TOMCAT,很可能是第二步的用户权限分配出了问题,因为在运行/etc/init.d/tomcat start,我们一般是登录ROOT用户,不存在权限不足的问题

4、其他注意事项:

1)重启服务器的时候,最好先手工停止TOMCAT服务(
/etc/init.d/tomcat stop),否则会造成下次启动时报错(/var/run下已经存在jsvc.pid)

2)重启服务器后,TOMCAT好像要等一段时间才能起来,耐心一点哦!

#####################################################################################

 


linux下tomcat6的开机自动启动脚本

文章分类:Java编程


    在SUSE SLES11 下安装好tomcat6后,考虑方便需要设置tomcat为开机自动运行。

    找到tomcat官方的安装文档 http://tomcat.apache.org/tomcat-6.0-doc/setup.html,按照要求安装,中间发现有些问题,记录下来备忘。

(1) 安装 jsvc

    按照tomcat官方的要求,tomcat作为一个守护程序运行,需要用到jsvc工具:

Tomcat can be run as a daemon using the jsvc tool from the commons-daemon project。

    执行以下命令:

    cd tomcat/bin
    tar xvfz jsvc.tar.gz
    cd jsvc-src
    support/buildconf.sh


    这里会用到autoconf,如果没有需要安装。恩,SUSE SLES11默认就是没有安装。Yast上去轻松搞定!

    成功后可以看到:
    support/buildconf.sh: configure script generated successfully

    buildconf.sh 会自动复制bootstrap.jar和commons-daemon.jar两个jar文件到tomcat/bin目录,这两个文件后面需要使用。

(2) 制作启动脚本
    jsvc下带有两个tomcat.sh的模板,Tomcat.sh为tomcat4.*版本使用,Tomcat5.sh为tomcat5.*使用,很奇怪没有tomcat6.*的模板。只好使用tomcat5的自己改改。复制模板脚本到etc/init.d:
 

    cp tomcat/bin/jsvc-src/native/Tomcat5.sh /etc/init.d/tomcat
    chmod +x /etc/init.d/tomcat


    下面是关键了,修改这个脚本的内容,标记为蓝色的部分是新加的内容,红色部分为在原有模板上修改

1. 加入LSB tags
    原有的模板文件中没有这个LSB tags内容,在执行chkconfig命令时会发出警告。
 

ss-server:/etc/rc.d # chkconfig tomcat on
insserv: warning: script 'tomcat' missing LSB tags and overrides
insserv: Default-Start undefined, assuming default start runlevel(s) for script `tomcat'


    因此需要自己加入相应的信息,如下所示,加到#!/bin/sh这行下:
 

#!/bin/sh
### BEGIN INIT INFO
# Provides:          tomcat
# Required-Start:    $remote_fs $network
# Required-Stop:     $remote_fs $network
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: The tomcat Java Application Server
### END INIT INFO


2. 设置路径
 

# Adapt the following lines to your configuration
JAVA_HOME=/work/soft/java/jdk/jdk
CATALINA_HOME=/work/soft/tomcat
DAEMON_HOME=/work/soft/tomcat/bin
TOMCAT_USER=sky


注意DAEMON_HOME设置到tomcat/bin, TOMCAT_USER可以修改为非root用户以提高安全性。

3. multi instances
    因为只有一个instance,不需要,不过还是将CATALINA_BASE设置为和CATALINA_HOME一致
 

# for multi instances adapt those lines.
TMP_DIR=/var/tmp
PID_FILE=/var/run/jsvc.pid
CATALINA_BASE=/work/soft/tomcat


4. 参数
    CATALINA_OPTS清空,CLASSPATH不用改,注意bin目录下的commons-daemon.jar和bootstrap.jar,是前面的support/buildconf.sh脚本执行后才出来的,如果发现没有这两个jar文件,说明你没有执行 support/buildconf.sh。

CATALINA_OPTS=
CLASSPATH=\
$JAVA_HOME/lib/tools.jar:\
$CATALINA_HOME/bin/commons-daemon.jar:\
$CATALINA_HOME/bin/bootstrap.jar


5. 启动的命令行
    $DAEMON_HOME/********* \这行一定要改,tomcat6的路径和tomcat5似乎有变化,模板里面的路径完全不对。不要忘了同时修改start/stop两处。其他内容不用变:
 

case "$1" in
  start)
    #
    # Start Tomcat
    #
    $DAEMON_HOME/jsvc-src/jsvc \
    -user $TOMCAT_USER \
    -home $JAVA_HOME \
  ......


    为了检测上面的脚本是否有效,可以直接执行/etc/rc.d/tomcat start/stop来看tomcat的启动和关闭是否正确。

(3) 设置开机启动
   
    执行chkconfig tomcat on。
    重启SUSE后,发现tomcat已经自动启动了。

##################################################################################

linux安装tomcat6,并设置自动启动
2010-09-13 17:01

1.安装jdk6

shell>sudo apt-get install sun-java6-jdk(用新得立软件包安装)

2.下载tomcat6

下载地址是:http://tomcat.apache.org/
本次安装的是:apache-tomcat-6.0.18.tar.gz

3.安装

将压缩包拷贝到 /opt 下(个人喜好,可以放在别处)
shell>sudo cp apache-tomcat-6.0.18.tar.gz /opt
解压文件

shell>cd /opt
shell>sudo tar zxvf apache-tomcat-6.0.18.tar.gz

 
         

解压完成后,会在 /opt 下生成文件夹 apache-tomcat-6.0.18

为了操作方便,在/usr/local 下建立软链接,名字是tomcat6

shell>cd /usr/local
shell>sudo ln -s /opt/apache-tomcat-6.0.18 tomcat6

测试tomcat是否能够正常启动

shell>sudo /usr/local/tomcat6/bin/startup.sh
打开firefox,输入http://localhost:8080,如果正常访问,则表示成功。

4.设置tomcat开机自启动

根据tomcat官方的document说明,linux下设置开机自启动可以使用jsvc(tomcat包里自带)
设置tomcat以独立的用户运行(防止以root运行,权限太大)

shell>sudo useradd -d /usr/local/tomcat6 -s /usr/sbin/nologin tomcat
上边的这个命令是添加一个系统用户tomcat,并且设置为不可登录系统。

设置用户tomcat 对tomcat6的访问权限

shell>sudo chown -R tomcat:tomcat /usr/local/tomcat6
shell>sudo chown -R tomcat:tomcat /opt/apache-tomcat-6.0.18

安装jsvc,前提需要系统安装了gcc(系统一般默认安装),autoconf,libc6-dev

shell>sudo apt-get install .....

 
         

解压jsvc.tar.g
shell>cd /usr/local/tomcat6/bin

shell>sudo tar zxvf jsvc.tar.gz
准备编译配置文件
shell>cd jsvc-src
shell>sudo sh support/buildconf.sh
如果成功,命令终端会打出:
support/buildconf.sh: configure script generated successfully
为configure添加执行权限
shell>sudo chmod 755 configure
 
         

编译
shell>sudo ./configure ?with-java=/usr/lib/jvm/java-6-sun (java的安装路径)
shell>sudo make
如果没有出现错误,jsvc就安装成功了。

设置启动脚本

拷贝jsvc带的tomcat5.sh 脚本拷贝到 /etc/init.d/ 下,并改名为tomcat
shell>sudo cp /usr/local/tomcat6/bin/jsvc-src/native/Tomcat5.sh /etc/init.d/tomcat

修改/etc/init.d/tomcat文件

shell>sudo gedit /etc/init.d/tomcat

文件中要修改的内容如下:
 
         

JAVA_HOME=/usr/lib/jvm/java-6-sun #这个地方设置为机器的jdk的位置
CATALINA_HOME=/usr/local/tomcat6 #tomcat的安装位置(软链接)
DAEMON_HOME=/usr/local/tomcat6/bin #tomcat启动程序的位置
TOMCAT_USER=tomcat #tomcat 的用户
CATALINA_BASE=/usr/local/tomcat6 #tomcat的安装位置

CATALINA_OPTS="-Djava.library.path=/home/jfclere/jakarta-tomcat-connectors/jni/native/.libs" #注释掉这句
CATALINA_OPTS= #添加下边这句
<br>
$DAEMON_HOME/jsvc-src/jsvc \ #设置正确的jsvc程序的位置
$DAEMON_HOME/jsvc-src/jsvc \ #设置正确的jsvc程序的位置

设置 /etc/init.d/tomcat的可执行权限

Shell>sudo chmod 755 /etc/init.d/tomcat

在/etc/rc2.d/下设置一个/etc/init.d/tomcat 的软链接

shell>cd /etc/rc2.d/
shell>sudo ln -s /etc/init.d/tomcat S16tomcat