본문 바로가기
AWS

EC2 아마존 리눅스 2 서버 생성 시 해야 할 일 (CentOS 7)

by 지금 느낌 그대로 2021. 1. 19.

2020년 11월을 기준으로 AWS EC2 서비스에서 서버 생성 시 AMI(Amazone Machine Image) 목록에서 더 이상 Amazon Linux 1 AMI 을 지원하지 않습니다. 그래서 처음 AWS를 접하는 사람들이 프리티어 AMI 중 많이 이용하던 아마존 리눅스 1서버는 더이상 이용할 수가 없습니다.  아마존 리눅스 2 가 이 자리를 대체하고 있습니다. 하지만 아마존 리눅스2는 CentOS7 버전을 기반으로 하고 있어서 설정법에 조금의 차이가 있습니다.  그래서 이 글에서는 AWS EC2 인스턴스 생성 시 해야하는 설정들을 아마존 리눅스2 에 맞춰서 살펴보도록 하겠습니다.

 

더 이상 Amazone Linux 1 AMI를 지원하지 않는다. 2021년 1월 기준

 

아마존 리눅스 2 서버 생성 시 꼭 해야 할 설정

  • 배포하려는 어플리케이션에 사용된 언어 설치
    배포하려는 어플리케이션에 사용된 언어는 당연히 필수적으로 필요합니다. 이 글에서는 Java 8로 진행하겠습니다.
  • 타임존 변경
    처음 아마존 리눅스2 인스턴스 생성 시 서버의 시간은 미국 시간대입니다. 로그를 시간별로 본다거나 날짜를 기록한다거나 하는 모든 시간과 관련한 일들을 한국 기준으로 사용하기 위해서 한국시간대로 변경해주어야 합니다.
  • 호스트네임 변경
    현재 접속한 서버의 이름을 설정합니다. 처음 생성 시 기본적으로 IP로 표시하고 있는데, 나중에 여러 대의 서버가 작동하게 된다면 IP만으로 어떤 서버인지 구분하기 쉽지않기 때문에 서버에 별명을 부여한다고 생각하면 좋습니다.

 

프로그래밍 언어 설치 (Java 8)

혹시 다른 Java가 이미 설치되어 있는지 확인

우선 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

설치된 Java 버전 확인

타임존 변경

아마존 리눅스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 명령어로 타임존이 잘 변경되었는지 확인합니다.

 

date 명령어 실행 결과

 

호스트네임 변경

호스트네임을 변경하지 않을 시 기본적으로 IP만 노출되어서 서버가 여러개일 경우 명령 프롬프트에서 보이는 IP가 어떤 서비스의 IP인지 구분하기 쉽지 않습니다. 그래서 지금 이 서버가 어느 서비스인지 나타내는 별칭을 설정하도록 하겠습니다. 

 

먼저, 현재 호스트네임이 무엇으로 되어있는지 확인합니다.

hostname

 

다음과 같은 명령어를 실행하면 호스트 네임이 webservice로 변경됩니다.

hostnamectl set-hostname webservice

 

위 방법 말고 설정파일을 이용한 변경 방법도 있습니다. 먼저 hostname 설정파일을 vim 으로 편집모드로 들어갑니다.

vim /etc/hostname

 

입력 모드로 전환하여 내가 바꾸려는 호스트네임으로 변경하고 저장합니다.

이제 시스템을 재부팅해 준 후 다시 접속해서 변경사항을 확인합니다. 

 

 

마치며

호스트네임 변경까지해서 아마존 리눅스2 서버 생성후 해야하는 설정들에 대해서 알아보았습니다. 기본적인 내용인 만큼 어렵지는 않지만 잊고 지나칠 수도 있는 부분인 만큼 정리해두면 좋을 것 같습니다. 특히 타임존같은 경우 변경이 안되어 있더라도 쉽게 알아차리기 힘든 부분이라 잊지 않고 변경을 미리 해두는 것이 좋습니다.