운영중인 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 |