클라우드/aws_handson

EC2 리눅스 인스턴스를 이용해 간단한 아파치 웹서버 만들기

타진 2020. 8. 8. 14:02
반응형

 

 

 

 

 

EC2란?

 EC2는 AWS가 제공하는 가상 컴퓨팅 대여 서비스이다. 간단하게 한 대의 컴퓨터를 대여받는 개념으로 이해할 수 있다. cpu, 메모리, 스토리지 등에 대해 비용이 달라지며, 처음에는 작은 리소스로 시작했다가 나중에 필요해 의해 메모리를 증설하는 등 리소스 변경이 가능하게끔 설계된 유연한 구조를 가지고 있다.

 

인스턴스 vCPU CPU 크레딧/h 메모리(GiB) 네트워크 성능
t2.nano 1 3 0.5 낮음
t2.micro 1 6 1 낮음에서 중간
t2.small 1 12 2 낮음에서 중간
t2.medium 2 24 4 낮음에서 중간
t2.large 2 36 8 낮음에서 중간
t2.xlarge 4 54 16 중간
t2.2xlarge 8 81 32 중간

EC2의 가장 기본 과금모델인 t2 시리즈. 물론 이 외 커스텀 설정도 가능하다.
자세한 정보는 Amazon EC2 인스턴스 유형 페이지를 참고하자

 

 EC2는 명실상부 AWS의 가장 기본이 되는 서비스이자, 가장 많이 활용되는 서비스이다. AWS에는 CodeBuild(CI도구), data pipeline(데이터 이동, 변환 도구) 등 수십개가 넘는 서비스들이 존재하는데, 이 많은 서비스들은 컴퓨팅 시스템을 이용한다. 그 서비스 중에는 Cloud9(IDE서비스)처럼 EC2를 명시적으로 이용하는 서비스도 있고, 내부에서 EC2를 이용해 로직을 처리하고 결과만 반환해주는 서비스들도 있다. 때문에 AWS를 이해하려면 반드시 이해하여야하는 부분이 EC2 서비스이다.

 

EC2를 이용해 아파치 서버 만들기

개요

 이 포스트에서는 EC2 서비스가 어떠한 것인지 이해할 수 있게끔 간단하게 EC2 리눅스 인스턴스 베이스인 아파치 서버를 만들어 볼 것이다. EC2를 만드는 과정에서 필요한 개념들을 짤막하게나마 설명을 남길터이니, EC2와 그 주변 서비스에 대해 이해가 필요하신 분이라면 차근차근 따라오시면 EC2가 무엇인지, EC2 인스턴스를 활용하여 무엇이 가능한지 금방 이해할 수 있을 것이다. 물론 밑의 과정을 보기만해도 어떤 느낌인지 감은 잡을 수 있을 것이라 생각한다.

 

EC2 리눅스 인스턴스 생성

먼저 AWS콘솔에서 서비스를 클릭 후, EC2 페이지에 들어간다.

 

 

 

 

 

그 뒤 좌측 메뉴에서 인스턴스로 진입한 뒤

인스턴스 시작을 누른다. 화면 우측 인스턴스 시작 버튼을 눌러도 무관하다.

 

 

 

 

 

 EC2에서는 OS를 포함한 시스템 이미지를 AMI(Amazon Machine Images)라고 부른다. 리눅스 배포판처럼 각 오픈소스 OS 제공처에서 제공되는 공식적인 무료 AMI도 있고, 유료판으로 제공되는 AMI, 유저가 커스텀한 AMI도 존재한다. 여기서는 AWS의 공식 AMI인 Amazon Linux 2 AMI를 이용할 것이다. 이 AMI는 CentOS 기반으로 AWS 시스템을 사용하기 쉽게 끔 튜닝된 AMI이다. 많은 부분에서 활용되고 있기에 안정성은 보장할만 하다. 

 

 

 

 

 

 

그 뒤 인스턴스 유형을 선택한다. AWS를 공부하려는 대다수 분들은 프리티어 라이센스를 소지하고 있을 터인데, t2.micro가 무료로 제공되기 때문에 이를 이용하겠다.

 

 

 

 

 

여기서 인스턴스 세부정보를 설정할 수 있다. 디폴트 설정으로 다음을 눌러준다.

이 부분을 하나하나 설명하면 포스트가 너무 길어지기에 기회가 될 떄 다른 포스트에서 다루겠다. 

 

 

 

 

 

스토리지 설정이다. 디폴트 설정으로 넘어간다.

만약 추가 스토리지가 필요하다면 새 볼륨 추가로 볼륨을 추가해주면 된다.

 

 

 

 

 보안그룹 설정이다. 보안그룹 설정이란, 인스턴스 접근 네트워크 통신을 제한할 수 있는 서비스이다. 간단하게 블랙리스트/화이트리스트 개념을 떠올리면 이해하기 쉽다. 보안 그룹은 명시적으로 허가설정을 해주지 않으면 기본 접근이 거부되기에 명시적 설정이 필요하다.

ssh는 기본으로 설정되어 있을 터이니, 규칙 추가를 눌러 HTTP 설정만 추가해준다. HTTP 설정은 아파치 서버 동작확인을 위한 설정으로 소스는 0.0.0.0/0 으로 설정해준다. 이는 HTTP 프로토콜로 모든 접근을 허용한다는 의미이다.

 

 

 

 

 

 

 

다음은 검토 페이지이다. 시작하기를 눌러준다.

 

 

 

 

 

 

 

 시작하기를 누르면 키 생성 팝업이 뜬다. 여기서 인스턴스에 접근할 수 있는 키를 선택하거나 생성할 수 있다. 처음 시작하는 사람이라면 키가 없기에, 새 키 페어 생성으로 설정하고 키 페어 이름에 키 이름을 넣으면, 키 페어 다운로드 버튼이 활성화 된다. 클릭하면 키가 다운로드 될 것이다. 이 키를 자신의 작업 디렉토리에 옮겨두자. 그 뒤 인스턴스 시작 버튼을 클릭한다.

 

 

 

 

 

 

 

시작 상태 페이지에서 인스턴스 아이디를 클릭한다.

 

 

 

 

 

그러면 인스턴스 리스트 페이지로 돌아올터인더, 여기서 인스턴스가 pending(기동중)인 것을 확인할 수 있다. 

 

설정하지 않아도 무관하지만, 이름을 적어주는게 보기 편하니 연필마크를 클릭해서 이름을 설정해주도록 하자.

 

TestLinux이란 이름으로 설정했다

 

 

 

 

 

 

 

그 뒤 조금 기다리면 인스턴스 상태가 running이 된 것은 확인할 수 있을 터인데, 그 상태가 되면 인스턴스 설명 탭에서 IPv4 퍼블릭 IP를 확인할 수 있을 것이다. 이를 복사해둔다.

 

⚠️ EC2 인스턴스의 IPv4고갈 관계로 인해 기본 IPv4 주소는 인스턴스 재부팅 때마다 주소가 변한다. 이를 영구적으로 설정하는 방법이 있지만, 이 포스트에서는 다루지 않는다. 

 

 

 

 

인스턴스 액세스

 EC2 인스턴스 뿐만 아니라, 원격 PC에 액세스 하는 방법은 여러가지가 존재한다. 이 포스트에서는 가장 범용적인 ssh를 활용하여 액세스하도록 하겠다. 여기서 터미널은 git bash 터미널(MinGW)을 이용한다. 자신이 원하는 터미널을 이용해도 되지만, powershell의 경우 ssh 명령어가 살짝 다를 수 있으니 이 부분 유의해주시길 바란다.

 

ssh -i {{ key경로, 이름 }} -p 22 ec2-user@{{ IPv4 주소 }}

 

원격 접속을 한다. EC2 리눅스 인스턴스 생성 파트에서 다운로드한 키의 경로를 입력, ssh의 포트번호는 22가 디폴트이기에 22로 설정해주고 주소는 아까 복사한 IP 주소를 사용해 접속해주면 된다.

 

 

 

 

아파치 설치 및 가동

sudo su

yum update -y && amazon-linux-extras install -y java-openjdk11 && yum install -y httpd

 

무사히 인스턴스에 접속했따면, 먼저 sudo 권환을 취득해준다. 그 뒤 yum과 amazon-linux-extras(AWS가 제공하는 패키지 관리 리포지토리)를 통해 필요한 프로그램을 인스톨해준다.

 

 

그 뒤 무사히 인스톨이 끝남을 확인한다

.

 

 

 

 

 

 

service httpd start

service httpd status

 

아파치 서버를 기동하는 명령어와, 기동 상태를 확인하는 명령어이다. active상태가 된 것을 확인한다.

 

 

 

 

 

그 뒤 ssh 액세스할 떄 사용했던 IP 주소를 브라우저에서 입력하면 설치한 아파치 테스트 페이지가 출력됨을 확인할 수 있을 것이다. 만약 이 부분에서 동작이 확인되지 않는다면, EC2 리눅스 인스턴스 생성 파트의 보안 그룹 설정에서 HTTP 설정 추가를 빼먹었을 가능성이 높다. 그 부분을 다시 체크해보시길 바란다.

 

 

 

 

 

마치며

 서론에서도 언급했지만 AWS EC2는 아마존 서비스의 베이스가 되는 서비스이다. 지금이야 ECS(AWS 콘테이너 제공 서비스)가 Fargate부분이 추가되어있지만, 기존에는 EC2위에서 가상 OS를 돌리는 방식으로 서비스가 제공되던 때도 있었다. 때문에 활용면에서도 EC2를 알아두는 것이 좋고, 또한 AWS 자격증 취득을 생각하고 있다면, EC2 파트와 주변 서비스에서 출제빈도가 높기에 디테일하게 이해해두는 것을 추천한다.

 

 

 

 

 

반응형