안녕하세요. 오늘은 AWS의 EC2를 이용해서 웹 서버를 무료로 배포하는 방법에 대해서 알아보겠습니다. 아마존의 EC2는 Amazon Web Services의 클라우드 컴퓨팅 서비스 중 하나입니다. EC2는 Elastic Compute Cloud의 약어로, 유연한 컴퓨팅 리소스를 제공하여 개발자 및 기업이 원하는 만큼의 리소스를 빌려서 스케일링이 가능한 애플리케이션을 실행할 수 있도록 한다는 것입니다.
AWS EC2를 사용하면 가상 서버를 구축하고 실행할 수 있으며, 이를 통해 사용자는 필요한 만큼의 컴퓨팅 리소스를 언제든지 이용할 수 있습니다. 또한, EC2 인스턴스를 시작하고 중지하고 재시작하는 등의 작업을 쉽게 수행할 수 있으며, 이러한 인스턴스는 다양한 운영 체제를 실행할 수 있습니다. AWS EC2는 프리티어로 사용할 수 있는 서비스입니다. 프리 티어라고해서 추가 과금이 되지 않는 것은 아니지만, 일정 범위 내에서는 추가 비용없이 가벼운 서비스를 배포할 수 있습니다. Heroku라는 서비스를 22년까지 무료로 사용할 수 있었다고 하는데요, 지금은 유료로 전환되어서 EC2를 이용해서 배포를 진행해보았습니다.
AWS EC2 인스턴스 생성하기
먼저, AWS에서 회원 가입을 하고, EC2에서 Launch Instance에 들어가주세요.
인스턴스의 이름, 그리고 운영체제의 이미지를 선택해줍니다. 프리티어에서 이용 가능한 것 중 저는 우분투를 선택했습니다.
인스턴스 타입과 Key Pair를 선택해줍니다. 키를 생성한 적이 없다면, 새 키를 생성해주어야합니다. 오른쪽의 Create new key pair를 누르면 간단하게 키 페어를 생성해줍니다. 키를 생성하고나면 키 파일 다운로드되는데, 앞으로 이 key를 이용해서 인스턴스 내로 파일을 전송하거나 ssh 접속을 할 수 있습니다. 여기까지 설정을 하고나면 기본 설정이 완료되었습니다. 이대로 인스턴스를 생성해주어도되고, 추가로 용량 등을 변경하고 싶으면 취향대로 변경할 수 있습니다.
인스턴스 생성이 완료되고 나면, 상세 정보에서 인스턴스에 대한 세부 내용을 볼 수 있습니다. IPv4 주소, DNS 이름, 사용되는 Key Pair 등을 확인할 수 있습니다. 위의 Connect를 통해서 인스턴스에 접속할 수 있습니다. AWS 웹 서비스에서는 인스턴스의 터미널에 접속할 수 있는 콘솔을 제공합니다. 아까 생성한 SSH 키를 이용해서 접속할 수 있습니다.
EC2 - Instances - Connect에서 SSH cilent로 접속 가능합니다. 터미널에 Example의 예시 코드를 입력해서 접속할 수 있습니다.
다음은, 보안 그룹 설정입니다. EC2에 접근할 수 있는 권한을 부여하는 것인데요, 인스턴스가 포함된 보안 그룹의 Inbound Rules로 권한을 부여할 수 있습니다. 아까의 상세 정보에서 인스턴스의 보안 그룹을 확인한 후, Inbound rules를 설정해서 권한을 설정할 수 있습니다. 예를 들어 웹 서버를 배포한다고 가정할 때, 웹사이트는 HTTP로 모든 IP에서 접근 가능하게, SSH 접근은 특정 IP에서만 접근 가능하도록 권한을 부여해야할 것입니다.
SSH 설정하기
빠르게 SSH로 접속하기 위해 아래와 같은 설정을 해주면 좋습니다. 아래 명령어는 pem 키를 .ssh 디렉토리로 옮겨서, config 파일을 열어주는 명령어입니다.
$ mv {pem키 경로} ~/.ssh/
$ chmod 400 {pem키 경로}
$ vi ~/.ssh/config
Config 파일은 아래와 같이 수정해줍니다.
Host {ServiceName} # ssh {ServiceName}으로 접속한다.
HostName # Elastic IP Addr
User ubuntu # EC2 Username, ex) ubuntu instance - ubuntu
IdentifyFile ~/.ssh/{keyname}.pem
이제 명령어 ssh {ServiceName}으로 SSH 접속을 쉽게 할 수 있습니다.
서버 기본 설정
1. 호스트 설정
초기 호스트 이름 값은 ip로 설정되어있습니다. 아래 명령어로 호스트 이름을 변경할 수 있습니다.
$ sudo hostnamectl set-hostname {hostname}
$ sudo reboot
서버가 재시작 된 후에, 호스트 이름을 hosts 파일에 저장해준다. 그리고 curl 명령어로 80번 포트 연결 불가 메시지가 뜬다면 설정이 완료되었다.
$ sudo vi /etc/hosts
# 파일에 호스트 이름 등록 후 저장
curl {hostname} # 등록 여부 확인
2. 업데이트 및 JDK 11 설치
아래 명령어로 업데이트 및 JDK 설치를 진행해줍니다.
$ sudo apt update
$ sudo apt upgrade
$ sudo apt install openjdk-11-jdk
여기까지 기초 설정이 완료되었습니다. 다음 포스팅에서는 기본 설정된 인스턴스에 H2 혹은 mysql 데이터베이스를 주입하고 Database 설정을 진행해보겠습니다.
'DevOps' 카테고리의 다른 글
Spring 프로젝트 AWS EC2 배포하기 - H2 DB 연결 (0) | 2023.03.20 |
---|