[Issue]AWS EC2 서버와 로컬의 Time Zone이 맞지 않을 때

god1hyuk·2022년 7월 28일
1

Trouble Shooting

목록 보기
1/6

ASW EC2로 배포한 Ubuntu 서버와 로컬의 시간대가 맞지 않는다.

항해99 3주차 Spring 미션 : CRUD 구현

  • Issue

    CRUD 기능에서 GET 방식으로 전체 게시물을 조회하게 되면 timestamped의 modifiedAt(게시물 수정된 시간)을 기준으로 내림차순 정렬이 후 응답처리 되어 출력이 되어야 한다. 로컬 서버에서는 문제 없이 작동하나, 배포한 서버에서 새로 추가된 게시물은 기존의 DB 정보보다 위로 추가 되어야 하는데 기존 DB 정보의 아래로 추가 된다.

처음에는 작성한 코드의 문제라 생각하여 몇번이고 소스를 검토하였다. 로컬 서버에서 다시 테스트를 해보았을 때, 아무런 문제가 없었는데 배포 서버에서는 계속 같은 이슈가 반복 되었다. GET요청의 응답 받은 결과를 유심히 오랜 시간동안 뚫어져라 보았다.

이런, 배포 서버에 추가한 최신 게시물의 createdAt(게시물 작성시간), modifiedAt(게시물 수정된 시간)이 현재 시간과 맞지 않았다. 당시 시각 23시경. 배포 서버에 등록된 시간은 14시경 정도 되었던 것 같다. 도대체 시간이 왜 이렇게 출력이 될까 한참을 고민하고 구글링 해보고 매니저님께도 여쭤 보았다. 매니저님께서 AWS 서버가 현재 한국으로 맞춰져 있는지 여쭤 보셨고 설정은 서울로 선택되어 있었다. 그래도 서버 컴퓨터의 시간 문제일 수 있다며 말씀 하셨고 터미널에서 Ubuntu 서버 컴퓨터로 접근해 로컬 시간을 확인해보았다.

  • Mac의 경우 terminal / Windows 경우 shell 또는 gitbash
ssh -i [키페어 파일 드래그/키페어 파일 절대경로] ubuntu@[AWS 퍼블릭 IPv4 주소]

키 페어(keypair) : AWS 서버 구매 또는 등록 시, 발급받은 키페어
AWS 퍼블릭 IPv4 주소 : AWS EC2 인스턴스 생성 후, 지정되는 IPv4 주소

  • AWS 퍼블릭 IPv4 주소

Ubuntu 서버 컴퓨터로 접근 성공하였다. 접근이 확인 되었다면 date 명령어를 입력한다.

ubuntu@ip-000-00-00-00:~$ date

현재 로컬 시간과 다른 것을 알 수 있다.

EC2 인스턴스 생성 시, 서울로 설정을 했다고 해도 Ubuntu 서버 컴퓨터의 초기 시간은 UTC(Universal Time Coordinated, 협정 세계 시)이다. 한국시간(KST)는 UCT보다 9시간 빠르다. 즉, KST = UCT + 9 이다. Ubuntu에 초기로 세팅 된 시간에서 한국시간으로 변환해주어야 한다.

ubuntu@ip-000-00-00-00:~$ sudo dpkg-reconfigure tzdata

sudo dpkg-reconfigure tzdata 명령어를 실행하면

이러한 창이 팝업된다. Asia를 선택하여 enter키를 누르고

Seoul을 선택하여 enter키를 누르면 Ubuntu 서버 컴퓨터의 시간이 한국시간으로 변경된다.

다시 한번 date 명령어를 실행해보면

ubuntu@ip-000-00-00-00:~$ date
Thu Jul 28 13:44:47 KST 2022

이렇게 한국시간으로 변경 된 것을 확인할 수 있다.

이미 서버가 실행중이라면 서버를 종료 했다가 다시 실행하면 DB의 "createdAt", "modifiedAt"이 한국시간으로 제대로 출력 되는 것을 확인할 수 있다.

만약 nuhup으로 서버를 실행 중이라면 서버를 강제종료했다가 다시 실행하면 된다.

0개의 댓글