티스토리 뷰
에러내용
localhost에서 new Date()로 시간을 받을시 한국시간으로 잘 받아 졌는데 EC2에 배포후에 RDS에 들어가는 값을보니 UTC시간으로 들어가져서 프로젝트에 방금 작성한 글이 갑자기 9시간전으로 떠서 UTC 시간으로 들어가고 있다고 생각이 들었다.
1. EC2 리눅스 시간을 UTC에서 KST로 바꾸기
EC2에 접속한뒤 date 명령어를 입력하고 KST가 안나오면 KST로 바꿔줘야한다.
- sudo rm /etc/local/time => 기존의 시간파일을 삭제한다.
- sudo ln -s /usr/share/zoneinfo/Asia/Seoul /etc/localtime => 한국시간 파일을 가져온다.
그런다음 date 입력하면 KST로 나오는 것을 볼 수 있다.
1번을 KST 한국시간으로 바꿨는데도 계속 데이터베이스에는 UTC시간으로 들어와서 데이터베이스 RDS 시간 문제 인줄 알고 RDS 시간을 바꿔보았다.
2. RDS Timezone 시간 바꾸기
RDS 페이지에서 파라미터 그룹에서 파라미터 그룹생성에 들어가준다.
default는 수정이 안되기 때문에 한개를 새로만들어서 타임존을 수정했다.
time_zone을 검색해준뒤 값을 Asia/Seoul로 바꿔주고 편집완료한다.
그리고 끝나는것이 아니라 RDS로 들어가서 새로만든 파라미터 그룹으로 바꿔줘야한다.
위에 두가지 방법을 다 해봤지만 계속 UTC시간이 들어와서 더 구글링을 해보던중에 리눅스 시간과 톰캣 시간을 따로라는 글을 봐서 톰캣시간도 KST로 바꿀 방법을 찾고있었는데 현재 스프링부트 내장톰캣을 사용하고 있어서 Bean 생명주기를 이용한 방법이 있어서 사용해봤다.
3. Bean 생명주기를 이용한 Timezone 자동설정
public class MyblogApplication {
public static void main(String[] args) {
SpringApplication.run(MyblogApplication.class, args);
}
@PostConstruct
public void started(){
TimeZone.setDefault(TimeZone.getTimeZone("Asia/Seoul"));
}
}
@PostConstruct는 Bean이 완전히 초기화 된 후, 단 한번만 호출되는 메서드 이다.
@SpringBootApplication 어노테이션이 부여된 Application Class에서 @PostConstruct가 부여된 메서드를 생성하고 위그림과 같이 입력을 하게되면, 애플리케이션 실행시 Timezone을 설정할 수 있다.
3번에 방법으로 EC2에 배포시에도 정상 시간이 나오게된 것 같다.
Reference
'에러로그' 카테고리의 다른 글
[에러로그] .gitignore (0) | 2021.04.14 |
---|---|
[에러로그] 애플리케이션 배포 및 에러 (0) | 2020.12.01 |
[에러로그] Github action ssh 접속 에러 (0) | 2020.11.30 |
[에러로그] SourceTree 로그인 에러 (0) | 2020.11.17 |