서버 셋팅후 표준 시간대는 항상 확인 해야 한다. 그렇지 않으면 서비스 운영상에 의도치 않은 결과를 맞이할 확률이 매우 높다.
우선 현재 자신의 서버의 표준 시간대를 확인 해보자.
터미널에서 date 라고 치기만 하면된다.
[ec2-user@xxx.xxx.xxx.xxx ~]$ date2016. 08. 15. (월) 14:03:47 EDT
현재 시간은 8월 15일 광복절이다. (대한독립만세~)
그러나 이글을 쓰는 시점은 15일을 넘겨 16일 새벽이다. 그런데 왜 내 서버는 아직도 15일인가.
서버 표준 시간대가 우리나라로 설정이 되어있지 않기 때문이다.
날짜 뒤에 3글자 'EDT' 가 현재 서버 시간대를 나타낸다.
EDT 는 Eastern Daylight Time Zone 이다. 이 표준 시간대는 미국 동부 쪽의 시간을 나타낸다.
국내를 대상으로 하는 서비스라면 국내 표준 시간대로 맞추어 주는 것이 좋다.
EC2 인스턴스 서버 시간대를 맞추어주는 방법은 아마존에서 제공하는 문서에도 설명이 잘 되어있다.
EC2 Amazone Linux 인스턴스를 사용하는 사람은 아래 링크에 설명된 대로 따라하면 쉽게 표준 시간대를 변경할 수 있다.
http://docs.aws.amazon.com/ko_kr/AWSEC2/latest/UserGuide/set-time.html#change_time_zone
그런데 나의 경우에는 Redhat7 배포판인데 위의 설명과 좀 다른 부분이 있다.
/etc/sysconfig/ 안에 clock 이라는 파일이 없기 때문이다. Redhat7 의 경우에는 timedatectl 이라는 유틸리티를 사용하면 쉽게 바꿀 수 있다. (timedatectl 에 대한 자세한 설명은 아래 링크 참조)
[ec2-user@xxx.xxx.xxx.xxx ~]$ sudo timedatectl set-timezone Asia/Seoul[ec2-user@xxx.xxx.xxx.xxx ~]$ date2016. 08. 16. (화) 03:06:53 KST
timedatectl 을 이용하여 타임존을 Asia/Seoul 로 설정한 후에 date 로 현재 시간을 확인해보니 정상적으로 변경되었음을 확인할 수 있다.
만약 서울이 아닌 다른 나라의 시간대로 셋팅 하고 싶을때에는 Asia/Seoul 부문을 해당 지역으로 바꾸어주기만 하면된다. 그렇다고 아무 문자나 써서는 안된다. 이미 존재하는 시간대 데이터 파일명을 지정해 주어야 한다. 그럼 시간대 데이터 파일은 어디에서 확인할 수 있을까?
[ec2-user@xxx.xxx.xxx.xxx ~]$ ls /usr/share/zoneinfoAfrica Atlantic Canada EST5EDT GB GMT0 Indian Kwajalein Mexico PST8PDT ROK UTC iso3166.tab....(생략)
ls -al 명령어를 통해서 보게되면 어떤건 파일이고 어떤건 디렉토리로 되어있다. Seoul 은 처음 목록에서 보여지지 않고 Asia 폴더에 들어가면 찾을 수 있다.
추가로 Timezone 변경하는 다른 방법.
[ec2-user@xxx.xxx.xxx.xxx ~]$ sudo rm /etc/localtime [ec2-user@xxx.xxx.xxx.xxx ~]$ sudo ln -s /usr/share/zoneinfo/Asia/Seoul /etc/localtime
기존에 이미 존재하는 localtime 파일이 있기 때문에 이를 삭제한 후 서버의 로컬 타임이 서울 시간대를 참조하도록 하는 심볼릭 링크를 만들어 내는 명령어이다. 위의 timedatectl 은 이러한 심볼링 링크를 자동 관리한다.
참조문서 :
https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/System_Administrators_Guide/chap-Configuring_the_Date_and_Time.html
댓글 없음 :
댓글 쓰기