Django 배포 방법 (AWS, Heroku, Docker 활용)
Django 애플리케이션을 개발한 후 이를 실제 서비스로 배포하는 과정은 중요합니다. 이번 글에서는 Django 애플리케이션을 AWS, Heroku, Docker를 활용하여 배포하는 방법을 상세히 설명하겠습니다.
1. AWS를 활용한 Django 배포
AWS(Amazon Web Services)는 강력한 클라우드 서비스로, Django 애플리케이션을 배포하는 데 적합합니다. 일반적으로 EC2, RDS, S3, Elastic Beanstalk 등을 활용합니다.
1.1 AWS 환경 설정
- AWS 계정 생성: AWS 공식 사이트(https://aws.amazon.com/)에서 계정을 생성합니다.
- EC2 인스턴스 생성: AWS 콘솔에서 EC2 인스턴스를 생성합니다.
- 보안 그룹 설정: HTTP(80), HTTPS(443), SSH(22) 포트를 열어줍니다.
- 도메인 연결 (선택사항): Route 53을 이용하여 도메인을 연결할 수 있습니다.
1.2 Django 배포 준비
EC2에 SSH로 접속하여 Python 환경을 설정합니다.
# 패키지 업데이트 및 Python 설치
sudo apt update && sudo apt upgrade -y
sudo apt install python3-pip python3-venv -y
가상 환경을 만들고 Django 애플리케이션을 배포합니다.
mkdir django_project && cd django_project
python3 -m venv venv
source venv/bin/activate
pip install django gunicorn
1.3 Gunicorn과 Nginx 설정
Gunicorn을 이용해 Django 애플리케이션을 실행하고, Nginx를 리버스 프록시로 설정합니다.
Gunicorn 실행:
gunicorn --bind 0.0.0.0:8000 myproject.wsgi:application
Nginx 설정 파일 (/etc/nginx/sites-available/django
):
server {
listen 80;
server_name example.com;
location / {
proxy_pass http://127.0.0.1:8000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
이후, sudo ln -s /etc/nginx/sites-available/django /etc/nginx/sites-enabled
명령어를 실행하고 Nginx를 재시작합니다.
sudo systemctl restart nginx
1.4 데이터베이스 설정
AWS RDS에서 PostgreSQL을 설정한 후, settings.py
에서 데이터베이스 연결을 변경합니다.
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql',
'NAME': 'mydatabase',
'USER': 'myuser',
'PASSWORD': 'mypassword',
'HOST': 'mydbinstance.xxx.rds.amazonaws.com',
'PORT': '5432',
}
}
이제 Django 애플리케이션이 AWS에서 실행됩니다.
2. Heroku를 활용한 Django 배포
Heroku는 배포가 쉬운 PaaS(Platform as a Service)입니다.
2.1 Heroku 환경 설정
- Heroku 계정 생성 (https://www.heroku.com/)
- Heroku CLI 설치 (
sudo snap install --classic heroku
) - 로그인 및 프로젝트 설정
heroku login
heroku create my-django-app
2.2 Django 프로젝트 준비
requirements.txt
파일 생성:pip freeze > requirements.txt
Procfile
생성:web: gunicorn myproject.wsgi --log-file -
runtime.txt
생성:python-3.9.10
settings.py
에서 Heroku 환경을 고려한 설정 변경:import django_heroku django_heroku.settings(locals())
2.3 Heroku 배포
git init
git add .
git commit -m "Deploy to Heroku"
heroku git:remote -a my-django-app
git push heroku master
heroku ps:scale web=1
heroku open
이제 Django 애플리케이션이 Heroku에서 실행됩니다.
3. Docker를 활용한 Django 배포
Docker는 컨테이너 기반의 배포를 쉽게 도와줍니다.
3.1 Docker 환경 설정
Docker 및 Docker Compose 설치
sudo apt install docker.io docker-compose -y
Dockerfile 작성
FROM python:3.9 WORKDIR /app COPY . . RUN pip install -r requirements.txt CMD ["gunicorn", "myproject.wsgi:application", "--bind", "0.0.0.0:8000"]
docker-compose.yml 작성
version: '3' services: web: build: . ports: - "8000:8000"
3.2 Docker 컨테이너 실행
docker-compose up -d
이제 http://localhost:8000
에서 Django 애플리케이션이 실행됩니다.
마무리
이번 포스팅에서는 AWS, Heroku, Docker를 활용하여 Django 애플리케이션을 배포하는 방법을 살펴보았습니다. 각각의 방법은 특정 상황에 적합하며, 프로젝트에 맞는 방식을 선택하는 것이 중요합니다. 앞으로 실전 프로젝트에서도 이를 활용하여 안정적인 배포 환경을 구축하시길 바랍니다.
'Python Django' 카테고리의 다른 글
Django + React/Vue.js를 활용한 풀스택 프로젝트 구축하기 (0) | 2025.03.14 |
---|---|
Django에서 보안 설정 (CSRF, XSS, SQL Injection 방어) (0) | 2025.03.13 |
Django에서 WebSocket과 채팅 기능 구현 (Django Channels) (0) | 2025.03.11 |
Django에서 비동기 처리를 위한 Celery 사용법 (0) | 2025.03.10 |
Django에서 REST API 만들기 (Django REST Framework 소개 및 기본 사용법) (0) | 2025.03.09 |