본문 바로가기
programming/프로젝트

[tomcat error] Jenkins 스크립트를 통한 tomcat 실행 시 권한 충돌

by yhsim98 2022. 8. 17.

운영중인 KOIN에서 상상못한 에러가 터져 정말 새벽까지 고생하다 결국 멘토님의 도움덕에 해결했습니다. 

권한 문제라니...

시나리오

  • tomcat의 reloadable를 통한 메모리 유수를 방지하기 위해 reloadable 를 false 로 변경 
  • tomcat의 reloadbale=false로 변경으로 인해, tomcat 변경감지 기능이 작동하지 않아 jenkins 배포 시 war 파일 압축해제가 되지 않는 상황이 발생

  • 해결을 위해 Jenkins에 tomcat을 종료 후, 재시작하는 스크립트 추가
/usr/local/apache-tomcat/bin/shutdown.sh
sleep 2s
/usr/local/apache-tomcat/bin/startup.sh
  • jenkins를 통해 배포 시, tomcat 이 종료 후 다시 startup 되지 않는 상황이 발생

 

문제 원인

  • jenkins를 통한 스크립트 실행은 유저 tomcat 으로 실행
  • production tomcat 에서, 로그는 root 권한, 실행은 유저 tomcat 권한으로 설정 되어있었음
    • 누군가의 레거시입니다ㅋㅋ
  • 유저 tomcat 권한으로 tomcat 실행 시, root 권한인 로그파일을 수정할 수 없어 권한 충돌로 인한 톰켓 중지  




처리 방안

  • tomcat 강제 종료
  • apache-tomcat 폴더 전체의 권한을 유저 tomcat으로 변경

  • tomcat 재기동



예방책

  • tomcat의 권한이 일관적이지 않아 발생한 문제
  • 유저 tomcat으로 전체 권한 변경을 통해 근본적인 문제 해결


후기

jenkins에서 직접 tomcat을 제어하는 것은 바람직하지 않다는 피드백을 받았습니다.

tomcat이 있는 서버에 배포 스크립트를 추가 후 jenkins 에서는 해당 스크립트를 실행하는 방향으로 가는 것이 좋다고 하네요. 

 

'programming > 프로젝트' 카테고리의 다른 글

Mybatis 상속 관계 매핑  (0) 2022.08.22
[Error] Spring3 에서 bean 생성자 주입 문제  (0) 2022.08.21
Koin stage 인프라 구성  (0) 2022.08.04
KOIN 프로젝트 시작  (0) 2022.08.02
회고  (0) 2022.07.13