Djangoインストール – Python3 + MySQL

Django

Djangoインストール – Python3 + MySQL

今回は、Python3系とMySQLを使用したDjangoのインストール方法をご紹介していきたいと思います。

本記事で既に掲載しているPythonのインストール、MySQLのインストールを実施済であれば、すぐにDjangoを使用してWebアプリを作成していくことが可能です。

また実際に商用として運用していくためには、Webサーバ(Nginx)を通してDjangoを使用する必要も出てくるかと思います。

本記事ではgunicornを使用した設定方法等も追ってご紹介していきます。

 

Djangoインストール環境

# cat /etc/os-release
NAME="Ubuntu"
VERSION="16.04.2 LTS (Xenial Xerus)"
# cat /etc/redhat-release
CentOS Linux release 7.3.1611 (Core)

 

Djangoインストール手順概要

インストール手順は、UbuntuとCentOSの場合でそれぞれご紹介したいと思います。

MySQLをインストール

Python3をインストール

Python3.6インストール Anacondaを実施

PyMySQLをインストール

PyMySQLインストール手順を実施

mysqlclientをインストール

mysqlclientをインストール手順を実施

Djangoをインストール

Djangoをインストール手順を実施

インストール後の確認

インストール後の確認手順を実施

Djangoプロジェクトの作成

Djangoプロジェクトの作成手順を実施

DjangoでのMySQL使用設定

DjangoでのMySQL使用設定手順を実施

Djangoアプリケーションの作成

Djangoアプリケーションの作成手順を実施

Django動作確認

Django動作確認手順を実施

 

PyMySQLインストール手順

apt-getコマンドで「python3-dev」と「libmysqlclient-dev」をインストールします。

# apt-get install python3-dev libmysqlclient-dev

 

「PyMySQL」をインストールします。

# pip install PyMySQL
 

mysqlclientをインストール手順

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

# pip install mysqlclient
 

Djangoのインストール手順

pipを使用して、djangoをインストールします。

# pip install django

バージョンが表示されればインストール完了です。

# django-admin --version
1.11.4
 

インストール後の確認手順

先程インストールしたOSパッケージ類がちゃんと入っているか確認しておきましょう。
「python3-dev」「libmysqlclient-dev」らへんがちゃんと入っていれば大丈夫でしょう。

# dpkg -l|egrep 'python3-dev|libmysqlclient-dev'|awk '{print $2,"|",$3}'
libmysqlclient-dev | 5.7.19-1ubuntu16.04
libpython3-dev:amd64 | 3.5.1-3
python3-dev | 3.5.1-3

 

インストールしたPythonのパッケージを確認しておきましょう。
「mysqlclient」「PyMySQL」らへんがちゃんと入っていれば大丈夫でしょう。

# pip freeze|egrep -i 'pymysql|mysqlclient'
mysqlclient==1.3.12
PyMySQL==0.7.11
 

Djangoプロジェクトの作成手順

Djangoプロジェクトを作成するディレクトリへ移動してください。
今回は、ホームディレクトリに移動して、プロジェクトを作成します。

# cd ~

# django-admin startproject awesome_exercise

 

カレントディレクトリに、「startproject」で指定したプロジェクト名のディレクトリが作成されています。

このディレクトリをtreeコマンドで見てみるとディレクトリの階層は以下のようになっています。

  • 一番外側の awesome_exercise/ ディレクトリは、このプロジェクトのただの入れ物であるため、名前は好きなものに変更できます。
  • 一方内側の awesome_exercise/ ディレクトリは、このプロジェクトの本当の Python パッケージであるため、名前の変更等は行わないでください。

では、一番外側の awesome_exercise/ ディレクトリに移動してください。

 

※treeコマンドは、Ubuntuでは、「# apt-get install tree」、CentOSでは、「# yum install tree」でインストールできます。

# tree awesome_exercise/
-----------------------------------------------
awesome_exercise/
  - manage.py
  - awesome_exercise
      - __init__.py
      - settings.py
      - settings.py_20170901
      - urls.py
      - wsgi.py
-----------------------------------------------

# cd awesome_exercise/

 

日本語の設定を入れていくため、以下のように「settings.py」のバックアップをとってから、内容を変更してください。

変更後の差分が以下のようになればOKです。

# cp -p awesome_exercise/settings.py awesome_exercise/settings.py_`date +%Y%m%d`&&ls -l awesome_exercise/settings.py*
-rw-r--r-- 1 root root 3126 Sep  1 11:10 awesome_exercise/settings.py
-rw-r--r-- 1 root root 3126 Sep  1 11:10 awesome_exercise/settings.py_yyyymmdd


# vi awesome_exercise/settings.py
-------------------------------------------------------------
    106 LANGUAGE_CODE = 'en-us'    →    'ja'
    107
    108 TIME_ZONE = 'UTC'          →    'Asia/Tokyo'
    109
    110 USE_I18N = True
    111
    112 USE_L10N = True
    113
    114 USE_TZ = True              →    False
-------------------------------------------------------------

# sdiff -s awesome_exercise/settings.py awesome_exercise/settings.py_`date +%Y%m%d`
LANGUAGE_CODE = 'ja'                                          | LANGUAGE_CODE = 'en-us'
TIME_ZONE = 'Asia/Tokyo'                                      | TIME_ZONE = 'UTC'
USE_TZ = False                                                | USE_TZ = True
 

DjangoでのMySQL使用設定手順

まずは、MySQLへ接続して、Djangoで使用するデータベースの作成とユーザを作成しましょう。

ちゃんとデータベースとユーザが作成されていることを確認してください。

# mysql -uroot -p
Enter password:

mysql> CREATE DATABASE awesome_exercise;

mysql> SHOW DATABASES;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| awesome_exercise   |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
5 rows in set (0.06 sec)

mysql> GRANT ALL ON awesome_exercise.* TO awesome@localhost IDENTIFIED BY 'awesome';

mysql> show grants for awesome@localhost;
+-----------------------------------------------------------------------+
| Grants for awesome@localhost                                          |
+-----------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'awesome'@'localhost'                           |
| GRANT ALL PRIVILEGES ON `awesome_exercise`.* TO 'awesome'@'localhost' |
+-----------------------------------------------------------------------+
2 rows in set (0.00 sec)

 

先程作成したユーザでデータベースへ接続できることを確認しておきましょう。

作成したユーザで接続していること、作成したデータベースが表示されていることを確認しておきましょう。

# mysql -uawesome -p
Enter password:

mysql> select user();
+-------------------+
| user()            |
+-------------------+
| awesome@localhost |
+-------------------+
1 row in set (0.00 sec)

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| awesome_exercise   |
+--------------------+
2 rows in set (0.00 sec)

 

続いて、DjangoにMySQLの設定を入れていきます。

バックアップをとってから、「settings.py」の内容を以下のように変更してください。

差分が以下のようになればOKです。

# cd ~/awesome_exercise/

# cp -p awesome_exercise/settings.py awesome_exercise/settings.py_`date +%Y%m%d`_2

# vi awesome_exercise/settings.py
※DATABASES部分を以下のように変更する
--------------------------------------------
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql', ← データベースエンジンにmysqlを選択
        'NAME': 'awesome_exercise',      ← データベース名を入力
        'USER': 'awesome',           ← 接続ユーザ名
        'PASSWORD': 'awesome',         ← 接続ユーザパスワード
        'HOST': 'localhost',                   ← 接続ホスト 
        'PORT': '3306',            ← 接続ポート
    }
}
--------------------------------------------

# sdiff -s awesome_exercise/settings.py awesome_exercise/settings.py_yyyymmdd_2
        'ENGINE': 'django.db.backends.mysql',                 |         'ENGINE': 'django.db.backends.sqlite3',
        'NAME': 'awesome_exercise',                           |         'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
        'USER': 'awesome',                                    <
        'PASSWORD': 'awesome',                                <
        'HOST': 'localhost',                                  <
        'PORT': '3306',                                       <

 

引き続き、DjangoのMySQL設定です。

今度は「manage.py」のバックアップをとってから、内容を以下のように変更してください。

差分が以下のようになればOKです。

# cd ~/awesome_exercise/

# cp -p manage.py manage.py_`date +%Y%m%d`&&ls -l manage.py*
-rwxr-xr-x 1 root root 814 Sep  1 11:10 manage.py
-rwxr-xr-x 1 root root 814 Sep  1 11:10 manage.py_yyyymmdd

・以下を追記
------------------------------------
import pymysql
pymysql.install_as_MySQLdb()
------------------------------------

# vi manage.py
-----------------------------------
  4 import pymysql
  5 pymysql.install_as_MySQLdb()
-----------------------------------

# sdiff -s manage.py manage.py_yyyymmdd
import pymysql                                                <
pymysql.install_as_MySQLdb()                                  <
 

Djangoアプリケーションの作成手順

今後のためにアプリケーションを作成しておきましょう。

# cd ~/awesome_exercise/

# python3 manage.py startapp awesome_app

# ls -l
合計 16
drwxr-xr-x 3 root root 4096 Sep  2 02:09 awesome_app
drwxr-xr-x 3 root root 4096 Sep  2 02:09 awesome_exercise
-rwxr-xr-x 1 root root  858 Sep  2 01:54 manage.py
-rwxr-xr-x 1 root root  814 Sep  1 11:10 manage.py_20170902

 

アプリケーションを作成したら、「settings.py」の「INSTALLED_APPS」に今回作成したアプリケーションを追加してください。

# cp -p awesome_exercise/settings.py awesome_exercise/settings.py_`date +%Y%m%d`_3&&ls -l awesome_exercise/settings.py*
-rw-r--r-- 1 root root 3222 Sep  2 01:27 awesome_exercise/settings.py
-rw-r--r-- 1 root root 3126 Sep  1 11:10 awesome_exercise/settings.py_20170901
-rw-r--r-- 1 root root 3131 Sep  1 11:19 awesome_exercise/settings.py_20170902_2
-rw-r--r-- 1 root root 3222 Sep  2 01:27 awesome_exercise/settings.py_20170902_3

# vi awesome_exercise/settings.py
------------------------------------------------
INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'awesome_app',
]
------------------------------------------------

# sdiff -s awesome_exercise/settings.py awesome_exercise/settings.py_20170902_3
    'awesome_app',                                            <

 

Django動作確認手順

以上で大まかな設定が完了したので、ちゃんと動くか動作確認をして完了としましょう。

 

まずは、マイグレーションが正常にできることを確認してください。

# cd ~/awesome_exercise/

# python3 manage.py migrate
Operations to perform:
  Apply all migrations: admin, auth, contenttypes, sessions
Running migrations:
  Applying contenttypes.0001_initial... OK
  Applying auth.0001_initial... OK
  Applying admin.0001_initial... OK
  Applying admin.0002_logentry_remove_auto_add... OK
  Applying contenttypes.0002_remove_content_type_name... OK
  Applying auth.0002_alter_permission_name_max_length... OK
  Applying auth.0003_alter_user_email_max_length... OK
  Applying auth.0004_alter_user_username_opts... OK
  Applying auth.0005_alter_user_last_login_null... OK
  Applying auth.0006_require_contenttypes_0002... OK
  Applying auth.0007_alter_validators_add_error_messages... OK
  Applying auth.0008_alter_user_username_max_length... OK
  Applying sessions.0001_initial... OK

 

マイグレーション後、MySQLにテーブルが自動的に出来上がっているので

ちゃんとMySQLにテーブルが作成されているか確認しましょう。

# mysql -uroot -p awesome_exercise -e "show tables"
Enter password:
+----------------------------+
| Tables_in_awesome_exercise |
+----------------------------+
| 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             |
+----------------------------+

 

では、最後に接続してテストページがちゃんと表示されるか確認してみましょう。

ローカルホスト上から見る場合は、接続方法①で起動すれば、ページを確認することができます。

接続方法②は、例えば、VirtualBoxやVMPlayer等を使用していて、ホストOS上からゲストOS上のDjangoを確認したい場合などに、使用すると良いです。

接続方法②を使用する際は、「※設定方法」を事前に設定しないとエラーが表示されるので事前に設定を入れてから、確認してみてください。

また、接続方法②は、セキュリティ上、本番環境では使用しないようにしてください。

・接続方法①
# python3 manage.py runserver
http://127.0.0.1:8000/
・接続方法② # python3 manage.py runserver 0.0.0.0:8000 # python3 manage.py runserver 0:8000
http://192.168.***.***:8000/
※設定方法 -------------------------------------------------------------------------------- ◆settings.pyを以下のようにする。 ALLOWED_HOSTS = ['*'] # cp -p awesome_exercise/settings.py awesome_exercise/settings.py_`date +%Y%m%d`_4 # sdiff -s awesome_exercise/settings.py awesome_exercise/settings.py_20170902_4 ALLOWED_HOSTS = ['*'] | ALLOWED_HOSTS = [] --------------------------------------------------------------------------------

 

とりあえず、こんな感じのページが確認できれば、動作確認はOKでしょう。

 

皆さんお疲れさまでした。

Djangoのインストール できましたでしょうか。

 

今後は、Nginxとgunicornを使用してDjangoを商用で活用していく方法やDjangoの使い方

またMezzanineもご紹介できればと思っています。

コメント