美文网首页
Linux简单添加tomcat服务

Linux简单添加tomcat服务

作者: AbyssLich | 来源:发表于2019-01-14 13:23 被阅读0次

    先上脚本文件
    文件名tomcat8081

    #!/bin/bash
    ### BEGIN INIT INFO
    # Provides:          tomcat
    # Required-Start:    $remote_fs $syslog
    # Required-Stop:     $remote_fs $syslog
    # Default-Start:     2 3 4 5
    # Default-Stop:      0 1 6
    # Short-Description: tomcat-server daemon
    # Description:       tomcat-server daemon
    ### END INIT INFO
    #
    # chkconfig: - 95 15
    # description: Tomcat start/stop/status script
    
    #Location of JAVA_HOME (bin files)
    export JAVA_HOME=/usr/java/jdk1.8.0_172
    
    #Add Java binary files to PATH
    export PATH=$JAVA_HOME/bin:$PATH
    
    #CATALINA_HOME is the location of the configuration files of this instance of Tomcat
    CATALINA_HOME=/usr/local/tomcat8081
    
    #TOMCAT_USER is the default user of tomcat
    TOMCAT_USER=www
    
    #TOMCAT_USAGE is the message if this script is called without any options
    TOMCAT_USAGE="Usage: $0 {\e[00;32mstart\e[00m|\e[00;31mstop\e[00m|\e[00;32mstatus\e[00m|\e[00;31mrestart\e[00m}"
    
    #SHUTDOWN_WAIT is wait time in seconds for java proccess to stop
    SHUTDOWN_WAIT=20
    
    tomcat_pid() {
      echo `ps -ef | grep $CATALINA_HOME/ | grep -v grep | tr -s " "|cut -d" " -f2`
    }
    
    start() {
      pid=$(tomcat_pid)
      if [ -n "$pid" ]; then
        echo -e "\e[00;31mTomcat is already running (pid: $pid)\e[00m"
      else
        echo -e "\e[00;32mStarting tomcat\e[00m"
        if [ `user_exists $TOMCAT_USER` = "1" ]; then
          su $TOMCAT_USER -c $CATALINA_HOME/bin/startup.sh
        else
          $CATALINA_HOME/bin/startup.sh
        fi
        status
      fi
      return 0
    }
    
    logs() {
        tail -f $CATALINA_HOME/logs/catalina.out
    }
    
    status() {
      pid=$(tomcat_pid)
      if [ -n "$pid" ]; then
        echo -e "\e[00;32mTomcat is running with pid: $pid\e[00m"
      else
        echo -e "\e[00;31mTomcat is not running\e[00m"
      fi
    }
    
    stop() {
      pid=$(tomcat_pid)
      if [ -n "$pid" ]; then
        echo -e "\e[00;31mStoping Tomcat\e[00m"
        $CATALINA_HOME/bin/shutdown.sh
    
        let kwait=$SHUTDOWN_WAIT
        count=0;
        until [ `ps -p $pid | grep -c $pid` = '0' ] || [ $count -gt $kwait ]
        do
          echo -n -e "\e[00;31mwaiting for processes to exit\e[00m\n";
          sleep 1
          let count=$count+1;
        done
    
        if [ $count -gt $kwait ]; then
          echo -n -e "\n\e[00;31mkilling processes which didn't stop after $SHUTDOWN_WAIT seconds\e[00m"
          kill -9 $pid
        fi
      else
        echo -e "\e[00;31mTomcat is not running\e[00m"
      fi
    
      return 0
    }
    
    user_exists() {
      if id -u $1 >/dev/null 2>&1; then
        echo "1"
      else
        echo "0"
      fi
    }
    
    case $1 in
      start)
        start
        logs
        ;;
      stop)
        stop
        ;;
      restart)
        stop
        start
        logs
        ;;
      status)
        status
        ;;
      logs)
        logs
        ;;
      *)
        echo -e $TOMCAT_USAGE
        ;;
    esac
    exit 0
    
    

    将文件放到 /etc/init.d/ 下
    运行命令

    sudo chmod +x /etc/init.d/tomcat8081
    

    这样就可以在 shell 中直接运行下面的命令

    service tomcat8081 start
    service tomcat8081 stop
    service tomcat8081 restart
    service tomcat8081 status
    service tomcat8081 logs
    

    遇到的问题

    日志文件权限问题

    报错如下

    Tomcat is not running
    Starting tomcat
    Using CATALINA_BASE:   /opt/tomcat/tomcat8081
    Using CATALINA_HOME:   /opt/tomcat/tomcat8081
    Using CATALINA_TMPDIR: /opt/tomcat/tomcat8081/temp
    Using JRE_HOME:        /usr/java/jdk1.8.0_172
    Using CLASSPATH:       /opt/tomcat/tomcat8081/bin/bootstrap.jar:/opt/tomcat/tomcat8081/bin/tomcat-juli.jar
    touch: cannot touch `/opt/tomcat/tomcat8081/logs/catalina.out': Permission denied
    /opt/tomcat/tomcat8081/bin/catalina.sh: line 439: /opt/tomcat/tomcat8081/logs/catalina.out: Permission denied
    Tomcat is not running
    Jan 14, 2019 12:01:39 PM org.apache.catalina.startup.Catalina load
    INFO: Initialization processed in 939 ms
    Jan 14, 2019 12:01:39 PM org.apache.catalina.core.StandardService startInternal
    INFO: Starting service Catalina
    Jan 14, 2019 12:01:39 PM org.apache.catalina.core.StandardEngine startInternal
    INFO: Starting Servlet Engine: Apache Tomcat/7.0.92
    Jan 14, 2019 12:01:39 PM org.apache.coyote.AbstractProtocol start
    INFO: Starting ProtocolHandler ["http-apr-8080"]
    Jan 14, 2019 12:01:39 PM org.apache.catalina.startup.Catalina start
    INFO: Server startup in 411 ms
    

    提示没有/opt/tomcat/tomcat8081/logs/catalina.out的权限
    进入logs目录chmod 777 *
    同理配置了conf的权限

    相关文章

      网友评论

          本文标题:Linux简单添加tomcat服务

          本文链接:https://www.haomeiwen.com/subject/scvddqtx.html