웹사이트 검색

Ubuntu 14.04에서 Django 애플리케이션과 함께 MySQL 또는 MariaDB를 사용하는 방법


소개

Django는 Python 애플리케이션을 빠르게 만들기 위한 유연한 프레임워크입니다. 기본적으로 Django 애플리케이션은 경량 SQLite 데이터베이스 파일에 데이터를 저장하도록 구성됩니다. 이것은 일부 부하에서 잘 작동하지만 보다 전통적인 DBMS는 프로덕션에서 성능을 향상시킬 수 있습니다.

이 가이드에서는 Django 애플리케이션과 함께 사용할 MySQL 또는 MariaDB를 설치하고 구성하는 방법을 보여줍니다. 필요한 소프트웨어를 설치하고 애플리케이션에 대한 데이터베이스 자격 증명을 만든 다음 이 백엔드를 사용하도록 새 Django 프로젝트를 시작하고 구성합니다.

전제 조건

시작하려면 루트가 아닌 사용자가 설정된 클린 Ubuntu 14.04 서버 인스턴스가 필요합니다. 루트가 아닌 사용자는 sudo 권한으로 구성되어야 합니다. 초기 서버 설정 가이드에 따라 이를 설정하는 방법을 알아보세요.

계속할 준비가 되면 계속 읽으십시오.

Ubuntu 리포지토리에서 구성 요소 설치

첫 번째 단계는 리포지토리에서 필요한 모든 부분을 설치하는 것입니다. Python 구성 요소를 설치하고 관리하기 위해 Python 패키지 관리자인 pip를 설치합니다. 또한 상호 작용하는 데 필요한 데이터베이스 소프트웨어 및 관련 라이브러리를 설치합니다.

아래에서 MySQL과 MariaDB를 모두 다룰 것이므로 사용하려는 DBMS와 관련된 섹션을 선택하십시오.

MySQL

MySQL을 사용하려면 다음 apt 명령으로 필요한 패키지를 얻을 수 있습니다.

sudo apt-get update
sudo apt-get install python-pip python-dev mysql-server libmysqlclient-dev

관리 MySQL 계정의 암호를 선택하고 확인하라는 메시지가 표시됩니다.

설치 후 다음을 입력하여 데이터베이스 디렉토리 구조를 생성할 수 있습니다.

sudo mysql_install_db

그런 다음 다음을 실행하여 간단한 보안 스크립트를 실행할 수 있습니다.

sudo mysql_secure_installation

설치 중에 MySQL에 대해 설정한 관리 암호를 묻는 메시지가 나타납니다. 그런 다음 일련의 질문을 받게 됩니다. 다른 관리 암호를 선택하라는 첫 번째 질문 외에 각 질문에 대해 예를 선택하십시오.

설치 및 초기 데이터베이스 구성이 끝나면 데이터베이스 및 데이터베이스 사용자를 생성할 수 있습니다. 다음 섹션으로 건너뜁니다.

마리아DB

MariaDB를 선호하는 경우 아래 지침에 따라 설치하고 필요한 초기 구성을 수행할 수 있습니다. 다음을 입력하여 리포지토리에서 패키지를 설치합니다.

sudo apt-get update
sudo apt-get install python-pip python-dev mariadb-server libmariadbclient-dev libssl-dev

관리 MariaDB 계정의 암호를 선택하고 확인하라는 메시지가 표시됩니다.

그런 다음 다음을 실행하여 간단한 보안 스크립트를 실행할 수 있습니다.

sudo mysql_secure_installation

설치 중에 MariaDB에 대해 설정한 관리 암호를 묻는 메시지가 나타납니다. 그런 다음 일련의 질문을 받게 됩니다. 다른 관리 암호를 선택하라는 첫 번째 질문 외에 각 질문에 대해 예를 선택하십시오.

설치 및 초기 데이터베이스 구성이 끝나면 데이터베이스 및 데이터베이스 사용자를 생성할 수 있습니다.

데이터베이스 및 데이터베이스 사용자 생성

이 가이드의 나머지 부분은 MySQL 또는 MariaDB를 설치했는지 여부에 관계없이 있는 그대로 따를 수 있습니다.

다음을 입력하여 데이터베이스 소프트웨어로 대화형 세션에 로그인하여 시작할 수 있습니다(명령은 사용 중인 데이터베이스 소프트웨어에 관계없이 동일함).

mysql -u root -p

설치 중에 선택한 관리 암호를 묻는 메시지가 나타납니다. 그런 다음 프롬프트가 표시됩니다.

먼저 Django 프로젝트용 데이터베이스를 생성합니다. 각 프로젝트에는 보안상의 이유로 자체 격리된 데이터베이스가 있어야 합니다. 이 가이드에서는 데이터베이스를 myproject라고 부르지만 항상 더 설명적인 것을 선택하는 것이 좋습니다. 데이터베이스의 기본 유형을 Django가 예상하는 UTF-8로 설정합니다.

CREATE DATABASE myproject CHARACTER SET UTF8;

SQL 프롬프트에서 세미콜론으로 모든 명령을 종료해야 합니다.

다음으로 데이터베이스에 연결하고 상호 작용하는 데 사용할 데이터베이스 사용자를 생성합니다. 비밀번호를 강력하고 안전한 것으로 설정하십시오.

CREATE USER myprojectuser@localhost IDENTIFIED BY 'password';

이제 우리가 해야 할 일은 우리가 생성한 데이터베이스에 대한 데이터베이스 사용자 액세스 권한을 부여하는 것입니다.

GRANT ALL PRIVILEGES ON myproject.* TO myprojectuser@localhost;

현재 세션 중에 사용할 수 있도록 변경 사항을 플러시합니다.

FLUSH PRIVILEGES;

일반 셸 세션으로 돌아가려면 SQL 프롬프트를 종료합니다.

exit

가상 환경에 Django 설치

이제 데이터베이스가 설정되었으므로 Django를 설치할 수 있습니다. 더 나은 유연성을 위해 Python 가상 환경 내에 Django와 모든 종속성을 설치합니다.

다음을 입력하여 이러한 환경을 만들 수 있는 virtualenv 패키지를 얻을 수 있습니다.

sudo pip install virtualenv

Django 프로젝트를 보관할 디렉토리를 만듭니다. 나중에 디렉터리로 이동합니다.

mkdir ~/myproject
cd ~/myproject

다음을 입력하여 Django 프로젝트의 Python 요구 사항을 저장할 가상 환경을 만들 수 있습니다.

virtualenv myprojectenv

이렇게 하면 프로젝트 디렉터리 내의 myprojectenv라는 디렉터리에 Pythonpip의 로컬 복사본이 설치됩니다.

가상 환경에 애플리케이션을 설치하기 전에 활성화해야 합니다. 다음을 입력하면 됩니다.

source myprojectenv/bin/activate

이제 가상 환경 내에서 작업 중임을 나타내도록 프롬프트가 변경됩니다. 다음과 같이 표시됩니다. (myprojectenv)user@host:~/myproject$.

가상 환경이 활성화되면 pip로 Django를 설치할 수 있습니다. 또한 구성한 데이터베이스를 사용할 수 있도록 mysqlclient 패키지를 설치합니다.

pip install django mysqlclient

이제 myproject 디렉토리 내에서 Django 프로젝트를 시작할 수 있습니다. 이렇게 하면 코드 자체를 보관할 동일한 이름의 하위 디렉터리가 생성되고 현재 디렉터리 내에 관리 스크립트가 생성됩니다. 올바르게 설정되도록 명령 끝에 점을 추가해야 합니다.

django-admin.py startproject myproject .

Django 데이터베이스 설정 구성

이제 프로젝트가 있으므로 생성한 데이터베이스를 사용하도록 프로젝트를 구성해야 합니다.

하위 프로젝트 디렉토리에 있는 기본 Django 프로젝트 설정 파일을 엽니다.

nano ~/myproject/myproject/settings.py

파일 맨 아래에 다음과 같은 DATABASES 섹션이 표시됩니다.

. . .

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
    }
}

. . .

이것은 현재 SQLite를 데이터베이스로 사용하도록 구성되어 있습니다. MySQL/MariaDB 데이터베이스가 대신 사용되도록 이를 변경해야 합니다.

먼저 sqlite3 백엔드 대신 mysql 백엔드를 가리키도록 엔진을 변경합니다. NAME의 경우 데이터베이스 이름을 사용합니다(이 예에서는 myproject). 로그인 자격 증명도 추가해야 합니다. 연결할 사용자 이름, 비밀번호 및 호스트가 필요합니다. 기본값이 선택되도록 포트 옵션을 추가하고 비워 둡니다.

. . .

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'myproject',
        'USER': 'myprojectuser',
        'PASSWORD': 'password',
        'HOST': 'localhost',
        'PORT': '',
    }
}

. . .

완료되면 파일을 저장하고 닫습니다.

데이터베이스 마이그레이션 및 프로젝트 테스트

이제 Django 설정이 구성되었으므로 데이터 구조를 데이터베이스로 마이그레이션하고 서버를 테스트할 수 있습니다.

마이그레이션을 생성하고 데이터베이스에 적용하는 것으로 시작할 수 있습니다. 아직 실제 데이터가 없기 때문에 초기 데이터베이스 구조를 설정하기만 하면 됩니다.

cd ~/myproject
python manage.py makemigrations
python manage.py migrate

데이터베이스 구조를 만든 후 다음을 입력하여 관리 계정을 만들 수 있습니다.

python manage.py createsuperuser

사용자 이름을 선택하고 이메일 주소를 제공하고 계정의 비밀번호를 선택하고 확인하라는 메시지가 표시됩니다.

관리자 계정이 설정되면 Django 개발 서버를 시작하여 데이터베이스가 올바르게 작동하는지 테스트할 수 있습니다.

python manage.py runserver 0.0.0.0:8000

웹 브라우저에서 서버의 도메인 이름 또는 IP 주소 뒤에 :8000을 방문하여 기본 Django 루트 페이지에 도달합니다.

http://server_domain_or_IP:8000

기본 색인 페이지가 표시되어야 합니다.

URL 끝에 /admin을 추가하면 관리 인터페이스에 대한 로그인 화면에 액세스할 수 있어야 합니다.

createsuperuser 명령을 사용하여 방금 만든 사용자 이름과 암호를 입력합니다. 그런 다음 관리 인터페이스로 이동합니다.

조사가 끝나면 터미널 창에서 CTRL-C를 눌러 개발 서버를 중지할 수 있습니다.

관리 인터페이스에 액세스하여 데이터베이스에 사용자 계정 정보가 저장되어 있고 적절하게 액세스할 수 있음을 확인했습니다.

결론

이 가이드에서는 Django 프로젝트의 백엔드 데이터베이스로 MySQL 또는 MariaDB를 설치하고 구성하는 방법을 시연했습니다. SQLite는 개발 및 가벼운 프로덕션 사용 중에 로드를 쉽게 처리할 수 있지만 대부분의 프로젝트는 보다 완전한 기능을 갖춘 DBMS를 구현하는 이점이 있습니다.