Django는 Python을 기반으로 하는 웹 프레임워크로, 고급 기능을 제공하여 웹 애플리케이션 개발을 빠르고 쉽게 만들어 줍니다. Django를 사용하여 애플리케이션을 개발한 후, 전 세계 사용자들에게 제공하기 위해서는 이를 배포해야 합니다. 이 글에서는 Heroku, AWS, DigitalOcean을 사용하여 Django 애플리케이션을 배포하는 방법에 대해 자세히 설명하겠습니다.
Django 애플리케이션 배포 준비하기
배포를 시작하기 전에, 몇 가지 준비 작업이 필요합니다:
- 앱의 소스 코드가 로컬에서 잘 작동하고 있는지 확인합니다.
- 데이터베이스 설정 및 마이그레이션 확인하기.
- 정적 파일 및 미디어 파일 처리 방법 결정하기.
- 비밀 키, 데이터베이스 비밀번호와 같은 민감한 데이터를 환경변수로 관리하기.
1. 의존성 관리
Django 애플리케이션에서 사용하는 라이브러리(예: Django, psycopg2 등)의 목록을 requirements.txt 파일에 작성해야 합니다. 이 파일은 다음과 같은 형식으로 작성할 수 있습니다:
django==3.2
gunicorn==20.1
psycopg2-binary==2.9
2. settings.py 수정하기
배포 환경을 위해 settings.py 파일의 몇 가지 설정을 조정해야 합니다:
import os
from urllib.parse import urlparse
# 비밀 키 및 데이터베이스 설정
SECRET_KEY = os.environ.get('DJANGO_SECRET_KEY', 'your-default-secret-key')
DEBUG = os.environ.get('DEBUG', '') != 'False'
# ALLOWED_HOSTS와 데이터베이스 설정
ALLOWED_HOSTS = ['your-heroku-app.herokuapp.com', 'your-aws-app.com']
DATABASE_URL = os.environ.get('DATABASE_URL')
# DATABASES 설정
if DATABASE_URL:
url = urlparse(DATABASE_URL)
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql',
'NAME': url.path[1:], # name은 url의 path에서 가져옴
'USER': url.username,
'PASSWORD': url.password,
'HOST': url.hostname,
'PORT': url.port,
}
}
else:
# 로컬 데이터베이스 설정
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': BASE_DIR / 'db.sqlite3',
}
}
Heroku에 Django 애플리케이션 배포하기
Heroku는 쉽고 빠르게 애플리케이션을 배포할 수 있는 플랫폼입니다.
1. Heroku CLI 설치 및 로그인
먼저 Heroku CLI를 설치하고 로그인합니다:
brew tap heroku/brew && brew install heroku
heroku login
2. Heroku 앱 만들기
Heroku에 새 앱을 만들기 위해 다음 명령어를 입력합니다:
heroku create your-app-name
3. Git에 코드 커밋하기
변경된 코드를 Git에 커밋합니다:
git add .
git commit -m "prepare for deployment"
4. Heroku에 코드 푸시하기
코드를 Heroku에 푸시합니다:
git push heroku master
5. 데이터베이스 마이그레이션
데이터베이스를 마이그레이션합니다:
heroku run python manage.py migrate
6. 정적 파일 수집
정적 파일을 수집하여 배포합니다:
heroku run python manage.py collectstatic --noinput
7. 애플리케이션 실행
이제 애플리케이션이 배포되었습니다. Heroku 대시보드에서 앱을 열어 확인할 수 있습니다.
AWS에 Django 애플리케이션 배포하기
AWS는 다양한 서비스를 제공하여 안정적이고 확장 가능한 애플리케이션 배포를 지원합니다. EC2 인스턴스를 사용하여 Django 애플리케이션을 배포할 수 있습니다.
1. AWS 계정 생성 및 EC2 인스턴스 시작하기
AWS 계정이 없다면 계정을 생성하고 EC2 인스턴스를 시작합니다.
인스턴스 설정 시 Amazon Linux, Ubuntu 등 원하는 OS를 선택할 수 있으며, 인스턴스 유형은 t2.micro를 선택해 무료로 사용 가능합니다.
2. SSH를 통해 EC2 인스턴스에 접속하기
SSH를 사용하여 EC2 인스턴스에 접속합니다:
ssh -i "your-key.pem" ec2-user@your-ec2-public-dns
3. 필수 패키지 설치하기
필요한 패키지를 설치합니다:
sudo yum update -y
sudo yum install python3-pip -y
sudo yum install git -y
4. Django 애플리케이션 복사하기
코드를 EC2 인스턴스로 복사합니다. (예: SFTP, Git 등)
git clone https://github.com/your-repo.git
5. 가상 환경 설정 및 의존성 설치하기
가상 환경을 설정하고 의존성을 설치합니다:
cd your-repo
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
6. 데이터베이스 설정하기
AWS RDS와 같은 서비스를 사용해 PostgreSQL 데이터베이스를 설정할 수도 있습니다. RDS 인스턴스를 만든 후, connection string을 Django settings.py에 추가합니다.
7. Gunicorn 및 Nginx 설정하기
Gunicorn을 사용하여 Django 서버를 실행합니다:
gunicorn your_project.wsgi:application --bind 0.0.0.0:8000
Nginx를 리버스 프록시로 설정하여 Gunicorn과 함께 사용할 수 있습니다: