Django는 Python 언어로 작성되었다. 따라서 Python이 있어야 Django를 실행할 수 있다.
개발환경OS : Ubuntu 18.04.3 LTS
(base)$ sudo apt install python
Django에서 가상환경(Virtual Environment)이란 Python 코드 상의 독립된 공간을 의미한다. 즉, 한 local에서 다양한 프로젝트를 같이 한다면, 패키지 간의 버전차이, 혹은 여러가지 이유로 충돌이 일어날 가능성이 매우크다. 따라서 프로젝트 서로간의 간섭을 피하기 위해 최소한의 기능만을 가지고 있는 깨끗한 가상의 공간을 제공하여 그 위에서 프로젝트를 실현하게 만들어주는 것이 가상환경이다.
따라서 가상환경을 만들고 가상환경안에서 필요한 패키지를 설치 후 project를 시작하는 것을 권장한다.
miniconda는 Anaconda의 minimal한 버전으로 conda, python 및 등등의 패키지를 제공하는 소프트웨어이다
https://docs.conda.io/en/latest/miniconda.html 에서 자신의 OS환경에 맞는 miniconda 확인 및 wget으로 miniconda 다운로드한다.
(base)$ wget https://repo.anacls
onda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
다운로드 후, miniconda를 실행한다
(base)$ chmod +x Miniconda3-latest-Linux-x86_64.sh
(base)$ ./Miniconda3-latest-Linux-x86_64.sh
miniconda 실행하는 환경변수를 본인의 shell에 적용한다
(base)$ cd miniconda3/bin/
(base)$ ./conda init bash
(base)$ source ~/.bashrc
miniconda를 통해 기존 가상환경을 확인하고 새로 만들어서 project환경을 구축할 수 있다.
(base) $ conda env list
(base) $ conda environments:
#
base * /home/inyong/miniconda3
새로 'project'이라는 가상환경을 생성한다
(base) $ conda create -n project python=3.7
(base) $ conda env list
# conda environments:
#
base * /home/inyong/miniconda3
project /home/inyong/miniconda3/envs/pango
만약 가상환경을 삭제하고자 한다면 remove명령어를 사용한다
(base)$ conda env remove -n project
# conda environments:
#
base * /home/inyong/miniconda3
가상환경을 실행한다
shell의 frompt가 다음과 같이 변경됨(*shell의 환경변수에 따라 달리 표시됨)
(base)$ conda activate project
(project) $
다시 base 환경으로 빠져나가고 싶을때는 'conda deactivate'를 실행한다
(pango)$ conda deactivate
(base)$
Django 개발 환경이란, Django를 로컬 컴퓨터에 설치하여 Django 어플리케이션을 개발, 실행, 테스트할 수 있는 환경을 말한다. 로컬 컴퓨터는 자신이 어플리케이션을 개발하는 데 사용하는 컴퓨터이다. 어플리케이션을 실제 배포하기 전에 로컬 컴퓨터 위에서 어플리케이션을 실행 및 테스트할 수 있다.
Django 자체가 제공하는 주요 툴에는 Django 프로젝트를 생성하고 작업하기 위한 파이썬 스크립트들과 심플한 개발용 웹 서버가 있다. 이 개발용 웹 서버로 우리는 로컬 컴퓨터에서 개발한 Django 어플리케이션을 같은 로컬 컴퓨터에서 테스트해볼 수 있다. 예를 들면, 자신의 PC에서 개발한 Django 웹 어플리케이션을 크롬 브라우저와 같은 웹 브라우저 상에서 실행하고 테스트해볼 수 있다.
웹서버로써 database를 기본적으로 활용하고자 할때, OOP(Object Oriented Programming)언어가 ORM(Object Relational Mapping)기반으로 database를 쉽게 접근할 수 있도록 지원한다. Django는 기본적으로 SQLite3 라는 Database를 지원한다.
때에 따라서 가상환경에 또는 로컬 컴퓨터 환경에 django를 설치하여 사용한다.
project 환경에 따라 맞는 python 그리고 django를 설치하고자 가상환경에서 설치하는 것을 권장한다.
(base)$ conda activate project
(project) $ pip install django
설치 후 간단하게 웹 서버를 실행하여 서버로써 서비스가 가능한지 확인 가능하다.
(project) $ django-admin startproject sampleproject
#또는
(project) $ django-admin startproject sampleproject .
# 현재 디렉토리에서 설치하고자 할 때 '.' 옵션을 추가
(project) $ cd ~/sampleproject
(project) $ python3 manage.py runserver
Performing system checks...
System check identified no issues (0 silenced).
You have 15 unapplied migration(s). Your project may not work properly until you apply the migrations for app(s): admin, auth, contenttypes, sessions.
Run 'python manage.py migrate' to apply them.
October 26, 2018 - 07:06:30
Django version 2.1.2, using settings 'sampleproject.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.
데이터베이스는 정보를 저장하는 애플리케이션이다. 정보를 파일에 저장하는 것도 좋은 방법입니다만, 데이터베이스는 파일에 저장하는 것 보다 훨씬 많은 기능을 제공을 한다. 즉, 저장하는데 특화된 시스템이라고 할 수 있다.
그 중 MySQL은 오픈소스이고 무료이다. 이런 이유로 많은 웹 애플리케이션이 MySQL을 기본 데이터베이스로 채택하고 있다.
MySQL을 Django 연결 시 필요한 설정 뿐만아니라, 필요한 몇가지 패키지들이 있다.
mysql-server를 설치과정은 다음과 같다
(base)$ sudo apt-get install mysql-server
# mysql-server 관련 기본패키지를 설치한다
(base)$ mysql_secure_installation
# 현재 일반사용자가 root권한을 가져가는 것
## 보통은 db를 관리하는 사용자에게 권한을 설정
Mysql server를 설치하고 접속하기 위해서는 client를 설치해야한다.
mysqlclient 라이브러리는 mysql server를 접속하기 위한 여러가지 의존성 패키지를 필요로 한다.
(base)$ sudo apt-get install libmysqlclient-dev
그리고 가상환경으로 활성화하여 mysql server에 접속에 필요한 'mysqlclient' 라이브러리를 설치한다
(base)$ conda activate pango
(project) $ pip install mysqlclient
마지막으로 django의 OOP언어인 python이 mysql과 연결되기 위해서는 'mysql-connector-python'이 필요하다
(project) $ pip install mysql-connector-python
Django에서 회원가입 및 로그인 기능을 사용하고자 할 때,단방향 해쉬 함수를 사용하여 비밀번호를 암호화하고, pyJWT(JWT)를 통해 로그인 후 access_token을 발행한다.
단방향 해쉬 함수 인 bcrypt를 사용하고자 한다면, 다음과 같이 bcrypt 라이브러리를 설치한다.
(project) $ pip install bcrypt
django에서 JWT를 사용하고자 한다면, pyJWT 라이브러리를 설치해야하며, 설치방법은 다음과 같다.
(project) $ pip install pyjwt
(project) $ pip install requests
(bas) $ apt install gcc
(project) $ pip install gunicorn