본문 바로가기

Django를 AWS에 배포하는 5단계

_Big 2025. 5. 19.
반응형

django 로고 이미지


Amazon Web Services(AWS)는 Django 애플리케이션을 호스팅하고 확장하기 위한 강력한 인프라를 제공합니다. 스타트업 프로젝트를 시작하든, 프로덕션급 웹앱을 구축하든, AWS에 Django 사이트를 배포하면 유연성과 확장성, 성능을 모두 확보할 수 있습니다.

이 가이드에서는 EC2, RDS, S3와 같은 AWS의 핵심 서비스를 활용해 Django 프로젝트를 배포하는 과정을 5단계로 나누어 설명합니다.

서론

AWS는 다양한 도구를 제공하지만, Django 배포에 가장 널리 쓰이며 관리가 쉬운 조합은 다음과 같습니다:

  • EC2: Django 코드를 실행하는 가상 서버
  • RDS: PostgreSQL 또는 MySQL과 같은 관리형 데이터베이스
  • S3: 정적 파일 및 미디어 파일 저장용 객체 스토리지
  • Route 53 또는 Elastic IP: 도메인 및 네트워크 설정

그럼 이제 Django 앱을 AWS에 배포하는 핵심 5단계를 살펴보겠습니다.

 

1단계: EC2 인스턴스 생성 및 설정

  1. AWS EC2 대시보드에서 새 인스턴스를 생성합니다(Ubuntu 또는 Amazon Linux 추천).
  2. 인스턴스 타입 선택(t2.micro는 테스트용으로 적합).
  3. SSH 접속을 위한 키 페어 생성 및 다운로드.
  4. 보안 그룹에서 포트 22(SSH), 80(HTTP), 443(HTTPS) 열기.
  5. 서버에 SSH 접속:
ssh -i mykey.pem ec2-user@your-ec2-ip

패키지 업데이트 및 필수 항목 설치:

sudo apt update && sudo apt install python3-pip python3-venv nginx git

Django 프로젝트를 클론하고 가상 환경을 구성합니다.

 

2단계: RDS로 PostgreSQL 설정

  1. RDS 대시보드에서 새 PostgreSQL 데이터베이스 인스턴스 생성.
  2. EC2 인스턴스에서 접근 가능하도록 퍼블릭 접근 설정.
  3. Django settings.py에 다음과 같이 RDS 연결 설정:
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql',
        'NAME': 'yourdbname',
        'USER': 'youruser',
        'PASSWORD': 'yourpassword',
        'HOST': 'your-rds-endpoint',
        'PORT': '5432',
    }
}

EC2에서 마이그레이션 실행:

python manage.py migrate

 

3단계: Gunicorn 및 Supervisor 설정

pip install gunicorn
sudo apt install supervisor

/etc/supervisor/conf.d/yourproject.conf에 설정 파일 작성:

[program:yourproject]
command=/home/ubuntu/yourenv/bin/gunicorn yourproject.wsgi:application
directory=/home/ubuntu/yourproject
autostart=true
autorestart=true
stderr_logfile=/var/log/yourproject.err.log
stdout_logfile=/var/log/yourproject.out.log
user=ubuntu

Supervisor 실행:

sudo supervisorctl reread
sudo supervisorctl update
sudo supervisorctl start yourproject

 

4단계: Nginx로 리버스 프록시 구성

/etc/nginx/sites-available/yourproject에 설정 파일 생성:

server {
    listen 80;
    server_name yourdomain.com;

    location = /favicon.ico { access_log off; log_not_found off; }
    location /static/ {
        root /home/ubuntu/yourproject;
    }

    location / {
        include proxy_params;
        proxy_pass http://127.0.0.1:8000;
    }
}

설정 적용:

sudo ln -s /etc/nginx/sites-available/yourproject /etc/nginx/sites-enabled
sudo nginx -t
sudo systemctl restart nginx

 

5단계: S3에 정적/미디어 파일 저장

  1. S3 버킷 생성 후 권한 설정.
  2. Django와 S3를 연동하기 위해 django-storages 설치:
pip install boto3 django-storages

settings.py 설정 추가:

DEFAULT_FILE_STORAGE = 'storages.backends.s3boto3.S3Boto3Storage'
AWS_STORAGE_BUCKET_NAME = 'your-bucket-name'
AWS_ACCESS_KEY_ID = 'your-access-key'
AWS_SECRET_ACCESS_KEY = 'your-secret-key'

이제 collectstatic 실행 시 파일이 S3에 업로드됩니다.

 

마치며

AWS에 Django를 배포하는 것은 처음에는 복잡하게 느껴질 수 있지만, 단계를 나누어 진행하면 충분히 관리 가능한 작업입니다. EC2, RDS, S3를 활용하면 안정적이고 확장 가능한 환경에서 Django 앱을 운영할 수 있습니다.

여러분은 Django를 AWS에 배포해본 경험이 있으신가요? 어려웠던 점이나 유용했던 도구, 팁이 있다면 댓글로 공유해 주세요—함께 더 나은 배포 환경을 만들어봅시다!

 

 

Django 모델링: 데이터베이스 설계의 핵심

강력한 웹 애플리케이션은 모두 잘 구조화된 데이터베이스 위에 구축됩니다. Django 세계에서는 데이터를 제대로 모델링하는 것이 모든 것의 출발점입니다—사용자 인터랙션부터 백엔드 처리까

bigadmin.org

 

반응형

댓글