어서와, 개발은 처음이지?

[처음부터 시작하는 EC2] django 프로젝트 생성 본문

EC2_Ubuntu_Devops

[처음부터 시작하는 EC2] django 프로젝트 생성

오지고지리고알파고포켓몬고 2019. 1. 25. 15:55
반응형



지난 글에 이어서 django 프로젝트를 생성하고 외부에서 접속하는 과정을 포스팅 하겠습니다.

django 환경 구성에 관한 내용은 django girls의 튜토리얼을 참고합니다.



1. django 설치


pip로 django를 설치하기에 앞서 pip를 최신버전으로 업그레이드 해줍니다.

> python3 -m pip install --upgrade pip

다음은 프로젝트 경로를 생성하고 가상환경(virtual environments)을 만들어 줍니다.

나중에 node 프로젝트도 만들 예정이므로 경로를 나누어 줍니다.

> mkdir -p ~/app/django/firstproject
> cd ~/app/django/firstproject

> python3 -m venv myvenv

이어서 가상환경을 사용하여 django를 설치합니다.

> source myvenv/bin/activate
(myvenv) > pip install django



2. django 프로젝트 생성


현재 위치는 ~/app/djnago/firstproject입니다.

(myvenv) > django-admin startproject yuddomack .

.은 현재 경로를 뜻합니다.



3. django 프로젝트 설정


firstproject/yuddomack/settings.py 안의 항목 몇 가지를 아래와 같이 추가, 수정합니다.

# 생략 ...
ALLOWED_HOSTS = ['ec2-54-xxx-xxx-179.ap-northeast-2.compute.amazonaws.com', '54.xxx.xxx.179']
# 생략 ... 
TIME_ZONE = 'Asia/Seoul'
# 생략 ...
STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'static')

(중요) ALLOWED_HOSTS에 EC2 인스턴스의 public dns와 public ip를 입력해줘야 해당 주소를 사용하여 django 앱에 정상적으로 접속할 수 있습니다.


만약에 route 53 등을 사용해서 임의의 dns를 얻는다면 ALLOWED_HOSTS에 도메인 추가하는 것을 잊지 마세요!




4. DB 마이그레이션


마지막으로 magrate 명령을 사용하여 DB 마이그레이션을 진행합니다.


현재 위치는 ~/app/djnago/firstproject입니다.

(myvenv) > python manage.py migrate



5. django 앱 실행

(myvenv) > python manage.py runserver 0.0.0.0:8000



6. 인바운드 설정


로컬 개발 환경에선 여기까지 세팅하고 http://localhost:8000을 통해 django 초기 화면을 볼 수 있었습니다.


하지만 EC2는 보안 상, 외부에서 접속하는 port를 제한하고 있는데, 이런 port들을(django에서 사용하는 8000포트 등) 외부에서 접속하기 위해서는 수동으로 열어줘야 하며 이를 '인바운드 정책' 이라고 합니다.


(port가 닫혀있으면 접속할 수 없습니다.)


인바운드 정책을 변경하기 위해 AWS의 EC2 인스턴스에서 좌측 중간쯤에 보안 그룹을 메뉴를 선택합니다.



다음은 보안 그룹 생성을 눌러서 인바운드 규칙을 추가합니다.



nginx를 사용할 예정이기 때문에 기본 http포트인 80번 포트를 추가했습니다. 또한 django 기본 포트인 8000번 포트도 추가했습니다.


0.0.0.0/0은 모든 ip로부터 해당 포트 접속을 허가하겠다는 뜻 입니다.

만약 나만 접속하고 싶다면 작업 pc의 외부 ip주소를 입력해주면 되겠습니다.


27017, 3000번 포트는 추후 작업할 내용을 미리 추가 해둔것으로 당장 지금은 신경쓰지 않아도 됩니다.


입력이 끝났다면 인바운드 규칙을 저장하고 name 옆 체크박스를 눌러서 적용해줍니다.



7. 접속


이제 http://ec2-54-xxx-xxx-179.ap-northeast-2.compute.amazonaws.com:8000 (public dns 혹은 public ip)의 8000번 포트로 접속하면 생성한 django 프로젝트의 초기 화면을 볼 수 있습니다.



이제 EC2에서 django web app을 사용할 수 있게 되었습니다.

devops 카테고리이기 때문에 back end나 페이지를 꾸미는건 다루지 않겠습니다.


다음 글에서는 nginx와 uwsgi를 사용하여 service로써 동작하게 하는 과정을 포스팅하겠습니다.




Comments