2020년 11월을 기준으로 AWS EC2 서비스에서 서버 생성 시 AMI(Amazone Machine Image) 목록에서 더 이상 Amazon Linux 1 AMI 을 지원하지 않습니다. 그래서 처음 AWS를 접하는 사람들이 프리티어 AMI 중 많이 이용하던 아마존 리눅스 1서버는 더이상 이용할 수가 없습니다. 아마존 리눅스 2 가 이 자리를 대체하고 있습니다. 하지만 아마존 리눅스2는 CentOS7 버전을 기반으로 하고 있어서 설정법에 조금의 차이가 있습니다. 그래서 이 글에서는 AWS EC2 인스턴스 생성 시 해야하는 설정들을 아마존 리눅스2 에 맞춰서 살펴보도록 하겠습니다.
아마존 리눅스 2 서버 생성 시 꼭 해야 할 설정
- 배포하려는 어플리케이션에 사용된 언어 설치
배포하려는 어플리케이션에 사용된 언어는 당연히 필수적으로 필요합니다. 이 글에서는 Java 8로 진행하겠습니다. - 타임존 변경
처음 아마존 리눅스2 인스턴스 생성 시 서버의 시간은 미국 시간대입니다. 로그를 시간별로 본다거나 날짜를 기록한다거나 하는 모든 시간과 관련한 일들을 한국 기준으로 사용하기 위해서 한국시간대로 변경해주어야 합니다. - 호스트네임 변경
현재 접속한 서버의 이름을 설정합니다. 처음 생성 시 기본적으로 IP로 표시하고 있는데, 나중에 여러 대의 서버가 작동하게 된다면 IP만으로 어떤 서버인지 구분하기 쉽지않기 때문에 서버에 별명을 부여한다고 생각하면 좋습니다.
프로그래밍 언어 설치 (Java 8)
우선 java -version 명령어를 통해 이미 설치되어 있는지 확인합니다. 기본적으로 아마존 리눅스2 서버에는 자바가 설치되어 있지는 않지만 확인하는 차원에서 실행해봅니다. 저는 이미 설치를 하고 난 후 캡쳐해서 1.8.0_265 버전이 설치되어 있다고 나옵니다만 설치되어 있지 않다면 command not found 와 같이 찾을 수 없다고 나옵니다.
Java가 설치되어 있지 않다는 걸 확인했다면 내가 어떤 버전의 자바를 설치할 수 있는지 확인을 해보아야 합니다. EC2에서 다음 명령어를 실행합니다.
sudo yum list | grep jdk
이 중에서 배포하려는 프로젝트에 사용된 버전과 일치하는 것을 확인합니다. 저의 경우에는 java-1.8.0-openjdk-devel.x86_64로 진행하겠습니다.
devel 버전과 일반 java-1.8.0-openjdk x86_64의 차이점은 일반 버전은 패키지로써 JRE를 포함하고 있고 java-1.8.0-openjdk-devel.x86_64은 자바 어플리케이션을 실행시키기 위한 개발과 관련된 부분들만 포함되어 있는 버전입니다. 필요에 따라 선택하시면 되겠습니다.
이제 설치를 진행하겠습니다.
sudo yum install -y java-1.8.0-openjdk-devel.x86_64
install y옵션은 설치 과정에서 묻는 질문들에 모두 yes를 자동으로 입력하도록 하는 옵션입니다. yum을 사용할 시 패키지를 설치할 때 설치하려는 프로그램에 필요한 의존성이 있는 다른 프로그램목록들 또한 자동으로 설치할 것인지 사용자에게 물어봅니다. 어차피 다 설치해야 하므로 -y옵션을 주었습니다.
현재 버전이 방금 설치한 Java 버전과 일치하는지 확인합니다.
java -version
타임존 변경
아마존 리눅스2 서버 뿐만 아니라 EC2서버의 기본 시간대는 UTC로 설정되어 있습니다. UTC는 세계 표준 시간으로 한국 시간과 약 9시간의 차이가 존재합니다. 타임존을 변경하지 않는다면 이 후 어플리케이션에서 현재 시간을 불러와 저장한다거나 하는 모든 기능 또한 UTC를 불러오므로 타임존을 한국의 시간대에 맞춰주어야 합니다.
먼저 사용가능한 타임존 중에 Asia/Seoul 이 있는 지 찾아봅니다.
timedatectl list-timezones | grep Seoul
Asia/Seoul이 있다면 다음 명령어를 실행해 타임존을 변경합니다.
timedatectl set-timezone Asia/Seoul
만약 수동으로 직접 변경해야 한다면 다음의 명령어를 차례로 실행하여 기존에 존재하는 /etc/localtime 파일을 삭제하고 설정합니다.
sudo rm /etc/localtime
sudo ln -s /usr/share/zoneinfo/Asia/Seoul /etc/localtime
그 다음 date 명령어로 타임존이 잘 변경되었는지 확인합니다.
호스트네임 변경
호스트네임을 변경하지 않을 시 기본적으로 IP만 노출되어서 서버가 여러개일 경우 명령 프롬프트에서 보이는 IP가 어떤 서비스의 IP인지 구분하기 쉽지 않습니다. 그래서 지금 이 서버가 어느 서비스인지 나타내는 별칭을 설정하도록 하겠습니다.
먼저, 현재 호스트네임이 무엇으로 되어있는지 확인합니다.
hostname
다음과 같은 명령어를 실행하면 호스트 네임이 webservice로 변경됩니다.
hostnamectl set-hostname webservice
위 방법 말고 설정파일을 이용한 변경 방법도 있습니다. 먼저 hostname 설정파일을 vim 으로 편집모드로 들어갑니다.
vim /etc/hostname
입력 모드로 전환하여 내가 바꾸려는 호스트네임으로 변경하고 저장합니다.
이제 시스템을 재부팅해 준 후 다시 접속해서 변경사항을 확인합니다.
마치며
호스트네임 변경까지해서 아마존 리눅스2 서버 생성후 해야하는 설정들에 대해서 알아보았습니다. 기본적인 내용인 만큼 어렵지는 않지만 잊고 지나칠 수도 있는 부분인 만큼 정리해두면 좋을 것 같습니다. 특히 타임존같은 경우 변경이 안되어 있더라도 쉽게 알아차리기 힘든 부분이라 잊지 않고 변경을 미리 해두는 것이 좋습니다.