"웹 서버 구축, 정말 어렵기만 할까요?" 많은 개발자와 스타트업 창업자들이 AWS EC2를 활용한 웹 서버 구축을 시도하지만, 복잡한 설정과 서버 관리에 부담을 느끼곤 합니다. 하지만 올바른 가이드를 따른다면 초보자도 손쉽게 서버를 띄울 수 있습니다. 이 글에서는 AWS EC2를 활용해 쉽고 빠르게 웹 서버를 구축하는 방법을 단계별로 설명합니다.
AWS EC2 웹 서버 구축을 위한 기본 개념 이해
AWS EC2를 활용한 웹 서버 구축을 이해하려면 먼저 AWS와 EC2의 기본 개념을 알아야 합니다.
AWS(Amazon Web Service)는 인터넷을 통해 서버, 스토리지, 데이터베이스 등의 IT 인프라를 제공하는 클라우드 서비스입니다. 별도의 물리적 서버 없이도 웹 애플리케이션을 운영할 수 있어 유연성과 확장성이 뛰어납니다.
그중 EC2(Elastic Compute Cloud)는 AWS에서 제공하는 가상 서버로, 사용자가 원하는 성능과 용량을 조절할 수 있습니다. 즉, EC2는 클라우드 환경에서 웹 서버를 구축하고 운영하는 데 가장 기본이 되는 서비스입니다.
AWS EC2가 웹 서버 구축에 적합한 이유
EC2의 가장 큰 장점은 필요한 만큼만 서버를 생성하고, 사용량에 따라 확장하거나 축소할 수 있다는 점입니다. 예를 들어, 초기에 작은 규모의 웹사이트를 운영하다가 방문자가 많아지면 서버 성능을 늘리는 것이 가능합니다.
또한, 다양한 운영 체제(리눅스, 윈도우 등)를 선택할 수 있으며, Apache, Nginx 등의 웹 서버 소프트웨어를 자유롭게 설치할 수 있어 맞춤형 환경 구성이 가능합니다.
AWS EC2 인스턴스를 활용한 웹 서버 구축의 기본 원리
EC2를 활용한 웹 서버 구축의 핵심은 다음과 같습니다.
- AWS EC2를 활용한 웹 서버의 기본 구조
EC2 인스턴스는 클라우드에 있는 가상 서버이며, 여기에 웹 서버 소프트웨어를 설치하여 서비스를 제공합니다. - EC2 인스턴스의 주요 기능과 역할
가상 머신처럼 동작하며, 애플리케이션 실행, 데이터 저장, 네트워크 설정 등을 할 수 있습니다. - 인스턴스 유형 선택의 중요성
웹 서버 운영에 필요한 CPU, RAM 크기를 고려하여 적절한 인스턴스 유형을 선택해야 합니다. - 퍼블릭 및 프라이빗 IP의 차이
퍼블릭 IP는 외부에서 접근할 수 있는 주소이며, 프라이빗 IP는 내부 네트워크에서만 사용됩니다. - 웹 서버 구축을 위한 필수 설정 요소
보안 그룹 설정, 키 페어 생성, 운영 체제 및 소프트웨어 설치 등의 초기 설정이 필요합니다.
이제 AWS EC2의 기본 개념을 이해했으니, 다음 단계에서는 실제로 EC2 인스턴스를 생성하고 웹 서버를 구축하는 방법을 살펴보겠습니다.
AWS EC2 인스턴스 생성 및 설정 방법
<<
AWS EC2를 활용하면 누구나 손쉽게 클라우드 서버를 구축할 수 있습니다. 여기서는 AWS EC2 인스턴스를 생성하고 설정하는 방법을 단계별로 설명하겠습니다.
AWS EC2 인스턴스 생성 단계
- AWS 콘솔 접속 및 EC2 서비스 선택
AWS 홈페이지에 로그인한 후, 서비스 목록에서 EC2를 선택합니다. - 리전 선택
인스턴스를 생성할 위치를 정해야 합니다. 한국에서 운영할 경우,서울(ap-northeast-2)
리전을 선택하는 것이 좋습니다. - 인스턴스 시작
"인스턴스 시작" 버튼을 클릭하여 새 인스턴스를 생성할 수 있습니다. - 운영 체제(AMI) 선택
Amazon Linux 2, Ubuntu, Windows Server 등 다양한 OS가 제공됩니다. 일반적으로 웹 서버 운영을 위해서는Amazon Linux 2
또는Ubuntu
를 선택합니다. - 인스턴스 유형 선택
서버 성능을 결정하는 단계입니다. 개인 테스트나 소규모 웹사이트 운영에는t2.micro
(프리 티어 무료 제공)를 선택하는 것이 적절합니다. - 키 페어 생성 및 다운로드
SSH로 접속하기 위해 키 페어가 필요합니다. 새 키 페어를 생성한 후.pem
파일을 안전한 위치에 저장합니다. - 보안 그룹 설정
EC2 인스턴스의 방화벽 역할을 하는 보안 그룹을 설정해야 합니다. 기본적으로 SSH(22번 포트)를 허용하고, 웹 서버를 운영할 경우 HTTP(80번 포트) 및 HTTPS(443번 포트)도 열어야 합니다. - 인스턴스 생성 완료
모든 설정이 끝나면 "검토 및 시작"을 클릭한 후 "인스턴스 시작" 버튼을 눌러 EC2 인스턴스를 생성합니다.EC2 인스턴스 생성 시 고려할 요소
EC2 인스턴스를 설정할 때 반드시 검토해야 하는 중요한 요소들을 정리했습니다.
- AWS 콘솔에서 EC2 인스턴스 생성하기: AWS 관리 콘솔에서 EC2 서비스에 접속하여 인스턴스를 생성합니다.
- 인스턴스 유형 선택:
t2.micro
등의 인스턴스 유형을 결정하여 서버 성능을 조정할 수 있습니다. - 운영 체제 선택:
Amazon Linux 2
또는Ubuntu
등 미리 구성된 OS 이미지를 선택합니다. - 키 페어 생성 및 다운로드: SSH 접속을 위해 신규 키 페어를 생성하고
.pem
파일을 저장합니다. - 보안 그룹 설정: 포트 22(SSH), 80(HTTP), 443(HTTPS) 등을 허용하여 원격 접속 및 웹 서비스 운영이 가능하도록 설정합니다.
- 탄력적 IP 할당 및 연결: 고정 IP를 설정하여 인스턴스를 재시작해도 동일한 IP를 유지할 수 있도록 합니다.
탄력적 IP 설정 방법
EC2 인스턴스를 생성하면 기본적으로 퍼블릭 IPv4 주소가 부여됩니다. 하지만 이는 인스턴스를 재부팅할 때마다 변경됩니다. 고정 IP가 필요하다면 **탄력적 IP(Elastic IP, EIP)**를 설정해야 합니다.
- AWS 콘솔에서 "Elastic IP" 메뉴 선택
EC2 대시보드에서 "네트워크 및 보안" 섹션의 "탄력적 IP" 메뉴로 이동합니다. - 새 탄력적 IP 할당
"탄력적 IP 주소 할당" 버튼을 클릭하여 새 IP를 생성합니다. - EC2 인스턴스에 연결
생성된 탄력적 IP를 선택한 후 "연결" 버튼을 눌러 특정 EC2 인스턴스에 할당합니다. - 탄력적 IP 적용 완료
이제 해당 IP 주소를 사용하여 SSH 접속 및 웹 서비스 운영이 가능합니다.
이 과정이 끝나면 EC2 인스턴스를 재부팅해도 IP 주소가 변하지 않아 안정적으로 서버를 운영할 수 있습니다.
AWS EC2 보안 그룹 설정 및 SSH 접속 방법
<<
AWS EC2를 사용할 때 가장 중요한 요소 중 하나는 보안입니다. 보안 그룹(Security Group)은 EC2 인스턴스의 방화벽 역할을 하며, 특정 포트와 IP 주소만 허용하여 외부 공격으로부터 서버를 보호할 수 있습니다.
또한, SSH(Secure Shell)를 활용하면 안전하게 원격 접속이 가능합니다. 이번 섹션에서는 보안 그룹을 설정하는 방법과 SSH를 이용해 EC2 인스턴스에 접속하는 방법을 알아보겠습니다.
AWS EC2 보안 그룹 설정 방법
보안 그룹을 올바르게 설정하면 외부에서 허가된 사용자만 EC2 인스턴스에 접근할 수 있습니다. 설정하는 방법은 다음과 같습니다.
- SSH(포트 22) 허용
원격 접속을 위해 보안 그룹에서 포트 22번을 열어야 합니다. 하지만, 보안을 위해 모든 IP가 아닌 특정 IP만 허용하는 것이 좋습니다. - HTTP(포트 80) 및 HTTPS(포트 443) 개방
웹 서버를 운영하려면 HTTP(80번 포트)와 HTTPS(443번 포트)를 개방해야 합니다. 이를 통해 외부 사용자가 웹사이트에 정상적으로 접속할 수 있습니다. - 특정 IP만 SSH 접속 허용
보안 강화를 위해 SSH 접속을 특정 IP 주소에서만 가능하도록 설정하세요. 예를 들어, 본인의 공인 IP만 허용하면 해킹 위험을 줄일 수 있습니다. - 기본적인 방화벽 설정 적용
불필요한 포트는 닫아두고, 필요한 서비스만 열어둡니다. 또한, Cloudflare와 같은 추가적인 보안 시스템을 사용할 수도 있습니다.SSH를 이용한 EC2 접속 방법
보안 그룹 설정이 끝났다면, 이제 SSH를 통해 EC2 인스턴스에 접속할 수 있습니다.
- SSH 키 페어 확인
EC2를 생성할 때 저장한.pem
파일이 있어야 합니다. 이 파일이 없으면 SSH 접속이 불가능하므로 반드시 안전한 곳에 보관하세요. - 터미널 열기
macOS 또는 Linux 사용자는 기본 제공되는 터미널을 열고, Windows 사용자는 Git Bash 또는 WSL을 사용할 수 있습니다. - SSH 접속 명령어 입력
아래 명령어를 입력하여 EC2 인스턴스에 접속합니다.ssh -i "키페어파일.pem" ec2-user@퍼블릭IP주소
키페어파일.pem은 저장한 키 파일 이름이고, 퍼블릭IP주소는 AWS EC2 인스턴스에서 확인할 수 있습니다.
4. 접속 완료 및 확인
정상적으로 접속되었다면, 터미널에서 ec2-user@your-instance
와 같은 메시지가 나타납니다. 이제 서버를 설정하고 웹 서비스를 운영할 준비가 되었습니다.
이제 AWS EC2 보안 그룹을 설정하고 SSH를 이용해 인스턴스에 접속하는 방법을 익혔습니다. 다음 단계에서는 웹 서버를 실제로 구축하는 방법을 살펴보겠습니다.
AWS EC2에 Apache 또는 Nginx 웹 서버 설치하기
<<
AWS EC2 인스턴스를 생성했다면, 이제 웹 서버를 설치할 차례입니다. 웹 서버는 사용자의 요청을 받아 웹사이트를 표시하는 핵심 요소입니다. 대표적인 웹 서버로 Apache와 Nginx가 있으며, 각각의 특징이 다릅니다.
Apache와 Nginx의 차이점
두 웹 서버 모두 널리 사용되지만, 동작 방식에 차이가 있습니다.
- Apache: 모듈형 구조로 다양한 기능을 추가할 수 있으며,
.htaccess
파일을 이용해 개별 디렉터리 설정이 가능합니다. - Nginx: 가벼운 구조로 동시 접속 처리 성능이 우수하며, 정적 파일 서비스와 로드 밸런싱에 강합니다.
일반적인 웹 애플리케이션이라면 Apache가 적합하고, 트래픽이 많은 서비스나 정적 콘텐츠를 많이 다룬다면 Nginx가 좋은 선택이 될 수 있습니다.AWS EC2에서 Apache 또는 Nginx 설치 방법
Amazon Linux 2를 사용하는 EC2 인스턴스에서 Apache 또는 Nginx 웹 서버를 설치하는 방법을 단계별로 정리했습니다.
- Apache 설치
sudo yum install httpd -y
- Nginx 설치
sudo amazon-linux-extras enable nginx sudo yum install nginx -y
- 웹 서버 시작 및 서비스 활성화
sudo systemctl start httpd # Apache 실행 sudo systemctl start nginx # Nginx 실행 sudo systemctl enable httpd # Apache 자동 실행 설정 sudo systemctl enable nginx # Nginx 자동 실행 설정
- 방화벽 설정 (HTTP/HTTPS 허용)
sudo firewall-cmd --permanent --add-service=http sudo firewall-cmd --permanent --add-service=https sudo firewall-cmd --reload
웹 서버 정상 작동 확인
설치 후 웹 서버가 정상적으로 작동하는지 확인하려면 브라우저에서 EC2 인스턴스의 퍼블릭 IP를 입력합니다.
- Apache를 설치했다면, "Amazon Linux 2 Test Page"가 표시됩니다.
- Nginx를 설치했다면, "Welcome to Nginx"라는 기본 페이지가 나타납니다.
이제 AWS EC2에서 Apache 또는 Nginx 웹 서버를 성공적으로 설치하고 실행할 수 있습니다.
AWS EC2 웹 서버에 도메인 연결 및 HTTPS 적용하기
<<
AWS EC2에서 웹 서버를 구축했다면, 이제는 도메인을 연결하고 HTTPS 인증서를 적용할 차례입니다. 도메인을 설정하면 IP 주소 대신 직관적인 URL을 사용할 수 있으며, HTTPS를 적용하면 보안이 강화됩니다.
도메인 연결을 위한 Route 53 설정
도메인 연결을 위해 AWS의 DNS 서비스인 Route 53을 활용합니다.
- 도메인 구매 또는 기존 도메인 가져오기
- AWS Route 53에서 새로운 도메인을 등록하거나 기존 도메인을 가져옵니다.
- 호스팅 영역 생성
- Route 53 콘솔에서 "호스팅 영역 생성"을 선택한 후 도메인 이름을 입력합니다.
- 레코드 설정
- EC2 인스턴스의 퍼블릭 IP를 활용하여 A 레코드를 생성합니다.
- 예:
example.com
→EC2 퍼블릭 IP 주소
- 네임서버(NS) 업데이트
- 도메인을 등록한 사이트(Godaddy, Namecheap 등)에서 Route 53에서 발급한 네임서버(NS)를 설정합니다.
- 도메인 연결 확인
- 브라우저에서 도메인(URL)을 입력하여 EC2 인스턴스와 연결되었는지 확인합니다.
Let’s Encrypt를 활용한 무료 SSL 인증서 발급
보안을 강화하기 위해 HTTPS를 활성화해야 합니다.
Let’s Encrypt
를 사용하면 무료 SSL 인증서를 손쉽게 발급받을 수 있습니다.
- Certbot 설치
sudo yum install -y certbot python-certbot-nginx # Nginx용 sudo yum install -y certbot python-certbot-apache # Apache용
- SSL 인증서 발급 요청
sudo certbot --nginx -d example.com -d www.example.com # Nginx sudo certbot --apache -d example.com -d www.example.com # Apache
- HTTPS 리디렉션 설정
- 인증서 발급 후, HTTP 요청을 HTTPS로 자동 리디렉트하도록 설정합니다.
- 방화벽에서 443 포트 개방
sudo firewall-cmd --permanent --add-service=https sudo firewall-cmd --reload
- SSL 인증서 자동 갱신 설정
echo "0 0 1 * * root certbot renew --quiet" | sudo tee -a /etc/crontab
HTTPS 적용 후 정상 작동 여부 확인
- 브라우저에서 https://your-domain.com으로 접속하여 SSL 인증서가 정상적으로 적용되었는지 확인합니다.
https
접속 시 자물쇠 아이콘이 나타나면 성공적으로 설정된 것입니다.https://www.ssllabs.com/ssltest/
를 이용해 SSL 보안 점검을 수행할 수도 있습니다.
이제 AWS EC2 웹 서버에 도메인을 연결하고 HTTPS를 적용하는 작업을 성공적으로 완료했습니다. 서버 보안이 강화되고, 사용자 신뢰를 높이는 효과까지 기대할 수 있습니다.
결론
AWS EC2를 활용하면 물리적인 서버 없이도 유연한 환경에서 웹 서버를 운영할 수 있어요. EC2 인스턴스를 생성하고, 보안 그룹을 설정하며, SSH로 접속한 뒤 Apache 또는 Nginx를 설치하면 기본적인 웹 서버 구축이 가능합니다.
도메인을 EC2에 연결하고 HTTPS를 적용하면 보안이 강화된 웹사이트를 운영할 수 있어요. 효과적인 서버 관리를 위해 정기적인 보안 업데이트와 백업을 수행하는 것이 중요합니다.
AWS EC2 웹 서버 구축을 통해 클라우드 기반 인프라를 활용하는 방법을 익히고, 최적화된 서버 환경을 만들 수 있길 바랍니다.