2023.08 ver
1. EC2 인스턴스 생성하기
EC2 : Elastic Compute Cloud (C가 2개 있어서 C2). AWS에서 제공하는 성능, 용량 등을 유동적으로 사용할 수 있는 서버.
AWS 프리 티어 설명
- t2.micro 만 가능
- 월 750 시간 제한. 초과시 비용 청구 --> t2.micro 1대만 사용하면 24시간 사용 가능 (24h x 31 days = 744 h)
1) 리전 설정
서울로 설정한다.
2) ec2 인스턴스 시작
화면 상단의 검색창에서 'ec2' 를 검색하면 EC2 대시보드가 나온다.
인스턴스 시작 버튼을 누른다.
인스턴스 = EC2 서비스에 생성된 가상머신
3) AMI(아마존 머신 이미지) 선택하기.
AMI : EC2 인스턴스를 시작하는데 필요한 정보를 이미지로 만들어 둔 것.
Amazon Linux AMI 선택.
--> 선택 이유 : AWS의 각종 서비스와의 상성이 좋고, 아마존의 독자적인 레포지토리를 사용해서 yum이 빠르다.
프리 티어인 것 중에 하나 선택한다.
4) 인스턴스 유형 선택 - t2.micro 선택.
T 시리즈는 다른 시리즈와 다르게 CPU 크레딧 개념 사용. 크레딧을 모구 사용하면 더이상 EC2 사용 불가.(트래픽 많으면 T 말고 다른 시리즈 사용하기도 함)
5) 스토리지 선택 - 프리티어는 30GB까지 가능
6) 태그 추가하기.
태그 : 웹 콘솔에서 표기될 네임 태그. EC2 인스턴스에 이름을 붙이는 것.
7) 보안 그룹 설정하기
'원본' 칸을 빈칸으로 두면 오류가 난다. 0.0.0.0/0 으로 설정한다.
8) 키 페어 로그인 설정하기
키 페어 생성 버튼을 누르면 pem 키(비밀키)가 다운로드 된다.
인스턴스는 지정된 pem키와 매칭되는 공개키를 가지고 있고, 해당 pem키 이외에는 접근을 허용하지 않는다.
pem키는 유출되면 안되며, 이후에 EC2 서버에 접속할 때 사용하는 파일이므로 잘 관리해야 한다.
9) 고급 세부 정보는 그대로 둔다.
10) 인스턴스 시작하기
인스턴스 시작 버튼을 눌러도 작동되지 않는다면
혹시 잘못 입력한 것이 있는지 확인하자!
별도로 팝업이 안뜨고 붉은 칸으로만 나타날 수 있다...불친절ㅠ
11) 고정 IP 할당 (EIP, Elastic IP)
인스턴스는 1개의 서버이기에 IP가 존재하고, 따로 설정을 안 했다면 인스턴스를 재시작하면 새 IP가 할당된다.
왼쪽 메뉴에서 '탄력적 IP'로 들어가서 '탄력적 IP 주소 할당' - '할당' 을 순서대로 누른다.
방금 생성한 탄력적 IP 주소와 EC2 주소를 연결한다.
인스턴스와 프라이빗 IP주소를 선택한다.
생성한 탄력적 IP는 EC2 서버에 연결하지 않으면 비용이 발생한다.
더이상 사용할 인스턴스가 없게 되면 탄력적 IP를 삭제해야 한다.
2. EC2 서버에 접속하기 (윈도우 - putty)
putty 클라이언트를 설치해서 사용한다. https://www.putty.org/
다운받은 puttygen.exe 파일을 실행한다.
putty는 pem 키로 사용이 안돼서 pem 키를 ppk 파일로 변환해야 하는데, pemgen은 이 과정을 진행해준다.
상단 메뉴 'Conversions'- 'Import Key' 를 누르고 앞에서 다운받은 pem 키를 선택한다.
이후 Save private key 버튼을 누르면 ppk 파일이 생성된다.
putty.exe 파일을 실행해서 아래와 같이 작성한다.
Hostname : username@public_ip 로 등록한다. 여기선 ec2-user@탄력적IP주소 가 된다.
Port : ssh 접속 포트인 22를 입력한다.
Connection type : SSH 를 선택한다.
참고) saved sessions에 별명을 붙이고 Save를 눌러서 설정값을 기억할 수 있다. 나중에 사용할 땐 Load를 누르면 된다.
왼쪽 사이드바에서 Connection-SSH-Auth 를 누르고 오른쪽의 Browse를 눌러 아까 만들어둔 ppk 파일을 불러온다.
다시 왼쪽 메뉴에서 Sessions로 돌아온뒤에 save 버튼을 누른다.
그 뒤에 하단의 Open을 누르면 SSH 접속 알람이 뜨는데 'Accept'를 누른다.
SSH 접속 성공.
3. 설정
- Java 설치
- 타임존 변경 : (기본) 미국 시간 --> 한국 시간대
- hostname 변경 : ip 주소만으로 사람이 서버를 구분하기 어려우므로, 현재 서버의 별명을 설정한다.
1) Java 설치
- 설치 가능한 jdk 목록 확인하기
# yum list java*jdk-devel
jdk 목록이 쭉 나올 줄 알았으나 다른 결과가 나와서 찾아보니
Amazon Linux 2023 은 Amazon Corretto 를 유일한 JDK로 사용한다고 한다.
Amazon Linux는 Java의 오픈 소스 구현인 OpenJDK를 사용한다.
https://awswithatiq.com/how-to-install-java-on-amazon-linux-2023/
아래 명령어로 설치한다.
sudo dnf install java-17-amazon-corretto-devel
설치 확인
java -version
2) 타임존 변경하기
sudo rm /etc/localtime
sudo ln -s /usr/share/zoneinfo/Asia/Seoul /etc/localtime
date 명령어로 타임존이 UTC에서 KST로 변경되었는지 확인한다.
3) Hostname 변경
기존 상태 : IP가 노출됨
아래 명령어를 입력해서 편집 파일을 열고
sudo vim /etc/sysconfig/network
<Vim 명령어>
- 입력모드로 전환하기(하단에 --INSERT--나타남) : a, i, s, o
- 명령모드로 전환하기 : esc 키
- (명령모드에서) 저장하고 종료하기 : :wq
- (명령모드에서) 강제 종료 : :q!
- (명령모드에서) 저장하기 : :w
HOSTNAME=서비스명 으로 변경한다.
변경후 sudo reboot 로 서버를 재부팅한다.
아래와 같은 에러가 나타난다면 AWS 콘솔에서 인스턴스 재시작을 해본다.
그래도 반영이 안된다면
- Amazon Linux 2 / Amazon Linux 2023 : hostnamectl 명령으로 호스트 이름을 설정하여 원하는 시스템 호스트 이름을 반영한다.
sudo hostnamectl set-hostname 호스트네임
이후 서버 리부트를 진행한다.
/etc/hosts에 변경한 호스트네임을 등록한다.
sudo vim /etc/hosts
'127.0.0.1 호스트네임 ' 을 추가한다
`curl 호스트네임` 으로 잘 등록되었는지 확인한다.
Failed to connect to ... port 80 에러가 나타나면 잘 등록된 것. (아직 80포트로 실행된 서비스가 없어서)
호스트네임으로 잘 실행 된 것이다.
Reference
https://docs.aws.amazon.com/ko_kr/AWSEC2/latest/UserGuide/set-hostname.html