[Django] 웹 개발 준비

황인용·2020년 1월 23일
0

Django

목록 보기
2/13

Python 설치

Django는 Python 언어로 작성되었다. 따라서 Python이 있어야 Django를 실행할 수 있다.

개발환경OS : Ubuntu 18.04.3 LTS

(base)$ sudo apt install python

가상환경(Virtual Environment)

Django에서 가상환경(Virtual Environment)이란 Python 코드 상의 독립된 공간을 의미한다. 즉, 한 local에서 다양한 프로젝트를 같이 한다면, 패키지 간의 버전차이, 혹은 여러가지 이유로 충돌이 일어날 가능성이 매우크다. 따라서 프로젝트 서로간의 간섭을 피하기 위해 최소한의 기능만을 가지고 있는 깨끗한 가상의 공간을 제공하여 그 위에서 프로젝트를 실현하게 만들어주는 것이 가상환경이다.
따라서 가상환경을 만들고 가상환경안에서 필요한 패키지를 설치 후 project를 시작하는 것을 권장한다.

miniconda download

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 프로젝트를 생성하고 작업하기 위한 파이썬 스크립트들과 심플한 개발용 웹 서버가 있다. 이 개발용 웹 서버로 우리는 로컬 컴퓨터에서 개발한 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을 기본 데이터베이스로 채택하고 있다.

MySQL을 Django 연결 시 필요한 설정 뿐만아니라, 필요한 몇가지 패키지들이 있다.

mysql-server

mysql-server를 설치과정은 다음과 같다

(base)$ sudo apt-get install mysql-server
# mysql-server 관련 기본패키지를 설치한다
(base)$ mysql_secure_installation
# 현재 일반사용자가 root권한을 가져가는 것
## 보통은 db를 관리하는 사용자에게 권한을 설정

mysqlclient

Mysql server를 설치하고 접속하기 위해서는 client를 설치해야한다.
mysqlclient 라이브러리는 mysql server를 접속하기 위한 여러가지 의존성 패키지를 필요로 한다.

(base)$ sudo apt-get install libmysqlclient-dev

그리고 가상환경으로 활성화하여 mysql server에 접속에 필요한 'mysqlclient' 라이브러리를 설치한다

(base)$ conda activate pango
(project) $ pip install mysqlclient

mysql-connector-python

마지막으로 django의 OOP언어인 python이 mysql과 연결되기 위해서는 'mysql-connector-python'이 필요하다

(project) $ pip install mysql-connector-python

암호화 & JWT(Json Web Tokken)

Django에서 회원가입 및 로그인 기능을 사용하고자 할 때,단방향 해쉬 함수를 사용하여 비밀번호를 암호화하고, pyJWT(JWT)를 통해 로그인 후 access_token을 발행한다.

bcrypt

단방향 해쉬 함수 인 bcrypt를 사용하고자 한다면, 다음과 같이 bcrypt 라이브러리를 설치한다.

(project) $ pip install bcrypt 

pyJWT

django에서 JWT를 사용하고자 한다면, pyJWT 라이브러리를 설치해야하며, 설치방법은 다음과 같다.

(project) $ pip install pyjwt

이 밖에

requests

  • python requests 모듈은 간편한 HTTP 요청처리를 위해 사용하는 모듈러써, 기본 내장 모듈이 아니라 개발자가 따로 설치해주어야 한다.
(project) $ pip install requests

gcc

  • mysql 연동시 gcc 문제가 생긴다면 gcc를 설치해준다.
(bas) $ apt install gcc

gunicorn

  • 모든 소스코드를 완성하고 배포(deploy)하고 나서 서버에서 demon 형태로 프로그램을 running하고자 한다면 gunicorn을 사용하면 편리하다
(project) $ pip install gunicorn
profile
dev_pang의 pang.log

0개의 댓글