Django은(는) 다음으로 빌드된 무료 오픈 소스 웹 프레임워크입니다: Python. 2005년에 처음 발표된 Django는 “빠른 개발과 깔끔하고 실용적인 디자인”이라는 모토를 담고 있습니다. 웹 서버에 배포되는 이 프레임워크는 풍부한 기능, 보안 및 확장성을 갖춘 웹 프런트엔드를 신속하게 제작할 수 있습니다.
모든 웹 앱은 콘텐츠를 위해 데이터베이스에 의존합니다. 현대적인 프레임워크인 Django는 다음과 같은 여러 표준 데이터베이스 프로그램을 지원합니다. 예를 들어, PostgreSQL, SQLite, MySQL, 등입니다. 이 가이드는 Django 앱을 MySQL 데이터베이스에 연결하는 방법을 보여줍니다..
전제 조건
이 튜토리얼을 따르려면 Django 및 데이터베이스 연결로 넘어가기 전에 특정 전제 조건을 충족해야 합니다:
- 적절한 웹 서버. 이 가이드에서는 다음을 사용합니다: Ubuntu server.
- 올바르게 구성된 Python 3 개발 환경.
- 데이터베이스 애플리케이션. 다음은 이에 대한 심층 가이드입니다: installing and using MySQL.
Python 3 설치 및 구성
Django는 Python으로 작성되었습니다. Python 앱을 실행하려면 시스템에 Python 바이너리가 설치되어 있어야 합니다. Ubuntu에는 기본적으로 Python이 설치되어 제공됩니다. 여기서는 Python 3을 사용합니다. 터미널에서 다음 명령을 실행합니다. 먼저, 다음을 업데이트합니다: APT 캐시를 업데이트하고 설치된 모든 패키지를 업그레이드(가능한 경우)합니다:
|
1 |
$ sudo apt update && sudo apt upgrade -y |
Python 3은 공식 Ubuntu 패키지 서버에서 직접 사용할 수 있습니다. 패키지
python-is-python3 은(는) python 바이너리 소프트 링크를
python3으로 생성하여 사용 편의성을 높입니다:
|
1 |
$ sudo apt install python3 python-is-python3 |
다음으로, 설치가 성공적으로 완료되었는지 확인합니다:
|
1 2 |
$ python3 --version $ python --version |
그 후에는 다음이 필요합니다: pip. 이것은 표준 Python 패키지 관리자입니다. 표준 라이브러리의 일부가 아닌 추가 Python 라이브러리를 관리하는 역할을 합니다. 여기서는 다음을 설치한다는 점에 유의하세요: pip3 (Python 3용):
|
1 |
$ sudo apt install python3-pip |
마지막으로, 탄탄한 프로그래밍 환경을 위해 몇 가지 추가 패키지가 필요합니다:
|
1 |
$ sudo apt install build-essential libssl-dev libffi-dev python3-dev |
MySQL 설치 및 구성
이 섹션에서는 MySQL을 설치하고 구성하는 방법을 간략하게 설명합니다. 기본 Ubuntu 패키지 저장소에서 사용할 수 있습니다:
|
1 |
$ sudo apt install mysql-server |
설치가 성공적으로 완료되면 MySQL이 백그라운드에서 실행되기 시작합니다. 제대로 작동하는지 확인합니다:
|
1 |
$ systemctl status mysql |
MySQL 서버가 정상적으로 실행 중입니다. 이제 안심하고 Django 앱 개발로 넘어갈 수 있습니다.
Django 작업하기
-
샘플 Django 앱 구축하기
웹 앱의 기초 작업을 위해서는 Django 프로젝트 스켈레톤이 필요합니다. 여기에는 탄탄한 웹 앱을 만드는 데 필요한 모든 도구와 라이브러리가 포함되어 있습니다. 먼저, Django 앱을 위한 전용 디렉터리를 생성합니다. 디렉터리 이름은 빌드하려는 앱과 일치하고 의미 있는 이름으로 지정하는 것이 좋습니다. 이 데모에서는 다음과 같이 이름을 지정하겠습니다: myDemoApp:
|
1 |
$ mkdir -pv myDemoApp |
디렉터리 내에 가상 환경을 생성하려면 Python의 venv 모듈이 필요합니다. 다음을 사용하여 모듈을 설치합니다: APT:
|
1 |
$ sudo apt install python3-venv |
그런 다음, 해당 디렉터리로 이동하여 가상 환경을 구축합니다. 명확성을 위해 환경 이름을 다음과 같이 지정했습니다: demoapp_env:
|
1 |
$ python3 -m venv demoapp_env |
다음으로, 다음 스크립트를 실행하여 가상 환경을 활성화합니다: activate 스크립트:
|
1 |
$ . demoapp_env/bin/activate |
이제 이 전용 가상 환경 내에 Django를 설치하겠습니다. Pip은(는) 몇 가지 추가 구성 요소를 다운로드하고 설치합니다:
|
1 |
$ pip install django |
Django가 설치되어 사용할 준비가 되었습니다. 새 Django 프로젝트를 생성하려면 다음 명령을 호출합니다: django-admin 명령을 호출합니다. 그 후 앱에 적절한 이름을 지정합니다:
|
1 |
$ django-admin startproject demoapp |
필요한 프로젝트 파일과 디렉토리가 준비된 데모 프로젝트가 생성됩니다:
|
1 |
$ ls -l |
프로젝트 스켈레톤이 준비되었습니다. 다음으로, 목표를 달성하기 위해 이를 올바르게 구성해야 합니다.
-
Django 프로젝트 설정 편집
프로젝트의 모든 설정은 다음 파일에 저장됩니다: settings.py. 이 파일은 Django 프로젝트 디렉토리 내에 위치합니다. 먼저 적절한 시간대를 설정하고 Django 앱에 연결할 수 있는 호스트 목록을 지정하겠습니다. 텍스트 편집기에서 설정 파일을 엽니다:
|
1 |
$ nano ~/myDemoApp/demoapp/demoapp/settings.py |
스크립트를 아래로 스크롤하여 다음 항목을 찾습니다: TIME_ZONE. 데모를 위해 시간대는 다음과 같이 설정됩니다: America/New_York:
|
1 |
$ TIME_ZONE = 'America/New_York' |
참고로, 다음 명령은 Linux에서 지원되는 모든 시간대를 출력합니다:
|
1 |
$ timedatectl list-timezones |
다음으로, 다음 항목으로 스크롤합니다: ALLOWED_HOSTS. 이 항목은 앱에 액세스할 수 있는 머신을 제어합니다. 데모를 위해 localhost만 포함되어 있습니다:
|
1 |
$ ALLOWED_HOSTS = ['localhost'] |
그런 다음 파일을 저장하고 편집기를 닫습니다. 다음 명령을 실행하면 변경 사항이 적용됩니다:
|
1 |
$ python manage.py migrate |
이제 웹 앱의 관리자 계정을 생성해야 합니다. 이 계정은 Django 관리자 인터페이스에 액세스하는 데 사용됩니다. 다음 명령을 실행하세요:
|
1 |
$ python manage.py createsuperuser |
사용자 이름, 이메일, 비밀번호를 묻는 메시지가 나타납니다. 이제 앱이 데이터베이스에 연결할 준비가 되었습니다.
MySQL 연결
-
MySQL 커넥터 및 개발 라이브러리 설치
Django 앱에 MySQL을 통합하려면 필요한 도구를 제공하는 몇 가지 추가 Python 3 라이브러리가 필요합니다. 여기서는 데이터베이스 커넥터로 다음을 사용합니다: mysqlclient. 이 라이브러리는 다음의 포크(fork)입니다: MySQLdb.
시스템에 python3-dev이(가) 설치되어 있는지 확인하세요:
|
1 |
$ sudo apt install python3-dev |
또한 몇 가지 추가 Python 및 MySQL 헤더와 라이브러리가 필요합니다:
|
1 |
$ sudo apt install python3-dev libmysqlclient-dev default-libmysqlclient-dev |
설치가 완료되면, 다음을 사용하여 pip Python 모듈을 설치합니다: mysqlclient. 무시해도 되는 일부 오류 메시지가 발생할 수 있습니다:
|
1 |
$ pip install mysqlclient |
-
전용 데이터베이스 구성
다음 단계는 Django 앱을 위한 전용 데이터베이스와 데이터베이스 사용자를 구성하는 것입니다. 다음 사용자로 MySQL 셸을 실행합니다: root 사용자:
|
1 |
$ sudo mysql -u root |
현재 사용 가능한 모든 데이터베이스를 확인하려면 다음 쿼리를 실행하세요:
|
1 |
$ SHOW DATABASES; |
Django 앱을 위한 전용 데이터베이스를 생성해 보겠습니다. 프로젝트 이름과 일치하는 적절한 이름을 지정하세요:
|
1 |
$ CREATE DATABASE demoapp_data; |
그런 다음 생성이 완료되었는지 확인합니다:
|
1 |
$ SHOW DATABASES; |
이제 전용 MySQL 사용자를 생성합니다. 이 사용자를 데이터베이스의 소유자로 구성하겠습니다. Django 앱은 이 사용자의 자격 증명을 사용하여 MySQL 데이터베이스와 연동합니다:
|
1 |
$ CREATE USER 'demoapp_user'@'%' IDENTIFIED WITH mysql_native_password BY 'password123'; |
다음 사용자에게 demoapp_user 데이터베이스에 대한 모든 권한을 부여합니다: demoapp_data:
|
1 |
$ GRANT ALL ON demoapp_data.* TO 'demoapp_user'@'%'; |
권한 변경 사항을 적용하려면 다음을 다시 로드합니다: MySQL 권한 테이블(grant tables):
|
1 |
$ FLUSH PRIVILEGES; |
이제 데이터베이스가 Django 앱에 연결할 준비가 되었습니다.
-
데이터베이스를 Django 앱에 연결하기
마지막으로, 데이터 저장을 위해 데이터베이스를 사용하도록 Django 앱을 구성하겠습니다. 다음 설정 스크립트를 엽니다: settings.py:
|
1 |
$ nano ~/myDemoApp/demoapp/demoapp/settings.py |
다음 항목으로 스크롤합니다: DATABASES 그리고 다음 코드를 입력합니다:
|
1 2 3 4 5 6 7 8 |
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'OPTIONS': { 'read_default_file': '/etc/mysql/my.cnf', }, } } |
파일을 저장하고 편집기를 닫습니다. 다음 단계는 이전에 코드에서 설명한 구성 파일을 설정하는 것입니다. sudo를 사용하여 설명된 위치의 텍스트 파일을 엽니다:
|
1 |
$ sudo nano /etc/mysql/my.cnf |
이 구성 파일에는 Django 전용 데이터베이스와 MySQL 서버에서 생성한 사용자에 대한 정보가 포함됩니다. 파일 끝에 다음 줄을 추가합니다:
|
1 2 3 4 5 |
[client] database = demoapp_data user = demoapp_user password = password123 default-character-set = utf8 |
변경 사항을 적용하려면 MySQL 서버를 다시 시작해야 합니다:
|
1 2 |
$ sudo systemctl daemon-reload $ sudo systemctl restart mysql |
-
MySQL 연결 테스트
이제 MySQL 연결이 제대로 작동하는지 확인할 차례입니다. Django 서버가 문제없이 실행된다면 연결이 잘 작동하는 것입니다. 그렇지 않다면 문제가 있는 것입니다. 먼저 Django 프로젝트에 적용된 모든 변경 사항을 적용합니다:
|
1 |
$ python manage.py migrate |
이제 다음 프로젝트 디렉터리로 이동하여 Django 서버를 시작합니다:
|
1 2 |
$ cd ~/myDemoApp/demoapp $ python manage.py runserver <server_ip_address>:8000 |
|
1 |
$ http://<server_ip_address>:8000 |
짜잔! Django 성공 페이지에 성공적으로 접속했습니다. 또한 MySQL 연결이 제대로 작동하는지 확인되었습니다. 작업이 끝나면 가상 환경을 안전하게 종료할 수 있습니다:
|
1 |
$ deactivate |
마치며
이 가이드에서는 Django와 MySQL을 결합하는 기본 방법을 배웠습니다. Django 앱을 만들고 이를 MySQL 데이터베이스와 연결하는 방법을 보여주었습니다. 핵심은 Django 구성 파일인 settings.py에 있습니다. 또한 다음과 같은 몇 가지 기본 설정도 수정했습니다: ALLOWED_HOSTS 및 TIME_ZONE. Django는 믿을 수 없을 정도로 유연합니다. MySQL 외에도 PostgreSQL과 같은 다른 SQL 서버, Nginx와 같은 서버 엔진 등도 지원합니다.
Django를 설치, 구성 및 작업하는 모범 사례에 대한 가이드도 확인할 수 있습니다:
- Ubuntu 20.04에 Django 웹 프레임워크 설치하기
- Ubuntu 20.04에서 PostgreSQL, Nginx 및 Gunicorn으로 Django 설정하기
- Django 모델 생성하기: 튜토리얼
즐거운 컴퓨팅 되세요!






댓글
아직 댓글이 없습니다. 첫 번째로 작성해 보세요.