AWS 인스턴스에서 django를 이용하여 블로그를 만들어보려고 합니다.
그 첫번째로, django 프로젝트 생성에 대하여 포스트 해보겠습니다.
django 설치
pip로 django를 설치하기에 앞서 pip를 최신버전으로 업그레이드 해줍니다.
python3 -m pip install --upgrade pip
다음은 프로젝트 경로를 생성하고 가상환경(virtual environments)을 만들어 줍니다.
하단의 [프로젝트이름]에 프로젝트 명을 넣어줍니다. 저는 'Test'이라는 이름을 사용하였습니다
> mkdir -p ~/app/django/[프로젝트이름]
> cd ~/app/django/[프로젝트이름]
> python3 -m venv myvenv
이어서 가상환경을 사용하여 django를 설치합니다.
> source myvenv/bin/activate
(myvenv) > pip install django
django 프로젝트 생성
위치는 ~/app/djnago/Test 으로 이동하고 아래와 같이 명령어를 입력하여 프로젝트 생성합니다.
[생성할 프로젝트명]에는 본인의 프로젝트 명을 입력하면 됩니다. 저는 'TestProject'으로 사용하였습니다.
(myvenv) > django-admin startproject [생성할 프로젝트명] .
django 프로젝트 설정
django 프로젝트가 생성되었습니다. Test/TestProject/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 앱에 정상적으로 접속할 수 있습니다.
마이그레이션
~/app/djnago/Test 경로로 다시 가서 아래와 같이 명령어를 입력하여 마이그레이션 진행합니다.
(myvenv) > python manage.py migrate
해당 명령어 실행 시 아래와 같은 오류가 뜨는 경우가 있다.
django.core.exceptions.ImproperlyConfigured: SQLite 3.9.0 or later is required (found 3.7.17).
이는 SQLite 의 버전이 최소 버전을 만족하지 못하는 경우로, 아래 스텝에 따라 SQLite 3.9 버전 이상을 다운받아 설치를 한다.
1. Download the latest source code with the configure script from here. Currently this is:
> curl https://www.sqlite.org/2020/sqlite-autoconf-3320300.tar.gz | tar xzf -
2. Go into the created directory and create the Makefile with our system dependant options:
> cd ./sqlite-autoconf-3320300 && ./configure
3. Build the binary
> make
4. Install it
> sudo make install
5. Clean up
> cd .. && rm -r ./sqlite-autoconf-3320300
django app 실행
(myvenv) > python manage.py runserver 0.0.0.0:8000
앱이 실행되지만 EC2는 보안 상, 외부에서 접속하는 port를 제한하고 있는데, 이런 port들을(django에서 사용하는 8000포트 등) 외부에서 접속하기 위해서는 수동으로 열어줘야 하며 이를 '인바운드 정책' 이라고 합니다.
인바운드 정책을 변경하기 위해 AWS의 EC2 인스턴스에서 좌측 중간쯤에 보안 그룹을 메뉴를 선택합니다.
다음은 보안 그룹 생성을 눌러서 인바운드 규칙을 추가합니다.
django 기본 포트인 8000번 포트를 추가합니다.
이제 http://ec2-54-xxx-xxx-179.ap-northeast-2.compute.amazonaws.com:8000 (public dns 혹은 public ip)의 8000번 포트로 접속하면 생성한 django 프로젝트의 초기 화면을 볼 수 있습니다.
Reference
https://yuddomack.tistory.com/