- EC2 인스턴스 생성하기
- EC2 서버에 접속하기
- 아마존 리눅스 1 서버 생성 시 꼭 해야하는 설정들
- 외부에서 본인이 만든 서비스에 접근하려면 24시간 작동하는 서버 필수
- 집에 PC 24시간 구동
- 호스팅 서비스 이용
- 클라우드 서비스(AWS, AZURE, GCP) 이용
- 인터넷(클라우드)를 통해 서버, 스토리지, 데이터베이스, 네트워크, 소프트웨어, 모니터링 등 컴퓨팅 서비스 제공
→ 비용은 호스팅 서비스나 집 PC를 이용하는 것이 저렴하지만
특정 시간에만 트래픽이 몰릴 경우 유동적으로 사양을 늘릴 수 있는 클라우드 가 유리함
- 클라우드의 형태
- Infrastructure as a Service (IaaS)
- 기존 물리 장비를 미들웨어와 함께 묶어둔 추상화 서비스
- 가상머신, 스토리지, 네트워크, 운영체제 등의 IT 인프라 대여 - Platform as a Service (PaaS)
- IaaS를 한 번 더 추상화한 서비스 → 더 많은 기능 자동화
ex) AWS의 빈스톡 (무료사용계층(free tier)로 무중단 배포 불가), 헤로쿠 - Software as a Service (SaaS)
- 소프트웨어 서비스
ex) 구글 드라이브, 드랍박스, 와탭
< EC2 인스턴스 생성하기 >
EC2 = AWS에서 제공하는 성능, 용량 등을 유동적으로 사용할 수 있는 서버
1. AWS 공식 사이트에서 무료 계정 만들기 https://aws.amazon.com/ko/
클라우드 서비스 | 클라우드 컴퓨팅 솔루션| Amazon Web Services
aws.amazon.com
2. 서울로 리전 설정
리전 = AWS가 구동될 지역 (AWS는 도시별 클라우드 센터에 가상머신 구축)

3. EC2 인스턴스 생성

스크린 상단 검색창에 'EC2' 검색 > 인스턴스 시작
- 인스턴스 = EC2 서비스에 생성된 가상머신
3-1) 이름 및 태그 설정

여러 인스턴스가 있을 때 태그별로 구분하면 검색이나 그룹 짓기 편함
3-2) AMI(Amazon Machine Image) - Amazon Linux AMI 선택하기

AMI
= EC2 인스턴스를 시작하는 데 필요한 정보를 이미지로 만들어둔 것
→ 인스턴스라는 가상머신에 운영체제 등을 설치할 수 있도록 함
- Amazon Linux AMI를 선택한 이유?
- 지원 받기 쉽고, AWS의 각종 서비스와의 상성이 좋음
- 레드햇 베이스로, 레드햇 계열의 배포판을 다뤄본 사람일 수록 사용이 쉬움
- 아마존 독자적인 개발 레포지토리를 사용하고 있어 yum이 빠름
3-3) 인스턴스 유형 - t2.micro 선택

- 인스턴스 크기에 따라 정해진 비율로 CPU 크레딧 받음
( 크레딧 = CPU를 사용할 수 있는 포인트 개념 ) - 트래픽이 높을 경우 크레딧 적극적 사용 → 크레딧 모두 사용 시 EC2 사용 불가
⇒ 트래픽 높은 서비스는 T 시리즈(t2, t3../범용시리즈) 사용 △
3-4) 세부정보 구성
기업에서 사용할 경우 세세하게 다루지만, 혼자서 1대의 서버만 사용할 경우 별다른 과정 생략
3-5) 키 페어 설정 > pem 키 다운로드
- pem 키 (비밀 키)
= 서버와 클라이언트 간의 보안을 위해 사용되는 키 파일
- 인스턴스에 접근하기 위해서는 pem 키 필요
- 해당 pem키 외에는 접근 허용 X
- 일종의 마스터키 - 유출되거나 잃어버리면 안됨 ⚠️

3-6) 방화벽(보안 그룹) 설정
- 네트워크 설정 옆의 '편집' 버튼 > 보안 그룹 생성 > 보안 그룹 이름, 설명 설정 > 인바운드 보안 그룹 규칙 세 가지 추가

- 유형이 ssh, 포트범위가 22인 경우
= AWS EC2에 터미널로 접속할 경우
(ssh = 네트워크를 통해 안전하게 원격서버에 접속할 수 있는 프로토콜)
ㄴ pem키가 없을 경우 서버에 접속할 수 없기 때문에 편의상 전체오픈 (0.0.0.0/0,::/0)하는 경우 (모든 IP주소에서 서버에 접근 가능하도록 하는 경우) 발생
-> 이후 실수로 pem 키가 외부로 노출되면 누구나 서버에 접근이 가능해져 서버에서 가상화폐가 채굴되기도 함 (서버 자원 악용)
⇒ 보안 높이기 위해 pem 키 관리와 지정된 IP에서만 ssh 접속이 가능하도록 구성하기
→ 유형이 ssh, 포트범위가 22인 경우의 소스 유형을 ‘내 IP’로 설정
(8080은 전체 오픈해도 괜찮음)
3-6) 스토리지 (서버 용량) 선택

4. '인스턴스 시작' > 인스턴스 생성 완료!! ✅


➕ EIP (탄력적 IP) 할당
- 인스턴스 생성 시에 항상 새 IP를 할당 ( 같은 인스턴스를 중지 후 다시 시작할 때도 )
→ 매번 접속해야 하는 IP가 변경되므로 번거로움
⇒ 인스턴스 IP가 매번 변경되지 않고 고정 IP(EIP)를 가지도록 함
- 좌측 카테고리의 ‘탄력적 IP’ > ‘탄력적 IP 주소 할당’ > ‘할당’

> 탄력적 IP 생성(할당) 완료 ✅ > ‘작업’ 버튼의 ‘탄력적 IP 주소 연결’

> 인스턴스와 프라이빗 IP 선택 후 연결

> 탄력적 IP와 인스턴스 연결 완료 ✅


⚠️ 탄력적 IP는 EC2 서버에 연결하지 않으면 비용 발생
생성 후 EC2 서버에 바로 연결 / 사용할 인스턴스 없을 시 삭제 필요
< EC2 서버에 접속하기 >
- Mac & Linux에서 접속하기 (터미널)
AWS와 같은 외부서버로 SSH 접속을 하려면 매번 아래 명령어 입력해야 함 (불편함)
ssh -i pem [키 위치] [EC2의 탄력적 IP 주소]
⇒ 쉽게 ssh에 접속하는 방법 💡
- 인스턴스 생성 시 받은 키페어 pem 파일을 ~/.ssh로 복사하기
cp pem [키 위치(키 다운로드 받은 위치)] ~/.ssh/
→ ssh 실행 시 pem 키 파일 자동으로 읽어 접속, 별도로 pem 키 위치 지정 필요 없음
( pem 키가 잘 복사되었는지 확인하고 싶다면 cd ~/.ssh/ 명령어로 ~/.ssh 디렉토리로 이동한 후 ll 명령어로 파일 목록 확인해보기 )
2. pem 키 권한 변경
chmod 600 ~/.ssh/[pem키이름(pem키파일이름)]
3. pem키가 있는 ~/.ssh 디렉토리에 config 파일 생성
vim ~/.ssh/config
4. config 파일 수정
Host 본인이 원하는 서비스명
HostName [ec2의 탄력적 IP주소]
User ec2-user
IdentityFile ~/.ssh/[pem키이름]
Host = 앞으로 접속할 키 값
ex) Host abc로 등록할 경우 ssh abc로 해당 EC2 접속 가능
:wq 명령어로 저장 종료
5. config 파일 권한 수정
chmod 700 ~/.ssh/config
⏩ 이제 터미널에서 아래 명령어만 입력하면 접속 가능 ✅
ssh [config에 등록한 서비스명(Host)]
‘Are you sure you want to continue connecting (yes/no)?’ 질문에 ‘yes’ 입력
- Windows에서 접속하기 (Putty)
ssh 접속하기는 불편 -> 별도 클라이언트인 putty 설치
1. putty 사이트에서 putty.exe와 puttygen.exe 모두 다운로드 후 puttygen.exe 실행
https://www.putty.org/
Download PuTTY - a free SSH and telnet client for Windows
Is Bitvise affiliated with PuTTY? Bitvise is not affiliated with PuTTY. We develop our SSH Server for Windows, which is compatible with PuTTY. Many PuTTY users are therefore our users as well. From time to time, they need to find the PuTTY download link. W
www.putty.org

2. puttygen 화면의 상단 ‘Conversions’의 ‘Import Key’ 선택 후 다운로드 받았던 pem 키 파일 선택
- puttygen - putty에서는 pem 키로 사용이 안되어 pem 키를 ppk 파일로 변환하는 과정을 진행해주는 클라이언트

3. 'Save private key' 클릭하여 ppk 파일 생성 후 저장


4. putty.exe 실행 후 각 항목 등록
HostName : [username]@[public_IP] 등록 (ec2-user@탄력적IP주소)
Port : 22 (ssh 접속 포트)
Connection type : SSH

5. 좌측의 'Connection' > 'SSH' > 'Auth' > 'Credentials'의 'Browse..' 클릭 -> ppk 파일 등록

6. 좌측의 'Session'의 'Saved Sessions'에 현재 설정을 저장할 이름 등록 > 'Save' > 'Open'

⏩ SSH 접속 성공 ✅

< 아마존 리눅스 1 서버 생성 시 꼭 해야하는 설정들 >
1. Java 8 설치
- 아마존 리눅스 1은 기본 자바 버전 7 -> 책의 내용에 따라 자바 8 설치
sudo yum install -y java-1.8.0-openjdk-amazon-corretto
- 설치 후 인스턴스의 Java 버전을 8로 변경
sudo /usr/sbin/alternatives --config java
(저는 해당 명령어를 따로 실행하지 않아도 Java 8로 바로 적용이 되었습니다)
- java -version 명령어로 현재 버전이 Java8인지 확인

- 사용하지 않는 Java7 삭제
sudo yum remove java-1.7.0-openjdk
🚨 에러
책의 내용을 따라 'sudo yum install -y java-1.8.0-openjdk-devel.x86_64' 명령어로 설치 시 Amazon Linux 2023에서는 java-1.8.0-openjdk-devel를 지원하지 않기 때문에 아래의 오류가 발생함 -> amazon corretto 사용하기

2. 타임존 변경
기본 서버의 시간은 미국 시간대이기 때문에 한국 시간대로 변경해야만 우리가 사용하는 시간이 모두 한국 시간으로 등록/ 사용됨
sudo rm /etc/localtime
sudo ln -s /usr/share/zoneinfo/Asia/Seoul /etc/localtime
date // 타임존이 KST로 변경되었는지 확인

3. HostName 변경
여러 서버를 관리 중이라면 IP만으로 어떤 서비스의 서버인지 확인 어려움
-> 어떤 서비스인지 표현 하기 위해 HOSTNAME 변경
sudo hostnamectl set-hostname [설정할 호스트명]
hostnamectl
(책에는 /etc/sysconfig/network 편집파일을 열어서 수정하라고 나와있지만, Amazon Linux 2023 기준 해당 편집파일에 hostname 부분이 없으므로 위의 명령어를 사용합니다)


서버를 껐다가 재부팅하면 아래와 같이 변경됨

3-1) /etc/hosts에 변경된 hostname 등록하기
sudo vim /etc/hosts // 파일 열기
> i 키를 누른 후 127.0.0.1 [등록한 hostname] 등록 > esc + :wq 명령어로 저장 후 종료

> curl 명령어로 정상적으로 등록되었는지 확인
curl [등록한 hostname]
- 정상 등록된 경우
(7) Failed to connect to [hostname] port 80: ~~ 메세지
= 아직 80포트로 실행된 서비스는 없지만 curl 호스트 이름으로 실행은 잘 되었음

- 등록 실패한 경우
(6) Could not resolve host:[hostname] 메세지 = 찾을 수 없는 주소임
'Group Study (2024-2025 Q1) > Spring 입문' 카테고리의 다른 글
[Spring 입문] 6주차 - EC2 서버에 프로젝트를 배포해 보자 (3) | 2024.11.10 |
---|---|
[Spring 입문] 5주차 - AWS 서버 환경을 만들어보자 - AWS RDS (7장) (1) | 2024.11.05 |
[Spring 입문] 4주차 - 스프링 시큐리티와 OAuth 2.0으로 로그인 기능 구현하기 (1) (2) | 2024.10.29 |
[Spring 입문] 4주차 - 스프링 시큐리티와 OAuth 2.0으로 로그인 기능 구현하기 (2) (0) | 2024.10.28 |
[Spring 입문] 3주차 - 머스테치로 화면 구성하기 (5) | 2024.10.14 |