마지막 단원이다. 이번 단원에서는 아주 간단하게 AWS 클라우드에 서버를 올리는 것을 목표로 한다. 개인 프로젝트 계획에 없던 부분은 모두 건너뛰고 진행하였다
프로그래머스 스터디에서 배운 것(EC2 인스턴스를 사용했었다)과는 다르게 LightSail 서비스를 이용하여 인스턴스를 만들었다.
EC2 vs LightSail
두 서비스 모두 macOS, Windows, Linux OS를 버전을 골라 사용할 수 있고, 고정 아이피 기능도 사용할 수 있다. 두 서비스의 차이점을 아주 간단하게 말하자면, EC2는 기능을 상세하게 조절할 수 있어 복잡하지만, 그에 비해 LightSail은 주어지는 옵션이 적고, 사용 방법이 매우 간단하다는 것이다.
가입하고 서버를 만드는 과정은 과금이 되므로, 몇 가지 기능만 리뷰하도록 하겠다.
위 이미지처럼 Ubuntu Linux 20.04 버전 인스턴스를 등록하였고, 네트워킹 탭에서 고정 아이피로 설정하고, 포트를 추가해 사용하게 되었다.
인스턴스를 이용하게 되면 다음과 같이 cmd입력 창에 나타난다. 이곳에서 파이썬 가상환경을 만들고 장고를 설치할 수 있었다.
# 먼저 설치가 필요한 패키지
$ sudo apt install markdown
$ sudo apt install wheel
# 파이썬 가상환경툴과 장고 설치
$ sudo apt install python3-venv
$ sudo apt install django
그리고 git을 이용하여 장고 프로젝트를 해당(production) 서버에 옮긴다.
마지막으로 settings를 개발(local)용과 서버용(prodcution)으로 나누어 따로 'ALLOWED_HOSTS'를 설정해야한다.
settings.py를 config/settings 폴더에 넣고 다른 이름(여기에선 base.py)으로 수정한다. 그 후, 아래와 같이 프로젝트의 BASE_DIR를 바꿔주고, local용, production용으로 ALLOWED_HOSTS만 수정해준다.
- config/settings/base.py
BASE_DIR = Path(__file__).resolve().parent.parent.parent
- config/settings/local.py
from .base import * ALLOWED_HOSTS = []
- config/settings/prod.py
from .base import * ALLOWED_HOSTS = ['클라우드 서버의 IP주소']
이제 서버를 실행시킬 때,
manager.py runserver --settings=config.settings.prod
manager.py runserver --settings=config.settings.local
와 같이 settings옵션을 따로 설정하여 해당 환경에서 서버를 실행시켜볼 수 있다.
local 환경에서 IP주소를 통해 접속한 화면
이러한 내용 외로 Nginx와 Gunicorn을 이용한 동적 페이지 요청을 처리할 수도 있고, 장고에 로깅을 적용하거나, 도메인 적용, PostgreSQL 적용하는 방법들이 책에 추가로 소개되어 있다.
이렇게 짧은 시간만에 장고의 기본기를 배우고, AWS 클라우드 환경에서 서버를 작동시켜보았다. 당장은 개인 프로젝트에 적용해야하기 때문에 3단원에서의 로그인 기능이나 게시물 삭제, 네비게이션 기능 등은 아직 배우지 않고 넘어갔다. 머신러닝 서빙 프로젝트를 끝낸 후에 게시판 안드로이드 앱을 만들면서 추가적으로 더 배울 계획이다.