Ubuntu 14.04でDjangoアプリケーションでMySQLまたはMariaDBを使用する方法

前書き

Djangoは、Pythonアプリケーションをすばやく作成するための柔軟なフレームワークです。 デフォルトでは、Djangoアプリケーションはデータを軽量のSQLiteデータベースファイルに保存するように設定されています。 これはいくつかの負荷の下でうまく機能しますが、より伝統的なDBMSは本番環境のパフォーマンスを改善できます。

このガイドでは、Djangoアプリケーションで使用するMySQLまたはMariaDBをインストールおよび構成する方法を示します。 必要なソフトウェアをインストールし、アプリケーションのデータベース資格情報を作成してから、このバックエンドを使用するために新しいDjangoプロジェクトを開始および構成します。

前提条件

始めるには、root以外のユーザーが設定されたクリーンなUbuntu 14.04サーバーインスタンスが必要です。 非rootユーザーは、 `+ sudo +`特権で設定する必要があります。 https://www.digitalocean.com/community/tutorials/initial-server-setup-with-ubuntu-14-04 [初期サーバー設定ガイド]に従って、これを設定する方法を学びます。

続行する準備ができたら、読み進めてください。

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に設定した管理パスワードの入力を求められます。 その後、一連の質問が表示されます。 別の管理パスワードを選択するように要求する最初の質問に加えて、各質問に対してyesを選択します。

インストールと初期データベース構成が完了したら、データベースとデータベースユーザーの作成に進むことができます。 次のセクションに進んでください。

MariaDB

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プロジェクトのデータベースを作成します。 セキュリティ上の理由から、各プロジェクトには独自の独立したデータベースが必要です。 このガイドではデータベースを「++」と呼びますが、よりわかりやすいものを選択することをお勧めします。 データベースのデフォルトタイプをUTF-8に設定します。これはDjangoが期待するものです。

CREATE DATABASE  CHARACTER SET UTF8;

すべてのコマンドをセミコロンでSQLプロンプトで終了することを忘れないでください。

次に、データベースに接続して対話するために使用するデータベースユーザーを作成します。 パスワードを強力で安全なものに設定します。

CREATE USER @localhost IDENTIFIED BY '';

これで、データベースユーザーに、作成したデータベースへのアクセス権を与えるだけで済みます。

GRANT ALL PRIVILEGES ON .* TO @localhost;

変更をフラッシュして、現在のセッション中に使用できるようにします。

FLUSH PRIVILEGES;

SQLプロンプトを終了して、通常のシェルセッションに戻ります。

exit

仮想環境内にDjangoをインストールする

データベースがセットアップされたので、Djangoをインストールできます。 柔軟性を高めるために、Djangoとそのすべての依存関係をPython仮想環境内にインストールします。

次のように入力して、これらの環境を作成できる `+ virtualenv +`パッケージを取得できます。

sudo pip install virtualenv

Djangoプロジェクトを保持するディレクトリを作成します。 その後、ディレクトリに移動します。

mkdir ~/
cd ~/

次のように入力して、DjangoプロジェクトのPython要件を保存する仮想環境を作成できます。

virtualenv

これにより、Pythonと `+ pip `のローカルコピーがプロジェクトディレクトリ内の `+`というディレクトリにインストールされます。

仮想環境内にアプリケーションをインストールする前に、アクティブ化する必要があります。 これを行うには、次のように入力します。

source /bin/activate

プロンプトが変わり、仮想環境内で操作していることが示されます。 この `+()@:〜/ $ +`のようになります。

仮想環境がアクティブになったら、Djangoを `+ pip `でインストールできます。 また、設定したデータベースを使用できるようにする ` mysqlclient +`パッケージもインストールします。

pip install django mysqlclient

これで、 `+ myproject +`ディレクトリ内でDjangoプロジェクトを開始できます。 これにより、コード自体を保持するために同じ名前の子ディレクトリが作成され、現在のディレクトリ内に管理スクリプトが作成されます。 これが正しく設定されるように、コマンドの最後にドットを追加してください:

django-admin.py startproject  .

Djangoデータベース設定を構成する

プロジェクトができたので、作成したデータベースを使用するようにプロジェクトを構成する必要があります。

子プロジェクトディレクトリ内にあるメインのDjangoプロジェクト設定ファイルを開きます。

nano ~///settings.py

ファイルの下部に向かって、次のような `+ DATABASES +`セクションが表示されます。

. . .

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

. . .

これは現在、SQLiteをデータベースとして使用するように構成されています。 これを変更して、代わりにMySQL / MariaDBデータベースを使用する必要があります。

まず、 + _sqlite3`バックエンドではなく + mysql`バックエンドを指すようにエンジンを変更します。 + NAME +`には、データベースの名前を使用します(この例では `++)。 ログイン資格情報も追加する必要があります。 接続するためのユーザー名、パスワード、ホストが必要です。 デフォルトが選択されるように、ポートオプションを追加して空白のままにします。

. . .

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

. . .

終了したら、ファイルを保存して閉じます。

データベースを移行してプロジェクトをテストする

Djangoの設定が構成されたので、データ構造をデータベースに移行し、サーバーをテストできます。

まず、データベースに移行を作成して適用することから始めます。 実際のデータはまだないため、これは単に初期データベース構造をセットアップするだけです。

cd ~/
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://:8000

デフォルトのインデックスページが表示されます。

画像:https://assets.digitalocean.com/articles/django_mysql_1404/django_index.png [Django index]

URLの最後に「+ / admin +」を追加すると、管理画面のログイン画面にアクセスできるはずです。

画像:https://assets.digitalocean.com/articles/django_mysql_1404/admin_login.png [Django admin login]

`+ createsuperuser +`コマンドを使用して作成したユーザー名とパスワードを入力します。 次に、管理インターフェイスに移動します。

image:https://assets.digitalocean.com/articles/django_mysql_1404/admin_interface.png [Django admin interface]

調査が終了したら、ターミナルウィンドウでCTRL-Cを押して開発サーバーを停止できます。

管理インターフェイスにアクセスすることで、データベースにユーザーアカウント情報が保存され、適切にアクセスできることを確認しました。

結論

このガイドでは、MySQLまたはMariaDBをDjangoプロジェクトのバックエンドデータベースとしてインストールおよび構成する方法を示しました。 SQLiteは開発中および本番環境での使用中の負荷を簡単に処理できますが、ほとんどのプロジェクトは、よりフル機能のDBMSを実装することで恩恵を受けます。

Related