회사업무중고민

tomcat - root가 아닌 tomcat 계정으로 실행

everydeveloper 2024. 5. 5. 23:15

tomcat - root가 아닌 tomcat 계정으로 실행

Web/WAS 2012. 4. 4. 17:37
 
root 가 아닌계정으로 톰캣을 실행시키려면 톰캣 자체가 tomcat을 돌리려는 계정의 홈디렉토리에 설치되어 있거나, tomcat 디렉토리와 그 하위 디렉토리를 전부 톰캣을 돌리려는 계정소유로 만들어야 합니다. 
Redhat 계열(한컴,와우)을 기준으로 tomcat 이라는 사용자명을 이용해 후자에 대해서 말씀드리겠습니다.
root 계정으로 로그인하여 
 
# chown -R tomcat.tomcat /usr/tomcat 
 
위와 같이하면 디렉토리 소유권이 모두 tomcat 계정에 속하게 됩니다. 
 
/etc/init.d/rc.local 파일의 맨 마지막에 다음 줄을 추가해 줍니다. 
 
su - tomcat -c "/usr/tomcat/bin/startup.sh" 
 
이걸로 됐습니다. 
 
지금까지 제가 본바로 대부분 사람들은 전자(tomcat 계정의 홈디렉토리 /home/tomcat)에다가 톰캣을 깔고 실행하는 것을 선호하는 것 같더군요
 
 
 
 
 
 
 
톰캣을 root 계정이 아닌 tomcat 계정으로 실행 하기
우선 tomcat 계정을 생성한다.
# useradd -M tomcat
 
톰캣 계정 설정 확인
계정을 생성하면 home 디렉토리가 /home/tomcat으로 설정 되며, 이를 CATALINA_HOME으로 변경해준다.
# grep tomcat /etc/passwd
tomcat:x:501:501::/usr/local/tomcat:/bin/bash
 
실행 스크립트 작성하기
# vi /etc/rc.d/init.d/tomcat 
 
아래 내용을 작성한다.
#!/bin/bash
# Startup script for the Tomcat Server
# chkconfig: 345 50 50
# description: Tomcat is a Web application server.
# processname: java
# directory : CATALINA_HOME=/usr/local/tomcat
. /etc/profile
case "$1" in
    start)
        echo "Starting tomcat: "
        su - tomcat -c $CATALINA_HOME/bin/startup.sh
        ;;
    stop)
        echo "Shutting down tomcat: "
        su - tomcat -c $CATALINA_HOME/bin/shutdown.sh
        ;;
    restart)
        echo "Restarting tomcat: "
        su - tomcat -c $CATALINA_HOME/bin/shutdown.sh; su - tomcat -c $CATALINA_HOME/bin/startup.sh
        ;;
    *)
        echo "Usage: service tomcat {start|stop|restart}"
        exit 1
esac
exit 0
소유권을 tomcat으로 변경
# chown tomcat:tomcat tomcat  
 
tomcat 스크립트에 실행권한 주기
#chmod 755 tomcat 
 
runlevel에 등록
chkconfig에서 add 될 수 있도록 스크립트에 "# chkconfig: 345 50 50" 를 추가한다.
#chkconfig --add tomcat
 
 
실제로 리부팅시 톰캣이 tomcat 계정으로 실행되는지 확인한다
# reboot 
 
톰캣 실행시 데몬실행이 tomcat으로 되어 있는지 확인한다.  tomcat이 아닌 root인경우는 잘못된 경우임
# ps -ef | grep tomcat
 
톰캣 프로세스 수동 시작 및 종료
# service tomcat start
# service tomcat stop
 
 
 
 
 
 
 
 
 
 
 
톰캣 계정 생성 - script 정상 실행을 위해 bash를 반드시 설정한다.
# useradd -d /home/tomcat -s /bin/bash tomcat
 
톰캣 디렉토리 소유권 설정
# chown -R tomcat.tomcat /usr/local/tomcat/
 
톰캣 실행 스크립트 작성 - CATALINA_HOME 변수가 /etc/profile에 설정되어 있다면 /etc/profile를 우선 적용되므로 중복되지 않도록 /etc/profile 변수는 주석처리한다.  
# vi /etc/rc.d/init.d/tomcat
#!/bin/bash
# Startup script for the Tomcat Server
 
. /etc/profile
CATALINA_HOME=/usr/local/tomcat
 
case "$1" in
    start)
        echo "Starting tomcat: "
        su - tomcat -c $CATALINA_HOME/bin/startup.sh
        ;;
    stop)
        echo "Shutting down tomcat: "
        su - tomcat -c $CATALINA_HOME/bin/shutdown.sh
        ;;
    restart)
        echo "Restarting tomcat: "
        su - tomcat -c $CATALINA_HOME/bin/shutdown.sh; su - tomcat -c $CATALINA_HOME/bin/startup.sh
        ;;
    *)
        echo "Usage: service tomcat {start|stop|restart}"
        exit 1
esac
exit 0
:wq!
 
 
톰캣 실행 스크립트 소유권 및 권한
# chown tomcat:tomcat /etc/rc.d/init.d/tomcat
# chmod 755 /etc/rc.d/init.d/tomcat
 
필요 시 runlevel에 등록
# chkconfig --add tomcat
 
톰캣 시작 및 종료
# service tomcat start
# service tomcat stop
 
 
출처: 
 [linuxism]
 
 
출처: 
 [linuxism]
 
 
출처: 
 [linuxism]
 
 
출처: 
 [linuxism]