`

linux下tomcat作为daemon运行

 
阅读更多

在linux下如果想让tomcat在开机时自启动,可以将启动代码写到/etc/rc.local里面。但是,这样的话,tomcat将以root权限运行,这是不安全的。因此,要想办法让tomcat以非特权身份作为daemon运行。

要将tomcat作为linux的daemon运行,需要commons-daemon工程的jsvc工具,tomcat的bin目录里已经自带了这个工具的源码。

解压commons-daemon-native.tar.gz,进入unix子目录,然后configure。configure的时候需要指定jdk路径或者当前环境中有JAVA_HOME变量。

接下来在make的时候可能会出现如下错误:

ar: libservice.a: Malformed archive  
make[1]: *** [libservice.a] Error 1  

 这是一个已知的bug:

The file bin/commons-daemon-native.tar.gz contains dirty (already compiled)  
code. On some systems this causes "make" to return the following error:  
ar: libservice.a: Malformed archive  
The solution is to run "make clean" before running "make".  
I believe that "make clean" should be run before creating the tgz file, so that  
there are no compiled/generated files laying around.  

 make以后得到jsvc文件,复制到tomcat的bin目录中。另外在native目录下有一个Tomcat5.sh,是用于tomcat自启动的一个模板,我们可以修改它快速得到一个符合要求的启动文件。在这里,我将它修改为如下内容:

#!/bin/sh  
##############################################################################  
#  
# Licensed to the Apache Software Foundation (ASF) under one or more  
# contributor license agreements.  See the NOTICE file distributed with  
# this work for additional information regarding copyright ownership.  
# The ASF licenses this file to You under the Apache License, Version 2.0  
# (the "License"); you may not use this file except in compliance with  
# the License.  You may obtain a copy of the License at  
#  
#     http://www.apache.org/licenses/LICENSE-2.0  
#  
# Unless required by applicable law or agreed to in writing, software  
# distributed under the License is distributed on an "AS IS" BASIS,  
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  
# See the License for the specific language governing permissions and  
# limitations under the License.  
##############################################################################  
#  
# 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"/>  
#  
# That is for Tomcat-5.0.x (Apache Tomcat/5.0)  
#  
# Adapt the following lines to your configuration  
JAVA_HOME=/usr/local/sun-java6-jdk  
CATALINA_HOME=/usr/local/apache-tomcat-6  
DAEMON_HOME=$CATALINA_HOME  
TOMCAT_USER=tomcat6  
  
# for multi instances adapt those lines.  
TMP_DIR=/var/tmp  
PID_FILE=/var/run/jsvc.pid  
CATALINA_BASE=$CATALINA_HOME  
  
#CATALINA_OPTS="-Djava.library.path=/home/jfclere/jakarta-tomcat-connectors/jni/native/.libs"  
CLASSPATH=/  
$JAVA_HOME/lib/tools.jar:/  
$CATALINA_HOME/bin/commons-daemon.jar:/  
$CATALINA_HOME/bin/bootstrap.jar  
  
case "$1" in  
  start)  
    #  
    # Start Tomcat  
    #  
    echo "Starting tomcat6..."  
    $DAEMON_HOME/bin/jsvc /  
    -user $TOMCAT_USER /  
    -home $JAVA_HOME /  
    -Dcatalina.home=$CATALINA_HOME /  
    -Dcatalina.base=$CATALINA_BASE /  
    -Djava.io.tmpdir=$TMP_DIR /  
    -wait 10 /  
    -pidfile $PID_FILE /  
    -outfile $CATALINA_HOME/logs/catalina.out /  
    -errfile $CATALINA_HOME/logs/catalina.err /  
    $CATALINA_OPTS /  
    -cp $CLASSPATH /  
    org.apache.catalina.startup.Bootstrap  
    #  
    # To get a verbose JVM  
    #-verbose /  
    # To get a debug of jsvc.  
    #-debug /  
    if test $? -eq 0  
    then  
        exit 0  
    else  
        echo "Failed to start tomcat6"  
        exit 1  
    fi  
    ;;  
  
  stop)  
    #  
    # Stop Tomcat  
    #  
    $DAEMON_HOME/bin/jsvc /  
    -stop /  
    -pidfile $PID_FILE /  
    org.apache.catalina.startup.Bootstrap  
    if test $? -eq 0  
    then  
        echo "tomcat6 stopped"  
        exit 0  
    else  
        echo "Failed to stop tomcat6"  
        exit 1  
    fi  
    ;;  
  
  restart)  
    #  
    # Restart Tomcat  
    #  
    if $0 stop  
    then  
        $0 start  
    else  
        echo "Failed to stop running server, so refusing to try to start."  
    fi  
    exit 0  
    ;;  
  
  
  *)  
    echo "Usage: tomcat6 start|stop|restart"  
    exit 1;;  
esac  

 

在以的脚本里面指定了TOMCAT_USER,jsvc将先以特权身份启动tomcat,随后切换到指定的用户,这样可以使tomcat以非特权身份监听需要特权的端口。

将脚本复制到/etc/init.d,改名为tomcat6,然后执行

update-rc.d tomcat6 defaults  

 配置完成以后,tomcat就可以以非特权用户作为daemon运行了。

 

分享到:
评论

相关推荐

    Linux中将Tomcat添加到守护进程

    在Linux环境中,为了确保应用程序如Tomcat能够随系统自动启动并作为守护进程运行,需要进行一系列的配置步骤。本文将详细介绍如何将Tomcat添加到Linux的守护进程,并处理"Invalid user name 'tomcat' specified"的...

    Linux版本tomcat8-8.5.35.tar.gz

    Tomcat的核心组件包括Catalina(Servlet容器)、Jasper(JSP引擎)、 Coyote(HTTP/1.1协议处理器)以及Commons Daemon(用于作为服务运行Tomcat)。在"apache-tomcat-8.5.35"目录下,你会找到以下几个关键目录: 1...

    linux的tomcat7.0安装包

    Linux上的Apache Tomcat 7.0安装教程 Apache Tomcat是一款开源、免费的Java Servlet容器,用于部署Java Web应用程序。在Linux系统上安装Tomcat 7.0是开发者和系统管理员进行Java应用服务的重要步骤。以下是一份详细...

    Linux(CentOS7)安装Tomcat与设置Tomcat为开机启动项(tomcat8为例)

    例如,下载Linux环境下的tar.gz压缩包,如`apache-tomcat-8.5.47.tar.gz`。 **安装步骤:** 1. **下载Tomcat**:将下载的压缩包放在指定目录,例如`/usr/local/tomcat`。 2. **解压Tomcat**:进入该目录,然后...

    linux版tomcat,附带安装教程

    Linux版Tomcat是Apache软件基金会开发的开源Java应用服务器,主要用作Servlet和JSP的运行平台。在Linux操作系统上部署Tomcat可以让开发者在稳定、高效且安全的环境中运行Java Web应用程序。本教程将详细介绍如何在...

    linux环境下tomcat的启动、关闭及常见问题

    在Linux环境下,Apache Tomcat是一款广泛使用的开源Java应用服务器,主要负责运行Servlet和JSP应用程序。本篇文章将详细探讨如何在Linux系统中启动、关闭Tomcat以及处理常见问题。 一、Tomcat的安装与配置 在Linux...

    tomcat6在Linux下的安装配置

    在Linux环境下部署Tomcat6是一项常见的任务,尤其对于那些需要运行Java Web应用程序的开发者和系统管理员来说。Tomcat6是一个轻量级的应用服务器,主要用来运行Servlet和JSP应用。以下是一个详细的步骤指南,帮助你...

    linux安装jdk、tomcat、把tomcat配置成服务

    本文将详细介绍如何在Linux环境下安装JDK、Tomcat,并将其配置为系统服务。 首先,我们需要下载JDK和Tomcat的安装文件。通常,JDK的安装文件为.bin格式,而Tomcat则是.tar.gz压缩包。将这两个文件复制到 `/opt` ...

    linux下非root用户运行tomcat

    在Linux环境中,为了安全考虑,一般不建议使用root用户来运行像Tomcat这样的...遵循上述步骤,您可以安全地在Linux环境下运行Tomcat服务,同时保持系统的整体安全性。记得定期更新和维护系统,以防止潜在的安全威胁。

    tomcatlinux包

    【标题】"Tomcat在Linux环境下的安装与配置" 【内容】 Tomcat是一款广泛应用的开源Web服务器和Java Servlet容器,由Apache软件基金会的Jakarta项目维护。本篇将详细介绍如何在Linux环境下安装并配置Tomcat 9.0.0....

    使用JavaServiceWrapper设置tomcat作为linux服务并且开机自动启动.pdf

    ### 使用Java Service Wrapper设置Tomcat作为Linux服务并实现开机自动启动 #### 一、概述 在部署基于Java的应用服务器时,通常需要将Tomcat配置为系统服务,以便于管理和维护。传统的做法是通过编写shell脚本来...

    Linux_tomcat

    在IT行业中,Linux操作系统是许多服务器的首选平台,而Tomcat作为一款开源的Java Servlet容器,广泛用于部署Java Web应用程序。本知识点将详细介绍如何在Linux系统下安装和配置Apache Tomcat 8.5.9。 首先,让我们...

    jdk和tomcat的linux版本

    总结,JDK1.7和Tomcat8在Linux环境下提供了基础的Java应用开发和运行平台。正确配置和优化这两个组件是构建高效Java Web服务器的关键步骤。在实践中,不断学习和掌握新的Java版本和Tomcat版本特性,以及相关的运维...

    Linux 下安装mysql , jdk , tomcat ,redis

    以上就是Linux下安装mysql, jdk, tomcat, redis涉及的知识点,每一个步骤都需要按照正确的顺序和方法操作,以确保软件能够正确安装和高效运行。通过本篇的说明,读者应该能够掌握在CentOS 6.7环境下搭建这样一个开发...

    linux下的tomcat搭建.zip

    在Linux环境下搭建Apache Tomcat服务器是一项常见的任务,尤其对于那些从事Java Web开发或者需要运行Java应用程序的用户来说。Apache Tomcat是一款开源的Java Servlet容器,它实现了Java EE的Web部分,包括Servlet、...

    apache-tomcat-6.0.35.zip

    在Linux环境下安装和配置Apache Tomcat 6.0.35 需要以下步骤: 1. **下载**:从官方网站或者可靠的源下载适合Linux系统的apache-tomcat-6.0.35.zip文件,并将其解压到合适的目录,例如 `/opt` 或者 `~`. 2. **环境...

    tomcat启动的错误

    3. **配置`context.xml`文件**:对于需要全局共享的资源,可以在Tomcat的`conf`目录下的`context.xml`文件中添加资源定义,例如: ```xml type="javax.sql.DataSource" maxActive="100" maxIdle="30" maxWait=...

    Linux操作系统下两种自动启动Tomcat的方法

    这种方法涉及将Tomcat作为守护进程(daemon)运行,这需要用到Apache Commons Daemon项目中的`jsvc`工具。在Tomcat的`bin`目录中,通常有一个名为`jsvc.tar.gz`的文件,解压并安装`jsvc`: ```bash tar zxvf jsvc....

    apache-tomcat-9.0.27

    8. **temp目录**:Tomcat在运行时生成的临时文件会存储在这个目录下,如JSP编译后的类文件。 9. **BUILDING.txt**:这个文件提供了构建Tomcat源代码的指南,对于开发者来说很有用。 10. **work目录**:这个目录...

Global site tag (gtag.js) - Google Analytics