Tech & Programming/서버 & 보안

REST API 서버구축(2/ 2) - python, virtualenv, Django-rest-api 설치

소스코드 요리사 2018. 7. 22. 18:43

지난 번 REST API 서버 구축 첫번째 글 작성에 이어 2번째 글을 작성합니다. 

(이전 글 참고 : 2018/04/06 - [Tech & Programming/서버 & 보안] - REST API 서버구축(1/ 2) - AWS EC2 인스턴스 생성)


인사말 안드로이드 앱(기분 좋은 인사)을 개발할 때 모든 DATA를 res(Local)에 넣기에는 매번 앱을 마켓에 업데이트 해야고, 용량이 커지는 불편함이 있어 REST API서버 구축의 필요성을 느꼈습니다.  그래서, 인터넷으로 REST API에 대해 조사를 했는데, 빠르고 간단하게 구축하기 위해서 사람들은 스피링 부트와 Django 가 많은 사람들이 이용하는 것 같았습니다.

저는 안드로이드 앱개발이 주된 목적이었고, 주고 받는 데이터도 복잡하지 않았기 때문에 생산성이 더 좋다고 알려진 Django로 개발하기로 결정했습니다.



1.  Python 3.5 설치

프롬프트에 다음과 같이 입력하면 현재 설치된 파이썬 버전을 확인 할 수 있습니다.


$ python --version 

결과 : Python 2.7.12


저는 AWS 인스턴스에 이미 Python 2 버전이 설치되어 있었습니다. 하지만, Python 3 이 필요했기 때문에 다시 Python 3을 설치했습니다.

설치 방법은 아래와 같이 입력하면됩니다.


우분투 리눅스 기준

$ sudo apt install python 3.5


설치가 완료되고 python --version 을 입력해봅니다.

저는 설치하고 나서도 파이썬2로 나왔습니다. 

대수롭지 않게 넘기고 이후에 Django를 설치하다 보니 계속 3버전이 필요하다고 했었습니다. 

확인해보니 여러개의 버전이 설치된 경우 기본으로 사용할 파이썬을 강제로 변경을 해줘야 했었습니다. 


기본 파이썬 버전을 변경하는 방법은 아래와 같습니다.


$ sudo update-alternatives --config python


프롬프트에 위 명령어를 입력합니다. 그러면 아래와 비슷하게 나올껍니다.
(저는 이미 3.5가 선택된 상태입니다.)

이 때  버전에 해야하는 번호를 입력하면 됩니다.



2. virtualenv 설치

파이썬에서는 한 라이브러리에 대해 하나의 버전만 설치가 가능하기 때문에 여러개의 프로젝트를 진행 시에 문제가 될 수 있습니다.

따라서, 격리된 독립적인 환경을 구성하기 위해서 가상환경을 설정합니다.


python과 함께 딸려오는 것이 있는데 pypi (python package installer)입니다.

파이썬의 패키지를 설치하는 install 프로그램입니다. 


먼저 설치된 pip를 업그레이드 해줍니다. 업그레이드가 안 될경우 오류나 PyPI 인덱스가 업데이트가 안되어 원하는 버전이 설치가 안될 수 있습니다.

$ pip install --upgrade pip


python 버젼에 따라 아래와 같이 실행하고,  --version 옵션을 통해 그 버젼을 확인해볼 수 있습니다.


Python3 의 경우
$ sudo pip3 install virtualenv

Python2 의 경우
$ sudo pip2 install virtualenv

그리고, 가상환경을 만들 경로로 이동을 합니다. 이동 후 아래 명령을 실행시킵니다.
$ virtualenv venv

해당 경로 아래에 venv 이름으로 디렉토리가 생성되고 가상환경이 만들어집니다.
실행은 아래와 같이 합니다.(venv 라는 디렉토리로 가상환경을 생성했다고 가정합니다.)
$ . ./venv/bin/activate

아래 그림은 제가 작성한 프로젝트에서 실행한 화면입니다.
쉘프롬프트 앞에 (venv) 라는 것이 붙은 것을 확인할 수 있습니다.
이 (venv) 를 통해 가상환경이 실행되고 있는 것임을 알 수 있습니다.


그리고, 빠져나가기 위해서는 deactivate 라고 입력하면 됩니다.


3. Django 설치 및 기타 프레임워크 설치

Django-REST framework install 페이지(http://www.django-rest-framework.org/#installation) 에 가보면 필수적으로 설치해야되는 프로그램과 optional하게 설치할 패키지 리스트가 나와있습니다. 참조하셔서 필요한 패키지를 설치하시면 될 것 같습니다.


(1) 필수설치 항목 

  • Python (2.7, 3.2, 3.3, 3.4, 3.5, 3.6)
  • Django (1.10, 1.11, 2.0)


(2) Optional 설치항목

  • coreapi (1.32.0+) - Schema generation support.
  • Markdown (2.1.0+) - Markdown support for the browsable API.
  • django-filter (1.0.1+) - Filtering support.
  • django-crispy-forms - Improved HTML display for filtering.
  • django-guardian (1.1.1+) - Object level permissions support.


먼저 필수 프레임워크인 Django 설치 입니다.

$ pip install django

또는

$ pip install django==버전


그리고, 기타 프레임워크도 설치합니다. 'pip install 패키지명' 형식으로 아래와 같이 필요 패키지들을 설치해주시면 됩니다.

$ pip install djangorestframework

$ pip install markdown       

$ pip install django-filter  


그리고, 참고로 pip 로 설치한 패키지들의 리스트를 보고 싶으면  $ pip freeze 를 입력하시면 됩니다.

아래 그림은 저한테 설치된 패키지들입니다.



4. Django 프로젝트 생성 및 프로그램 작성준비

이제 설치는 마무리되었으니, 프로젝트를 생성합니다. 당연히 프로젝트를 생성할 때에는 virtualenv가 실행된 가상환경이어야 합니다.


$ django-admin startproject mysite .


그러면 일반적으로 아래와 같은 디렉토리구조가 생깁니다.

(출처 : https://docs.djangoproject.com/ko/2.0/intro/tutorial01/)




이중에서 setting.py 파일 안의  Language, Time Zone, install app 을  아래와 같이 수정해줍니다.

Language, Time Zone 은 특별한 설명이 없어도 이해되실꺼라 생각됩니다. 당연히 한국이니까 한국과 관련된 정보로 수정되어야겠죠?

INSTALLED_APPS는 현재 Django 인스턴스에서 활성화된 모든 Django 어플리케이션들의 이름입니다. 

쉽게 이야기하면 C의 include 패키지 랑 비슷하다고 할까요?


우리는 rest framework 를 사용할 것이기 때문에 아래와 같이 관련 어플리케이션을 추가합니다.




그러면 이제 기본 세팅까지 끝이 나게됩니다.


이제 Django 웹사이트를 개발하듯이 개발을 진행하면 됩니다. 

아래 5번 섹션의 참고 사이트를 방문하시면 튜토리얼 및 문서 등을 볼 수 있습니다.


5. 참고 사이트

Django 프로젝트 사이트 : https://docs.djangoproject.com/ko/2.0/intro/

Django REST API 공식 사이트 (인스톨페이지) : http://www.django-rest-framework.org/#installation

pip 사용법 : https://pip.pypa.io/en/latest/installing/#installing-with-get-pip-py

장고걸스 튜토리얼 페이지 : https://tutorial.djangogirls.org/ko/