Linux7 非root 使用tomcat8

  1. 系统环境
    cat /etc/redhat-release
    CentOS Linux release 7.2.1511 (Core)
  2. tomcat安装部署
    参考文档:
    (1)基于Centos6的tomcat部署
    (2)想更深了解tomcat启动原理,请参考Tomcat启动脚本catalina.sh---解读
    (3)配置tomcat
  3. 为什么使用非root账户
    root用户启动tomcat有一个严重的问题,那就是tomcat具有root权限。
    这意味着你的任何一个页面脚本(html/js)都具有root权限,所以可以轻易地用页面脚本 修改整个硬盘里的文件!所以最好不要使用root启动tomcat。
  4. 非root账户运行tomcat
    #创建一个普通账户
    useradd -d /data/tuser -m tuser
    #编译安装tomcat服务守护程序
    cd /usr/local/tomcat8/bin
    #解压
    tar vzxf commons-daemon-native.tar.gz
    cd commons-daemon-1.1.0-native-src/unix/
    #安装前的配置及校验
    ./configure
    #指定JDK目录
    ##说明:我这里已经定义了JDK的目录了,信息如下:
    cat /etc/profile
    ##java path
    export JAVA_HOME=/usr/local/java
    export PATH=$JAVA_HOME/bin:$PATH
    ##tomcat path
    export CATALINA_HOME=/usr/local/tomcat8
    export PATH=$JAVA_HOME/bin:$CATALINA_HOME/bin:$PATH
    #如果出现如下错误提示,说明未设置JAVA_HOME变量
    *** Java compilation tools ***
    checking for JDK location... configure: error: Java Home not defined. Rerun with --with-java=... parameter
    #如果看到以下信息,就可以编译/安装了
    *** All done ***
    Now you can issue "make"
    #编译和安装
    make
    #执行make后会生成一个jsvc文件,将其复制到tomcat的bin目录
    cp jsvc /usr/local/tomcat8/bin
    #修改启动脚本
    vim /usr/local/tomcat8/bin/daemon.sh
    找到如下内容
    test ".$TOMCAT_USER" = . && TOMCAT_USER=tomcat
    #Set JAVA_HOME to working JDK or JRE
    #JAVA_HOME=/opt/jdk-1.6.0.22
    修改TOMCAT_USER=tomcat,"tomcat"为运行tomcat的用户,本文创建的用户为tuser,即tomcat更改为tuser。
    去除JAVA_HOME前的注释(即“#”号),并设置为JDK的所在目录(JAVA_HOME=/usr/local/java)。
    #更改文件所有者
    chown -R tuser:tuser /usr/local/tomcat8
    #赋予用户执行权
    chmod a+x /usr/loacl/tomcat8/bin/daemon.sh
  5. tomcat启动命令
    #后台运行
    /usr/local/tomcat8/bin/daemon.sh  start
    或daemon.sh  start
    #前台运行
    /usr/local/tomcat8/bin/daemon.sh   run
    或daemon.sh run
    #停止
    /usr/local/tomcat8/bin/daemon.sh   stop
    或daemon.sh stop