Web &App/Django

[Django] Django Install

twoDeveloper 2022. 9. 21. 16:01

개요

Django를 설치하고 MariaDB와 연동 및 Gunicorn을 통해 bind 시켜 Web UI에 띄우는 것 까지 진행하도록 하겠습니다.

 

진행환경

OS : CentOS 7.6

Python : 3.6

Django : 

MariaDB : 


Django Install

1. Python Install

SCL 즉 소프트웨어 컬렉션 저장소에서 Python을 설치할 것입니다. SCL을 사용하면 최신 버전의 Python 3.x를 설치할 수 있습니다.

 

CentOS 추가 저장소를 설치하고 SCL을 활성화 하고, Python 3.6을 설치합니다.

$ sudo yum -y install centos-release-scl

$ sudo yum -y install rh-python36

2. 가상 환경 생성

* Python 3.6부터는 vev 모듈을 사용하는 것이 좋다.

2.1 Python 3 가상 환경을 저장할 디렉토리를 생성하고 이동합니다.

$ mkdir django-project
$ cd django-project

 

2.2 Python 3.6에 접근하기 위해 scl 도구를 사용해서 shell instance를 실행합니다.

$ scl enable rh-python36 bash

 

2.3 새 가상 환경 생성

$ python3 -m venv venv

venv 디렉토리를 생성하고, Python Binary, pip 패키지 관리자, Python 라이브러리 및 기타 지원 파일의 복사본이 포함됩니다.

 

2.4 가상 환경 사용 시작

$ source venv/bin/activate

3. Django Install

3.1 pip 를 사용해서 Django를 설치합니다.

$ pip install django

$ python -m django --version

4. Django Project 생성

4.1 django-admin utility를 사용해 프로젝트 생성

$ django-admin startproject djangoproject

 

4.2 위 명령어를 통해 현재 디렉토리에 'djangoproject' 디렉토리가 생성됩니다.

$ tree djangoproject/

tree 명령어를 통해 어떤 파일이 생성되었는지 확인합니다.

 

4.3 생성한 프로젝트로 이동합니다.

$ cd djangoproject

5. Database 연동 (MariaDB)

기본적으로 Django는 SQLite DB를 사용하지만, 저는 MariaDB를 구성하여 연동하겠습니다.

5.1 CentOS에 MariaDB Install

$ sudo yum -y install mariadb-server

$ sudo systemctl start mariadb.service
$ sudo systemctl status mariadb.service

MariaDB를 설치하고 실행시켜 정상적으로 동작하는지 확인합니다.

 

5.2 임의상 root 계정으로 진행하겠습니다.

$ mysql -u root -p  # root 계정으로 로그인

mysql> show databases;
mysql> use mysql;
mysql> UPDATE user SET password = password('비밀번호') WHERE user = 'root';  # root 계정 비밀번호 변경
mysql> flush privileges;

mysql> CREATE DATABASE 'DB명' DEFAULT CHARACTER SET utf8;  # DB 생성

root 계정 비밀번호 변경과 Database를 생성해 줍니다.

 

5.3 MariaDB 연결

5.3.1 pymsql 라이브러리를 설치합니다.

$ (venv) pip install pymysql

5.3.2 __init__.py 파일에 추가해줍니다.

import pymysql
pymysql.install_as_mySQLdb()

 

5.4 settings.py에 DATABASES 부분 설정 변경해 줍니다.

import os #추가

ALLOWED_HOSTS = ['*'] #수정

LANGUAGE_CODE = 'ko-kr' #수정
TIME_ZONE = 'Asia/Seoul' #수정

#수정
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'db-name',  # DB 명
        'USER': 'root', # DB 계정
        'PASSWORD': 'password', # 비밀번호
        'HOST': 'db-adress', #공백으로 냅두면 default localhost
        'PORT': 'port-number' #공백으로 냅두면 default 3306
    }
}

# 끝 부분에 다음 내용 추가
STATIC_URL='/static/'
STATIC_ROOT=os.path.join(BASE_DIR. 'static_collection')

5.4.1 docker-compose 환경변수 적용

향후 docker-compose를 통해 mariadb 설정 값들을 환경변수로 적용할 것입니다. 방법은 다음과 같습니다.

# settings.py
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': os.environ.get('DB_NAME'),
        'USER': os.environ.get('DB_USER'),
        'PASSWORD': os.environ.get('DB_PASSWORD'),
        'HOST': os.environ.get('DB_HOST'),
        'PORT': os.environ.get('PORT')
    }
}

 

5.5 migration

manage.py 파일이 존재하는 경로에서 실행합니다.

(venv) ./manage.py makemigrations
(venv) ./manage.py migrate

 

5.6 Static Data를 모아줍니다.

manage.py 파일이 존재하는 경로에서 실행합니다.

(venv) ./manage.py collectstatic

6. Server 구동

Server가 잘 구동하는지 실행합니다.

(venv) ./manage.py runserver 0.0.0.0:8000
# 또는
(venv) python manage.py runserver 0.0.0.0:8000

7. Gunicorn

7.1 Gunicorn Install

(venv) pip install gunicorn

 

7.2 Gunicorn 구동

(venv) gunicorn --bind 0.0.0.0:8000 '폴더명'.wsgi:application
# 저는 djangoproject로 프로젝트를 실행하였기 때문에 djangoproject.wsgi:application

8. Django 접속 화면

http://[server IP]:8000/

'Web &App > Django' 카테고리의 다른 글

[Django] Django + Gunicorn + Nginx + MariaDB  (0) 2022.09.22