UbuntuにDjangoの環境構築(Djangoのインストールからマイグレーションまで)したときのメモです。つまづいた点も含めて…
目的仕様
- Anaconda3
- Django2.2
- プロジェクト:test_site、アプリケーション:test_appの作成
- MariaDBとDjangoプロジェクトの接続完了
- データベースマイグレーション完了
事前環境
- OS: Ubuntu 18.04LTS
Anaconda3とDjangoのインストール
まずはAnacondaの公式からインストール用ファイルをダウンロードします。
- https://www.anaconda.com/download ダウンロードしたディレクトリで、以下のコマンドでAnaconda3をインストールします。
- ~/download/
# 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 |
コメント