본문 바로가기
웹/백엔드

[AWS EC2 서버 배포] Django 구축하기

by 보안매크로 2024. 6. 20.
728x90

 Window가 설치된 내 데스크탑에서 django로 서버를 구축한 뒤, github에 올리고 AWS EC2 에서 이것을 clone하고 nginx를 설치하여 배포할 예정입니다. 먼저 Window에서 Django를 설치해보겠습니다.

1. 환경 설정

1.1. Python 설치

Django는 Python으로 작성된 웹 프레임워크입니다. 따라서 Python이 설치되어 있어야 합니다.

  • Python 공식 웹사이트에서 Python 최신 버전을 다운로드하고 설치합니다.
  • 설치할 때 Add Python to PATH 옵션을 체크합니다.

1.2. 가상 환경 설정

가상 환경을 사용하면 프로젝트마다 독립적인 Python 환경을 유지할 수 있습니다.

# CMD 또는 PowerShell에서 아래 명령어를 실행합니다.
 
python -m venv myenv myenv\Scripts\activate

1.3. Django 설치

가상 환경이 활성화된 상태에서 Django를 설치합니다. (가상환경 경로에서 activate 명령어 입력 시 활성화)

pip install django
 

2. Django 프로젝트 생성

Django 프로젝트를 생성하고 기본 설정을 합니다.

# Django 프로젝트 생성
django-admin startproject myproject
 
# 프로젝트 디렉토리로 이동
cd myproject # Django

# 개발 서버 실행
python manage.py runserver
 
*포트 변경 - python manage.py runserver 8001
*서버 종료 - cntl + c 

3. GitHub에 프로젝트 업로드

GitHub에 Django 프로젝트를 업로드합니다.

3.1. Git 초기화 및 커밋

# Git 초기화
git init
 
# 모든 파일 추가
git add .
 
# 커밋
git commit -m "Initial commit"

3.2. GitHub에 원격 저장소 생성 및 연결

GitHub에서 새로운 저장소를 생성한 후, 로컬 저장소를 원격 저장소에 연결합니다.

# 원격 저장소 추가
 
# 원격 저장소로 푸시
git push -u origin master

4. AWS EC2 인스턴스 설정 및 코드 클론

AWS EC2 인스턴스를 설정하고 GitHub에서 코드를 클론합니다.

4.1. AWS EC2 인스턴스 생성

  • AWS 관리 콘솔에서 EC2 인스턴스를 생성합니다.
  • 필요한 경우 보안 그룹에서 포트 80(HTTP) 및 443(HTTPS)을 엽니다.

4.2. EC2 인스턴스에 접속 및 코드 클론

# EC2 인스턴스에 SSH로 접속
ssh -i "your-key-pair.pem" ec2-user@your-ec2-ip
 
# 필요한 디렉토리 생성
sudo mkdir -p /var/www/yourproject
 
# 디렉토리 소유권 변경
sudo chown -R $USER:$USER /var/www/yourproject
 
# 프로젝트 디렉토리로 이동
cd /var/www/yourproject
 
# GitHub에서 코드 클론
 
# 프로젝트 디렉토리로 이동
cd yourrepository

5. Nginx 및 Gunicorn 설정

EC2 인스턴스에서 Nginx와 Gunicorn을 설정하여 Django 애플리케이션을 서비스합니다.

5.1. 필요한 패키지 설치

# 패키지 업데이트 및 설치
sudo apt update sudo apt install python3-pip python3-dev nginx
 
# 가상 환경 설정 및 활성화
python3 -m venv myenv source myenv/bin/activate
 
# Django 및 Gunicorn 설치 pip install django gunicorn

5.2. Gunicorn 설정 및 실행

# 프로젝트 루트에서 Gunicorn 실행
gunicorn --workers 3 myproject.wsgi:application

5.3. Nginx 설정

Nginx 설정 파일을 편집하여 Django 애플리케이션을 역방향 프록시로 설정합니다.

sudo nano /etc/nginx/sites-available/myproject
# 아래 내용을 추가
server { listen 80; server_name your_domain_or_IP; location / { proxy_pass http://127.0.0.1:8000; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } }
 
# 설정 활성화 sudo ln -s /etc/nginx/sites-available/myproject /etc/nginx/sites-enabled
 
# Nginx 테스트 및 재시작 sudo nginx -t sudo systemctl restart nginx
728x90