Djangoの環境構築

UbuntuにDjangoの環境構築(Djangoのインストールからマイグレーションまで)したときのメモです。つまづいた点も含めて…

目的仕様

  • Anaconda3
  • Django2.2
  • プロジェクト:test_site、アプリケーション:test_appの作成
  • MariaDBとDjangoプロジェクトの接続完了
  • データベースマイグレーション完了

事前環境

  • OS: Ubuntu 18.04LTS

Anaconda3とDjangoのインストール

まずはAnacondaの公式からインストール用ファイルをダウンロードします。

# bash Anaconda3-2019.03-Linux-x86_64.sh

次にDjangoをインストール

# pip install django

プロジェクトとアプリの作成

Djangoではプロジェクトという一つの設定等をまとめた作業環境内にアプリケーションを作成していきます。 まずプロジェクトを作成。

  • ~/
# django-admin startproject test_site

これでtest_siteという作業ディレクトリが作成されているはずです。次にこのディレクトリ内に移動して、アプリケーションを作成。

  • ~/test_site/
# python manage.py startapp test_app

MariaDBのインストールとDjangoプロジェクト用ユーザー作成

今回はDjangoで使うデータベースとしてMariaDBをインストールします。

# apt install mariadb-server
# mysql_secure_installation

次に、mariadbのユーザー設定等を行います。

  • データベースの作成
  • ユーザーの作成とパスワード設定
  • 権限付与
# mysql -u root -p
Enter password: (mysql_secure_installationで設定したパスワードを入力)
MariaDB [(none)]> create database test_site;
MariaDB [(none)]> create user 'test_site'@'localhost' identified by 'site';
MariaDB [(none)]> grant all on *.* to test_site with grant option;

MariaDBとDjangoプロジェクトの接続

DjangoプロジェクトをMariaDBと接続するには

  • Pythonのmysqlドライバをインストール
  • Django設定ファイルの編集 をする必要があります。

ここで少しつまづいたのが、最初PyMySQLでやろうと思ったのですが、最新アップデートのPyMySQL(0.9.3.)をインストールしても

  • test_site/
# python3 manage.py migrate
django.core.exceptions.ImproperlyConfigured: mysqlclient 1.3.13 or newer is required; you have 0.9.2.

とはかれてしまいます。現在Django2.2はPyMySQLに対応していないようです。

ということで今回はドライバにはmysql-connector-pythonをインストールします。

# conda install mysql-connector-python

次にDjangoの設定ファイル(test_site/setting.py)を編集

  • test_site/setting.py
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        #'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
        'NAME': 'test_site',
        'USER': 'test_site',
        'PASSWORD': 'site',
        'HOST': '127.0.0.1',
        'PORT': '3306',
    }
}

これで設定は完了になります。 最後にデータベースのマイグレーションを行って終了です。

  • test_site/
# python manage.py migrate

これでデータベースに以下のファイルが設定されていれば完了です。

MariaDB [(test_site)]> show tables;
| auth_group                 |
| auth_group_permissions     |
| auth_permission            |
| auth_user                  |
| auth_user_groups           |
| auth_user_user_permissions |
| django_admin_log           |
| django_content_type        |
| django_migrations          |
| django_session             |

コメント