📌 들어가며
클라이언트와의 협업을 위해 EC2를 이용해 서버 배포하는 법을 배웠다.
현재 사용 중인 windows 기준으로 서버 배포 방법을 정리해보려고 한다.
서버 인스턴스에 접속하는 데 SSH 통신을 사용한다. 시작 전에 SSH 클라이언트인 PuTTY를 먼저 다운받아야 한다.
▼ PuTTY 설치
https://www.putty.org/
📌 EC2 생성을 위한 개념
- AMI(Amazon Machine Image) : EC2 인스턴스의 기반이 되는 이미지
- 보안 그룹(Security Group) : 보안을 위해 IP와 포트 번호를 이용해 정의해두는 서버 접속 규칙
- 키 페어(Key Pair) : 서버에 접속하기 위한 열쇠
📌 EC2 인스턴스 생성
1. AWS 로그인 및 AWS 콘솔에 접속
https://ap-northeast-2.console.aws.amazon.com/console/home?region=ap-northeast-2
2. 서울 리전(ap-northeast-2)을 선택한다.
3. ec2 검색 후 ec2(클라우드의 가상 서버)에 들어간다.
4. 왼쪽의 인스턴스 클릭 후 오른쪽의 인스턴스 시작(주황색 버튼) 클릭
✔ 프리티어는 만약 인스턴스 두 개를 켜 놓을 경우 돈 나갈 수 있기 때문에 조심..! 꼭 다른 인스턴스는 종료하고 새로 시작해야 한다.
5. AMI 선택
ubuntu 검색 후 "프리티어 사용 가능"인
Ubuntu Server 20.04 LTS (HVM), SSD Volume Type - ami-04876f29fd3a5e8ba (64비트 x86) 또는
Ubuntu Server 18.04 LTS (HVM), SSD Volume Type - ami-0ba5cd124d7a79612 (64비트 x86)을 선택한다.
✔ 프리티어 제외하고는 결제가 될 수 있으니 조심!
20.04와 18.04는 버전만 달라서 아무거나 선택해도 상관없다.
6. 인스턴스 선택
t2.micro가 프리티어 사용 가능하다.
7. EC2 인스턴스 세부 정보 구성
일단 기본값 사용 => 다음 : 스토리지 추가 버튼 클릭
7. EC2에서 사용할 저장 장치 선택(스토리지 추가)
일단 기본값 사용 => 다음 : 태그 추가 버튼 클릭
8. 태그 지정
태그는 운영 환경에서 수백 개의 인스턴스가 실행될 수 있으므로 성격에 맞게 분류할 때 유용하게 사용된다.
별칭을 정해준다고 생각하면 편리합니다!
임의로 Key : Sopt, Value : exercise - instance 넣어주고 다음 : 보안 그룹 구성 버튼 클릭
✔ Key와 Value 별칭은 마음대로 지정해주면 된다.
9. 인스턴스에 대한 접근 제어(보안 그룹 구성)
보통 본인 IP 주소만 지정하는 것이 보안에 좋고 정말 필요한 IP 주소와 포트 번호에 대해서만 접속을 허용하는 것이 중요하다.
다음과 같이 적고 소스를 위치 무관으로 변경한 후, 검토 및 시작 버튼 클릭
보안 그룹 이름, 설명은 알아보기 쉽게만 작성하면 된다.
나중에 HTTP, HTTPS 유형도 추가해야 한다. -> 밑에서 다룸!
✔ 0.0.0.0/0 은 모두에게 접근을 허용하는 것을 의미한다.
이후 인스턴스 시작 검토 단계에서 시작하기 버튼을 클릭한다.
10. 키 페어 생성
새 키 페어 생성을 선택하고 생성할 키 페어의 이름을 넣는다.
✔ 키 페어 이름은 본인의 자유!
키 페어 다운로드 버튼 클릭 후 키 페어를 저장한다.
저장받은 키 페어는 절대로 잃어버리거나 유출하면 안 된다.
꼭 다운로드 후 인스턴스 시작 버튼을 누른다.
📌 PuTTY 접속
서버 인스턴스에 접속하는 데 SSH 통신을 사용한다.
EC2 인스턴스 키 페어와 SSH 클라이언트인 PuTTY를 이용해 SSH 접속을 해보려고 한다.
✔ 키 변환 과정
PuTTY에서는 AWS에서 내려받은 키 페어 파일을 바로 사용할 수 없다.
별도의 키 변환 과정이 필요하기 때문에 PuTTY Key Generator를 사용한다.
윈도우 검색 창에서 puttygen을 검색한 후 puttygen.exe파일을 실행한다.
Load를 선택한다.
파일 종류를 [All Files]로 변경한 후 다운 받았던 키 페어 pem 파일을 선택한다.
확인 누르고 Save Private Key를 선택한다.
나는 pem 파일명과 동일하게 저장했다.
📌 PuTTY 실행
1. puttygen.exe를 종료한 후 PuTTY를 실행한다.
Host Name에는 ubuntu@<EC2 인스턴스 퍼블릭 도메인 or 퍼블릭 IP 주소>를 입력한다. (입력 시에는 <> 제외하고 입력한다.)EC2 인스턴스 도메인이나 IP 주소는 AWS 인스턴스에서 찾을 수 있다.AWS -> 인스턴스 -> 해당 인스턴스 클릭
Connection type은 SSH를 선택하고 Port는 SSH 포트인 22를 입력한다.
2. Private Key 지정
왼쪽의 Category 중 Connection => SSH => Auth 클릭
Private key file for authentication 항목에 Browse 후 puttygen.exe에서 저장했던 ppk(gem파일 아님!) 파일을 불러온다.
3. Start
Open을 누르면 다음과 같은 창이 뜨는데 여기서 accept를 눌러준다.
📌 PuTTY Fatal Error
추가 이전 키는 삭제해야 한다.
레지스트리 편집기에서 HKEY_CURRENT_USER => Software => SimonTatham => PuTTY => SshHostKeys에서
기본값을 제외한 내용을 삭제 해야 한다.
📌 HTTP, HTTPS로 접근
현재 SSH 포트만 허용해 놓았기 때문에 HTTP, HTTPS의 기본 포트인 80, 443 포트로 접속이 불가하다.
보안 그룹에서 HTTP와 HTTPS를 추가해주는 작업이 필요하다.
보안 그룹 생성 버튼 클릭 후 세부 정보 작성 및 인바인드 규칙을 지정해준다.
여기서도 일단 위치 무관(0.0.0.0/0)으로 설정해준다.
✔ 세부 정보는 사용자 마음대로, 인바인드 규칙만 따르면 됨!
인바인드 규칙이 잘 생성되었다!
이제 아까 생성한 인스턴스에 보안 그룹을 연결해준다.
보안 그룹 추가 후 저장해준다.
📌 EC2 이야기와 그 이후..
aws ec2 인스턴스 생성은 자칫하면 비용이 나갈 수 있어서 항상 조심해야 한다..
또 나도 모르게 어디선가 실행 중일지도 모르니 aws 결제 대시보드에서 주기적으로 확인해주는 게 좋다!
EC2 다음에 putty 접속 후 찐 서버 배포 과정이 필요한데 다음 글에서,, 정리해야겠다,,
✔ 참고: 28th SOPT SERVER 5차 세미나 자료