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をインストール
- Ubuntuの場合→MySQL5.7インストール Ubuntuを実施
- CentOSの場合→MySQL5.7インストール CentOS7を実施
Python3をインストール
PyMySQLをインストール
mysqlclientをインストール
Djangoをインストール
インストール後の確認
インストール後の確認手順を実施
Djangoプロジェクトの作成
DjangoでのMySQL使用設定
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・接続方法② # python3 manage.py runserver 0.0.0.0:8000 # python3 manage.py runserver 0:8000 http://127.0.0.1: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 = [] -------------------------------------------------------------------------------- http://192.168.***.***:8000/
とりあえず、こんな感じのページが確認できれば、動作確認はOKでしょう。
皆さんお疲れさまでした。
Djangoのインストール できましたでしょうか。
今後は、Nginxとgunicornを使用してDjangoを商用で活用していく方法やDjangoの使い方
またMezzanineもご紹介できればと思っています。
コメント