AWS EC2에 Django 프로젝트 배포하기

KeonWoo Kim·2021년 10월 20일
0

aws

목록 보기
7/8

로컬 환경에서 개발한 장고 프로젝트를 배포해보려고 한다.
Django+Nginx+Gunicorn+PostgreSQL로 개발을 진행하였으며 Docker-compose를 사용했다.

EC2 인스턴스 생성

1. AWS 프리티어 계정 생성

2. EC2 인스턴스 생성

3. 인스턴스가 생성되었으면 접속하기

4. docker 설치하기

https://docs.docker.com/engine/install/ubuntu/
공식 문서를 참고해서 docker를 설치하였다.

설치가 완료 되었으면 sudo docker --version 명령어로 확인한다.

5. docker-compose 설치하기

https://insight.infograb.net/docs/aws/installing-docker-compose-on-aws-ec2/
블로그를 참고해서 docker-compose를 설치하였다.
그냥 설치를 진행하면 버전 에러가 발생해서 docker-compose를 사용할 수 없다.
따라서 위의 블로그를 참고해서 특정 버전을 설치해야한다.

설치가 완료 되었으면 sudo docker-compose --version 명령어로 확인한다.

6. 80 포트 열어주기

로컬에서 개발을 진행할때 8000포트 대신에 80 포트를 사용하였다.
따라서 외부에서 접속을 하기위해서 80 포트를 열어줘야 한다.

  1. 인스턴스를 선택 후 보안 탭에서 보안그룹 클릭

  2. 인바운드 규칙 -> Edit inbound rules

  3. 규칙 추가 -> 유형-Http 선택 -> 규칙 저장

  4. netstat -ntlp 명령어로 80 포트 열렸는지 확인


github로 Django 프로젝트 받기

프로젝트를 옮기는 방법에는 여러가지가 있을 수 있겠지만 나는 git을 사용하였다.
git을 이용하면 프로젝트를 옮길 수 있는 장점도 있지만 버전 관리를 할 수 있다는 장점이 있다.

1. git 설치하기

sudo apt install git 으로 git을 설치해준다.
설치가 완료되었으면 git clone 을 통해 프로젝트를 다운받아준다.

2. IP 추가해주기

로컬 환경에서 배포를 할 때는 127.0.0.1로 접속을 하였지만 EC2에서 배포를 할 때는 EC2의 아이피로 접속을 하기 때문에 EC2의 IP를 .env.prod 파일에 추가해줘야 한다.

vi .env.prod로 .env.prod 파일을 열고 EC2 아이피를 127.0.0.1 옆에다가 추가해준다.

3. 웹서버 실행하기

IP 인바운드 규칙을 추가하고 git clone으로 프로젝트를 다운받고 .env.prod 파일에 IP를 추가했으면 이제 서버를 실행시키면 된다.

docker-compose를 사용했으므로 sudo docker-compose up -d --build 명령어로 서버를 실행한다.

다음과 같이 서버가 정상적으로 실행된 것을 알 수 있다.

sudo docker ps -a 명령어로도 확인할 수 있다.

4. 에러 해결하기

IP로 접속을 해보면 다음과 같이 ProgrammingError가 발생한 것을 알 수 있다.
이는 migrate를 해주지 않아서 발생한 문제이다.

다음 명령어들로 migrate 해주면 에러를 해결할 수 있다.

sudo docker-compose exec web python manage.py makemigrations

sudo docker-compose exec web python manage.py migrate

5. 외부 접속하기

다시 한번 접속을 해보면 이제 정상적으로 실행이 된 것을 알 수 있다.

글 작성도 되는 것을 확인하였다.

profile
안녕하세요

0개의 댓글