Spring Boot 웹 애플리케이션 마이그레이션: 이미지 파일 권한 문제 해결기
들어가며
웹 애플리케이션 마이그레이션 작업 중 흔히 겪을 수 있지만, 원인을 파악하기 쉽지 않은 문제가 있습니다. 바로 파일 권한 문제입니다. 이번 글에서는 제가 최근 겪은 이미지 파일 접근 권한 문제와 그 해결 과정을 공유하고자 합니다.
문제 상황
기존 웹사이트의 데이터를 새로운 Spring Boot 애플리케이션으로 마이그레이션하는 작업을 진행했습니다. 데이터베이스 마이그레이션은 성공적으로 완료되었고, 게시글에 첨부된 이미지 파일들도 새 서버의 적절한 위치로 모두 복사했습니다.
하지만 웹 애플리케이션을 실행하고 게시글을 열어보니 이미지가 전혀 표시되지 않는 문제가 발생했습니다. 개발자 도구로 확인해보니 이미지 요청에 대해 403 Forbidden 에러가 발생하고 있었습니다.
원인 분석
문제의 원인을 찾기 위해 다음과 같은 사항들을 확인했습니다:
- 파일 경로 확인
- 이미지 파일들이 지정된 경로에 정상적으로 존재
- 웹 애플리케이션의 설정된 리소스 경로도 정확함
- 파일 시스템 권한 확인
ls -l
명령어로 확인해보니 모든 이미지 파일의 소유자가 root로 되어있음- Spring Boot 애플리케이션은 tomcat 사용자로 실행 중
- tomcat 사용자가 root 소유의 파일에 접근할 수 없는 상황
원인은 FTP를 통해 파일을 전송할 때 root 계정으로 접속하여 전송했기 때문이었습니다. 이로 인해 모든 파일의 소유자가 root로 설정되었고, tomcat 사용자로 실행되는 웹 애플리케이션에서 해당 파일들에 접근할 수 없었던 것입니다.
해결 과정
문제를 해결하기 위해 다음과 같은 단계로 진행했습니다:
- 파일 소유권 변경
sudo chown -R tomcat:tomcat /path/to/image/directory
- 적절한 권한 설정
sudo chmod -R 755 /path/to/image/directory
이렇게 설정을 변경한 후 웹 애플리케이션을 재시작하니 모든 이미지가 정상적으로 표시되기 시작했습니다.
교훈 및 권장사항
이번 경험을 통해 얻은 교훈과 향후 유사한 마이그레이션 작업 시 권장사항을 정리해보았습니다:
- 마이그레이션 계획 수립 시 고려사항
- 파일 권한 관리 계획 포함
- 실행 환경의 사용자 권한 체계 사전 파악
- 파일 전송 방식과 권한 설정 방안 결정
- 파일 전송 시 권장사항
- 가능하면 애플리케이션 실행 사용자(예: tomcat)로 FTP 접속
- root로 전송이 불가피한 경우 전송 후 즉시 소유권 변경
- 권한 변경 후 반드시 테스트 수행
- 보안 고려사항
- 파일 접근 권한은 필요한 최소한으로 설정
- 웹에서 접근 가능한 디렉토리 경로 제한
- 실행 권한이 필요없는 파일은 실행 권한 제거
마치며
파일 권한 문제는 Linux/Unix 환경에서 흔히 발생할 수 있는 문제입니다. 특히 웹 애플리케이션 마이그레이션 과정에서는 더욱 주의가 필요합니다. 이 글이 비슷한 상황에 처한 다른 개발자들에게 도움이 되길 바랍니다.
참고자료
'IT' 카테고리의 다른 글
팀 프로젝트 회고 [Pet Hub] (0) | 2024.06.26 |
---|---|
팀 프로젝트 회고 [Smart Farm] (0) | 2024.06.26 |
MVC 패턴의 낯선 세계 (0) | 2024.04.10 |
객체지향의 5가지 원칙, SOLID에 대한 이해 (0) | 2024.04.02 |
CORS 에러에 대해 알아보자 (0) | 2024.04.01 |