와, 여러분 안녕하세요! AWS EC2에 Django 앱 배포… 이 말만 들어도 머리가 핑핑 돌았던 제가, 이제는 (어느 정도) 자신 있게 여러분께 그 과정을 공유할 수 있게 되었네요. 솔직히 말씀드리면, 처음엔 정말 삽질의 연속이었어요. 하지만 이제는 좀 익숙해졌으니, 제 경험을 바탕으로 초보 개발자분들도 쉽게 따라할 수 있도록 꼼꼼하게 설명해 드리겠습니다! 자, 시작해 볼까요?
준비 단계: 먼저 이것만 준비하면 돼요!
배포 전에 몇 가지 준비물이 필요해요. 생각보다 간단하니, 걱정 마세요!
- AWS 계정 생성: AWS 계정이 없다면 당연히 만들어야겠죠? (링크를 걸어두면 더 좋을 것 같아요!) 무료 체험 기간도 있으니 부담 없이 시작해 보세요.
- EC2 인스턴스 생성: 이건 마치 집을 지을 땅을 마련하는 것과 같아요. Django 앱이 살 공간을 만들어 줘야 하거든요. 어떤 종류의 인스턴스를 선택해야 할지 고민이시라면, 저처럼 처음에는
t2.micro같은 저렴한 인스턴스로 시작해 보는 걸 추천해요. 나중에 필요하면 더 큰 인스턴스로 업그레이드하면 되니까요! - 도메인 구매 및 설정 (선택사항): 자신만의 도메인을 가지고 싶다면 구매해야겠죠? (예:
myawesomeapp.com). 하지만 처음에는 EC2 공개 IP 주소로 접속해도 괜찮아요. 나중에 도메인 연결하는 것도 어렵지 않으니까요! - SSL 인증서 준비 (선택사항): HTTPS로 안전하게 접속하고 싶다면 SSL 인증서가 필요해요. Let's Encrypt를 이용하면 무료로 인증서를 발급받을 수 있으니, 이 부분은 나중에 자세히 설명해 드릴게요.
1. EC2 인스턴스 설정: 드디어 집을 짓기 시작!
1.1 인스턴스 생성: 땅을 고르고 기초를 다져요!
- AWS 콘솔에 접속해서 EC2 서비스를 찾아보세요. 처음에는 좀 낯설 수 있지만, 몇 번만 해보면 금방 익숙해질 거예요.
- "인스턴스 시작" 버튼을 클릭하면 마법처럼 인스턴스 생성 화면이 나타납니다.
- Amazon Linux 2 AMI를 선택하세요. (AMI는 Amazon Machine Image의 약자로, 운영체제라고 생각하면 됩니다.)
- 인스턴스 유형은 앞서 말씀드린 대로
t2.micro로 시작하는 걸 추천드립니다. 저도 그렇게 시작했거든요! - 가장 중요한 부분! 보안 그룹 설정입니다. 이건 마치 집의 문과 창문 같은 거예요. 어떤 트래픽을 허용할지 꼼꼼하게 설정해야 합니다.
- SSH (22): 서버에 접속하기 위해 필요합니다.
- HTTP (80): 웹사이트를 접속하기 위해 필요합니다. (나중에 HTTPS로 바꿀 거예요!)
- HTTPS (443): 안전한 접속을 위해 필요합니다.
1.2 SSH 접속: 드디어 집에 들어가요!
이제 SSH를 이용해서 EC2 인스턴스에 접속해 봅시다. SSH는 마치 집 열쇠와 같다고 생각하면 됩니다.
# 키 파일 권한 설정 (이건 꼭 해야 해요!)
chmod 400 your-key.pem
# SSH 접속 (여기서 your-key.pem은 여러분이 생성한 키 파일이고, your-ec2-public-ip는 EC2 인스턴스의 공개 IP 주소입니다.)
ssh -i your-key.pem ec2-user@your-ec2-public-ip
만약 Permission denied 같은 에러가 뜬다면, 키 파일 경로나 권한을 다시 한번 확인해 보세요. 저도 이 부분에서 꽤 애먹었거든요…
2. 서버 환경 설정: 집 안을 꾸며요!
2.1 시스템 업데이트: 집 청소부터 시작!
가장 먼저 해야 할 일은 시스템 업데이트입니다. 마치 이사 전에 집 청소를 하는 것과 같아요.
sudo yum update -y
sudo 명령어는 관리자 권한으로 명령을 실행한다는 뜻입니다. 잊지 마세요!
2.2 필요한 패키지 설치: 가구를 들여놓아요!
Django를 실행하기 위해 필요한 여러 가지 패키지를 설치해야 합니다.
# 개발 도구 설치 (프로그래밍에 필요한 도구들이에요!)
sudo yum groupinstall -y "Development Tools"
# Python 3.9 설치 (Django를 실행하는 데 필요한 언어입니다!)
sudo yum install -y python39 python39-devel
# 기타 필요한 패키지 (Nginx는 웹 서버, Git은 코드 관리 도구, PostgreSQL은 데이터베이스입니다.)
sudo yum install -y nginx git postgresql-devel
yum은 패키지 관리자라고 생각하면 됩니다. 마치 앱 스토어에서 앱을 설치하는 것과 같아요.
2.3 Python 가상환경 설정: 방을 나눠서 깔끔하게!
여러 프로젝트를 동시에 관리하기 위해 Python 가상환경을 설정하는 것이 좋습니다. 마치 집 안에 방을 여러 개 만들어서 각 방마다 다른 용도로 사용하는 것과 같아요.
# pip 업그레이드 (pip는 Python 패키지 설치 도구입니다.)
python3.9 -m pip install --upgrade pip
# virtualenv 설치 (가상환경을 관리하는 도구입니다.)
python3.9 -m pip install virtualenv
# 프로젝트 디렉토리 생성
mkdir /var/www/myproject
cd /var/www/myproject
# 가상환경 생성 및 활성화
python3.9 -m virtualenv venv
source venv/bin/activate
댓글
댓글 쓰기