출처1 : https://www.lesstif.com/pages/viewpage.action?pageId=6979609

출처2 : http://blog.nuriware.com/archives/239



2018/10/04 - [프로그램 자료/Cent OS] - [CentOS7] openJDK(zulu), tomcat 설정

2018/10/04 - [프로그램 자료/Cent OS] - [CentOS7] 톰캣 서비스 등록하기 systemctl 사용 (7버전 이상)




7.4버전에서 테스트하던 중 systemctl 하고 무엇이 안맞는지, 아니면 역시나 잘 몰라서 안돌아가는지 잘 안되었다.



서비스를 생성하기 위해 만드는 bash 파일에 pid 를 검색하는 부분이 있는데

리눅스에 대해 전무하다보니 좀 헤메었다. 

반디집으로 tgz 파일을 압축하거나 풀 수 있는데, 이 때 관리자 권한으로 실행해야 한다.


#현재 실행중인 프로세스명으로 검색

$ ps -ef | grep tomcat-myService

#현재 실행중인 프로세스명으로 검색하여 PID만 출력

$ ps -ef | grep tomcat-myService | awk '{print $2}'

#현재 실행중인 프로세스명으로 검색하여 PID만 출력(top 1?)

$ ps -eaf | grep processname=tomcat-myService | grep -v grep | awk '{print $2}'

#.bash 내에서 PID pid 할당

PID=`ps -eaf | grep processname=tomcat-myService | grep -v grep | awk '{print $2}'`


위와 같은 방법으로 pid를 변수에 등록하여 사용할 수 있다. 



# 서비스로 등록하기

# 심볼릭 링크 생성

$ ln -s /usr/local/myApp/myService.sh /etc/init.d/myService

# 실행 속성 권한 부여

$ chmod +x /etc/init.d/myService

# 서비스 등록

$ chkconfig --add myService

# 서비스 레벨 설정

$ chkconfig --level 12345 myService on

# 서비스 리스트 확인

$ chkconfig --list | grep myService

# 서비스 실행

$ service myService restart[start, stop]



내가 설정한 설정파일 전문

작업은 notepad++ 로 작업을 했는데 주의 사항이 좀 있더라.

인코딩은 UTF-8로 한다.(with BOM 아닙니다.)

줄의 끝문자는 UNIX형식으로 한다.(편집->줄의 끝문자(EOL) 변환->UNIX형식)


추가적으로 막상 배쉬파일을 서비스로 등록하고 실행하였을 때 동작하지 않고 오류가 발생하면 어디가 오류인지 파악하기 어렵더라.

그래서 배쉬파일만으로 실행했을 때 오류가 없는지 확인이 꼭 필요하다.

$ ./myService.sh start 

와 같은 방법으로 해당 파일을 테스트 해볼 수 있다. 


# 환경변수 설정, JAVA_HOME은 이곳에 와야 실행되더라?

$ vi /etc/profile

export JAVA_HOME=/usr/local/myApp/openjdk1.8_zulu



#!/bin/bash

#

# tomcat

#

# chkconfig: 345 96 30

# description: start and stop myService HTTP Server.

#

# processname: java

# pidfile: /var/run/tomcat.pid

#

### BEGIN INIT INFO

# Provides: tomcat

# Required-Start: $network $syslog

# Required-Stop: $network $syslog

# Should-Start: distcache

# Short-Description: start and stop myService HTTP Server

# Description: implementation for Spring boot.

## END INIT INFO

 

# Source function library.

. /etc/init.d/functions

 

## tomcat installation directory

PROCESS_NAME=tomcat-myService

 

# 환경변수 등록

CATALINA_HOME=/usr/local/myApp/tomcat9

CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$CATALINA_HOME/lib/jsp-api.jar:$CATALINA_HOME/lib/servlet-api.jar

PATH=$PATH:$JAVA_HOME/bin:$CATALINA_HOME/bin

 

# 톰캣 사용유저 설정

TOMCAT_USER=root

 

##  Path to the pid, runnning info file

pidfile=${PIDFILE-/var/run/${PROCESS_NAME}.pid};

lockfile=${LOCKFILE-/var/lock/subsys/${PROCESS_NAME}};

 

RETVAL=0

 

case "$1" in

    start)

        PID=`ps -eaf | grep processname=tomcat-myService | grep -v grep | awk '{print $2}'`

        if [[ (-n ${PID}) && ($PID -gt 0) ]]; then

                logger -s "${PROCESS_NAME}(pid ${PID}) is  already running."

                exit;

        fi

        if [ $CATALINA_HOME/bin/startup.sh ]; then

            logger -s "Starting Tomcat"

            /bin/su -l ${TOMCAT_USER} -c "$CATALINA_HOME/bin/startup.sh -Dprocessname=${PROCESS_NAME}"

            PID=`ps -eaf|grep processname=${PROCESS_NAME}|grep -v grep|awk '{print $2}'`

            RETVAL=$?

            [ $RETVAL = 0 ] && touch ${lockfile}

            [ $RETVAL = 0 ] && echo "${PID}" > ${pidfile}

        fi

        ;;

    stop)

        PID=`ps -eaf | grep processname=tomcat-myService | grep -v grep | awk '{print $2}'`

        ## if PID valid run shutdown.sh

        if [[ -z ${PID} ]];then

            logger -s "${PROCESS_NAME} is not running."

            exit;

        fi

 

        if [[ (${PID} -gt 0) && (-f $CATALINA_HOME/bin/shutdown.sh) ]];

        then

            logger -s "Stopping Tomcat"

            /bin/su -l ${TOMCAT_USER} -c "$CATALINA_HOME/bin/shutdown.sh"

            RETVAL=$?

            [ $RETVAL = 0 ] && rm -f ${lockfile}

            [ $RETVAL = 0 ] && rm -f ${pidfile}

        fi

        ;;

    status)

        status -p ${pidfile} ${PROCESS_NAME}

        RETVAL=$?

        ;;

    restart)

         $0 stop

         $0 start

         ;;

    version)

        if [ -f $CATALINA_HOME/bin/version.sh ];

          then

            logger -s "Display Tomcat Version"

            /bin/su -l ${TOMCAT_USER} -c "$CATALINA_HOME/bin/version.sh"

            RETVAL=$?

        fi

        ;;

    *)

        echo $"Usage: $0 {start|stop|restart|status|version}"

        exit 1

        ;;

esac

exit $RETVAL


















Posted by motolies
,