파이썬으로 장고(Django) 공략하기: 입문 강의를 정리한 내용입니다.

  • 웹 앱을 호스팅할 서버를 AWS(Amazon Web Service)를 통해 생성해보자.
  • AWS를 이용하면 웹 앱을 실행하고 인터넷에 공개하기 위한 서버 인스턴스를 손쉽게 생성할 수 있다.

서버 인스턴스 생성 후 IP 연결

  1. 로그인 후 AWS Management Console로 들어가 EC2를 클릭
  2. 우측 상단의 리전을 서울로 선택한 후 인스턴스 시작 버튼 클릭
  3. AMI 선택 : 할당받을 서버 컴퓨터의 운영체제를 선택하는 목록 중 프리 티어 사용가능으로 된 우분투 서버를 선택
  4. 인스턴스 유형 선택 : 연습용이기 때문에 프리 티어 사용 가능으로 된 것을 체크 후 다음: 인스턴스 세부 정보 구성을 클릭
  5. 인스턴스 구성 : 다음 클릭
  6. 스토리지 추가 : 프리 티어 사용 가능 고객은 최대 30GB의 EBS 범용(SSD) 또는 마그네틱 스토리지를 사용할 수 있습니다.라고 써있기 때문에 크기를 30으로 수정한 후 다음 클릭
  7. 태그 추가 : 다음 클릭
  8. 보안 그룹 구성 : 유형을 추가하고 검토 및 시작 클릭
    • SSH : 터미널을 열기 위한 22번 포트
    • HTTP : url을 치고 들어갔을 때의 기본 80번 포트
    • 사용자 지정 TCP 규칙 : 장고 runserver의 기본 8000번 포트 보안 그룹 구성
  9. 검토 : 시작하기 클릭 후 새 키 페어 생성, 키 페어 이름을 지정 후 키 페어 다운로드 클릭. 키 페어 이름으로 된 서버 접속을 위한 마스터 키가 되어주는 pem 확장자의 파일이 다운된다. 인스턴스 시작 클릭
  10. 지금 인스턴스를 시작 중입니다.가 뜨면 성공! 인스턴스 보기를 클릭하면 방금 시작한 인스턴스를 조회할 수 있다.
  11. 외부에서 접속할 수 있는 고정된 IP를 할당받기 위해 탄력적 IP 메뉴로 이동한다.
  12. 새 주소 할당 > 할당을 클릭하여 탄력적 IP를 생성한다.
  13. 우클릭 주소 연결 : 10번의 인스턴스 목록에 있는 인스턴스 아이디를 입력하여 연결 클릭하면 인스턴스에 고정 IP가 연결된다.

PuTTYgen으로 .pem 파일을 .ppk 파일로 변환

  1. PuTTYgen에서 생성할 키 유형(Type of key to generate)에서 RSA를 선택한다.
  2. Load를 선택 후 .pem 파일을 불러오면 불러오는 데 성공했다고 뜨며, PuTTY에서 이 키를 사용하기 위해 Save private key를 클릭한다.

PuTTY로 생성한 서버 인스턴스로 접속

  1. Connection > SSH > Auth : Private key file for authentication에 ppk 파일을 등록한다.
  2. Sesstion : IP와 Saved Sesstions를 지정하고 Save한 후 Open
  3. 호스트 키 저장 팝업에서 ‘예’를 누른 후 login as : 에 ubuntu를 입력, ppk 암호를 입력하면 접속이 된다.

서버에 장고 웹 앱을 실행하기 위한 기본적인 구성요소와 파이썬3을 설치

  • 우분투 서버에 필요한 패키지를 업데이트하는 명령어
    • sudo : 최고 권한을 부여해서 명령어를 실행
$ sudo apt-get update
$ sudo apt-get install build-essential
$ sudo apt-get install python3
$ sudo apt-get install python3-pip
$ sudo pip3 install --upgrade pip
  • 리눅스 환경에서 Github에 접속하기 위한 ssh-key를 생성, 비밀번호를 입력하라고 하면 입력 후 엔터
$ ssh-keygen -t rsa
  • 키가 /home/ubuntu/.ssh/id_rsa.pub에 저장되었다고 뜨는데, 다음의 명령어를 입력하면 입력된 내용을 조회할 수 있다.
$ cat /home/ubuntu/.ssh/id_rsa.pub
  • 조회한 내용을 복사하여 깃허브 저장소의 Settings > Deploy keys에 등록하면 깃허브에서 소스코드를 내려받을 수 있게 된다.
  • 이제 www 폴더에 원격 저장소의 소스코드를 받는다. (Ssh 주소는 저장소 웹 페이지에서 Clone or download 드롭다운 메뉴 안에 Use SSH 링크를 클릭하면 git@으로 시작하는 ssh주소가 뜬다.)
$ mkdir www
$ cd www
$ git clone {clone ssh 주소}
  • 이제 내려받은 프로젝트 폴더의 루트 폴더로 이동하여 virtualenv에 필요한 라이브러리 환경을 구성한다.
$ cd {프로젝트 폴더명}
$ sudo apt-get install virtualenv
$ virtualenv -p python3 venv
$ source venv/bin/activate
$ pip install -r requirements.txt
  • 장고 웹 앱 실행
$ python manage.py runserver 0.0.0.0:8000
  • 실행 후 IP로 직접 접속했을 때 외부에서 서버로 접근할 수 없다는 오류가 뜨기 때문에 settings.py를 수정한다.
  • 프로젝트 폴더로 이동한 후 명령어 vi settings.py를 사용하면 해당 파일을 열 수 있다.
    • i 를 입력하면 입력모드
    • ESE를 입력하면 이동할 수 있다.
    • :wq를 입력하면 저장 후 종료
# 프로젝트 폴더의 settings.py
ALLOWED_HOSTS = ['*']