Python/Django

Django 시작하기

김모우 2023. 8. 13. 14:19
728x90
반응형

Django란 Python에서 제공하는 Web Framework 중 하나로 Python 언어를 통해 쉽게 웹을 구성하고 배포할 수 있는 환경을 제공한다. 비슷한 Framework으로 Flask, FastApi가 있으며, 오늘은 Django 구성에 대한 내용을 포스팅 해보겠습니다.

 

 

환경 구성


기본적으로 Django 설치 시 아래와 같은 구성으로 구성 됩니다.

서버 #1: Django 서버 + Django DB(Default Sqllite3)

 

저는 실제 활용 테스트를 위해 아래와 같이 구성하였습니다.

서버 #1: Django 서버 (Windows 2022)

서버 #2: Django DB 서버 (Ubuntu 22.04)

 

간편하게, 사용하고 있는 노트북의 Windows 환경에서 구성하였으며,

로컬 PC에는 Python이 구성되어 있다는 가정하에 진행하겠습니다.

 

 

Django 설치 및 프로젝트 시작

# django 설치
pip install django

# django 프로젝트 시작 (project 명 test 사용 불가)
django-admin startproject <project 명>

 

 

정상적으로 프로젝트 시작 시 아래와 같은 파일 구조가 생성 됩니다.

 

 

Django 서버 시작

# DB 기본 테이블 구성
py manage.py migrate

# 서버 구동
py manage.py runserver <실행 IP>:<실행 Port>

# ex) 현재 호스트에서 8088 포트로 실행
py manage.py runserver 0.0.0.0:8088

 

아래와 같이 기본 테이블이 생성이 됩니다. DB 관련 설정을 변경하지 않았으므로, 기본 값인 Sqllite3 내 배포가 됩니다.

 

 

기본적으로, 전체 Host에 대해서 차단이 되어 있으므로, 서버 접속 시도 시 아래와 같은 오류 메세지가 발생합니다.

전체 서버에 대해서 접근 허용을 해줍니다.

 

 

settings.py 파일을 수정해줍시다. (ALLOWED_HOSTS = [] -> ALLOWED_HOSTS = ['*])

 

 

변경 설정을 저장해주고 다시 Web 접속 시 아래와 같이 표기 됩니다. (변경 설정은 자동 Reload 됩니다.)

 

 

DB 변경


정상적으로 Web 서버 접근까지 확인하였으므로, DB 변경 작업을 진행해주겠습니다.

DB 서버는 구성되어 있다는 가정하에 진행하겠습니다.

간단한 구성은 아래 내용 참고 부탁드립니다.

 

# DB 설치
apt-get install mysql-server-8.0

# DB 로그인
mysql -u root -p

# root 암호 변경 (변경 패스워드 입력)
alter user 'root'@'localhost' identified with mysql_native_password by '<password>';

# Django 서비스 용 계정 생성 (테스트 계정으로 전체 IP 접근 허용으로 생성)
## 접속 IP 제한 시 '%' 부분을 호스트 IP로 변경해주시면 됩니다.
create user 'django'@'%' identified by 'django';

# Django DB 생성
create database django;

# 권한 부여
grant all privileges on *.django to 'django'@'%';

 

위와 같이 DB 서버 설정 후 Django 서버로 돌아와 설정을 변경 해줍니다.

settings.py 파일 변경

 

# DB 설정을 추가할 파일을 Import 합니다.
import local_settings

# 기존 DB 설정을 주석 처리하고, 아래 설정을 추가해줍니다.

# Database
# https://docs.djangoproject.com/en/4.2/ref/settings/#databases

# DATABASES = {
#     'default': {
#         'ENGINE': 'django.db.backends.sqlite3',
#         'NAME': BASE_DIR / 'db.sqlite3',
#     }
# }

# 아래 설정 추가
DATABASES = local_settings.DATABASES

 

 

 

선언한 local_settings.py 파일을 생성해줍니다.

 

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'django',
        'USER': '<DB User>',
        'PASSWORD': '<DB Password>',
        'PORT': '3306',
        'HOST': '<DB Host>'
    }
}

 

변경된 DB로 다시 Django 기본 테이블을 생성해줍니다.

 

# DB Migrate
py manage.py migrate

# 서버 재 실행
py manage.py runserver 0.0.0.0:8088

 

 

다음 포스팅에서는 Django Application 추가 및 API 연동 등에 대해서 다뤄 보겠습니다.

 

 

728x90
반응형

'Python > Django' 카테고리의 다른 글

Django 기본 특징 및 구성  (0) 2020.10.31