読む人も、書く人も、
すべてを考え抜いたデザイン。
真の使いやすさを追求したWPテーマ『JIN』
VPS×Djangoセットアップ

【VPS×Django】VPSサーバーのMySQLの設定方法

こんにちは、hokkyokunです。

DjangoをVPSサーバーで立ち上げる方法について、特に非ITエンジニア向けに解説しています。

今回は、MySQLの設定方法です。

DjangoはデフォルトでSQLiteをデータベースとして使用していますが、大規模サイトには不向きです。できれば別のデータベースの利用を考えるべきです。

MySQLの連携方法について解説していきます。

MySQLとは

MySQLとSQLiteの長所

MySQLは、Djangoで利用できるデータベースの一つで、特に商用環境で広く使われています。

MySQLは大規模なデータベースを取り扱えることができ、複数のユーザーが同時にアクセスしても耐えられる性能を持っています。

一方SQLiteの特長として、軽量でシンプルであることが挙げられます。

特にDjangoファイルにデフォルトで設定されているため、特別な設定をしなくてもすぐ使えるようになっているという手軽さがあります。

なぜSQLite(Djangoのデフォルト)ではダメなのか

理由をひとことで申し上げるなら、ウェブアプリは情報のデータベースを目指すべきだから、データベースは大規模化するべき。です。

Djangoのようなウェブアプリは、ブログ、SNSに次ぐ第三のウェブプラットフォーム考えています。

ブログやSNSは一次情報が重要となり、かつ、検索順位対応やフォロワー対応も必要で、定期的な記事更新が宿命となっています。つまり、情報の資産性は低いです。

一方、ウェブアプリは情報の取得、更新を自動化させることができ、資産性が保たれます。

どちらが優れるというわけではなく、それぞれをうまく使って自身の経済圏を拡張していくことが重要です。

よってウェブアプリはデータベース的役割を重要視し、データベースにこだわり、大規模化に耐えられるMySQLを使用するべきです。

MySQLのインストール

tera term等ターミナルで以下のコマンドを打ちこみます。

sudo apt install mysql-server -y

無事インストールが終わったら、ログインをしてみましょう。

まだ、ユーザーを作っていないのでルートでのログインです。
以下のコマンドでルートでログインできます。

sudo mysql -u root -p

このコマンドを打った後にパスワードを聞かれるので、入力します。

データベースとユーザーの設定

さて、データベース、ユーザーの作成をします。

データベースとユーザーはDjangoファイルのsettings.pyで設定しているDATABASEのユーザーと同じものを作成します。

①がデータベース名、②がユーザー名、③がそのユーザー名のパスワードです。

先ずMySQLにログインしてください(すでにログインしているなら不要)。

sudo mysql -u root -p

テーブルとユーザーを作ります。
コマンドは以下のように打ちます。

データベース作成

CREATE DATABASE データベース名;

テーブル名:NAMEで設定したデータベース名(上記のsettings.py図の①にあたる)

きちんと作成できているか、以下のコマンドで確認します。

SHOW DATABASES;

ユーザー作成

CREATE USER 'ユーザー名'@'localhost' IDENTIFIED BY 'パスワード';

ユーザー名:USERで設定しているユーザー名
パスワード:PASSWORDで設定しているパスワード

ユーザーが正しく作成できているか下記のコマンドで確認します。

SELECT User, Host FROM mysql.user;

権限付与

GRANT ALL PRIVILEGES ON データベース名.* TO 'ユーザー名'@'localhost';

上記で作成したデータベースに対し、作成したユーザー名に権限を付与します。

最後に権限変更を反映させて完成です。

FLUSH PRIVILEGES;

権限付与の確認です。

SHOW GRANTS FOR 'ユーザー名'@'localhost';

MySQLとDjangoの連携

次はDjangoとMySQLを連携させるのですが、先ず必要なパッケージをインストールします。

sudo apt install pkg-config libmysqlclient-dev -y

次に、仮想環境をアクティベートして、mysqlclientをインストールします。

仮想環境を作成したディレクトリまでいき、以下のコマンドを打ちます。

source 仮想環境名/bin/activate

mysqlclientをインストールします。

pip install mysqlclient

Djangoのマイグレーションをしてデータベースをセットアップして完成です。

python3 manage.py makemigrations
python3 manage.py migrate

お疲れさまでした。
これでMySQLの設定は完了です。