紹介
Djangoは、Pythonで書かれた無料かつオープンソースのWebフレームワークです。このツールを使用すると、拡張性、再利用性、および迅速な開発が可能です。
このチュートリアルでは、MySQLデータベースに接続されたブログウェブサイトの初期基盤を設定する方法を学びます。これには、django-admin
を使用してブログWebアプリケーションの骨組みを作成し、MySQLデータベースを作成し、Webアプリケーションをデータベースに接続する作業が含まれます。
Djangoは、ブログWebアプリケーションを開発するための開発環境を提供しますが、ブログをインターネット上で公開する前にさらなる手順が必要です。
前提条件
このチュートリアルに従うには、次のものが必要です:
- Ubuntu 22.04サーバーに、root権限のない
sudo
有効なユーザーとファイアウォールが必要です。これを設定するには、当社のUbuntu 22.04初期サーバー設定ガイドに従ってください。 - データベースとしてMySQLをインストールしました。これをセットアップするには、Ubuntu 22.04にMySQLをインストールする方法のチュートリアルに従ってください。
- A Python environment set up. For this, follow our tutorial on How To Install Python 3 and Set Up a Programming Environment on Ubuntu 22.04
.
すべてがインストールされ、セットアップされたら、次のステップに進むことができます。
ステップ1 — データベースの作成
Djangoはいくつかの人気のあるデータベース管理システムをサポートしていますが、このガイドではDjangoをMySQLデータベースに接続する方法に焦点を当てています。これを行うには、MySQLインスタンス上にデータベースを作成し、Djangoがデータベースに接続するために使用できるMySQLユーザープロファイルも作成する必要があります。
これを設定するには、次のコマンドでroot MySQLユーザーとしてMySQLデータベースに接続します。
プロンプトが変更されたら、MySQLサーバーに接続していることがわかります。
次のコマンドで現在のデータベースを調査します。
これにより、以下の出力が得られます。まだデータベースを作成していない場合を想定しています。
Output+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
+--------------------+
4 rows in set (0.00 sec)
デフォルトでは、すでに4つのデータベースが作成されています:information_schema
、MySQL
、performance_schema
、sys
です。これらに触れる必要はありません。これらはMySQLサーバー自体に重要な情報を含んでいます。
その代わりに、ブログのデータを保持する初期データベースを作成します。
MySQLでデータベースを作成するには、次のコマンドを実行してください。データベースには意味のある名前を使用してください:
データベースの作成が成功した場合、出力は次のようになります:
OutputQuery OK, 1 row affected (0.00 sec)
データベースが利用可能なデータベースの1つとしてリストされていることを確認してください:
blog_data
データベースが、出力に含まれるデータベースのリストに表示されるはずです:
Output+--------------------+
| Database |
+--------------------+
| information_schema |
| blog_data |
| mysql |
| performance_schema |
| sys |
+--------------------+
5 rows in set (0.00 sec)
次に、Djangoが新しいデータベースを操作するために使用する別々のMySQLユーザーアカウントを作成します。特定のデータベースとアカウントを作成することで、管理およびセキュリティの観点からサポートを受けることができます。このガイドでは、djangouserという名前を使用します。好きな名前を使用できますが、説明的な名前を選択すると役立ちます:
次に、次のコマンドを入力してユーザーを作成し、パスワードを設定します。この例では、データベースの強力なパスワードを選択してpassword
を置き換えてください:
djangouserが作成したデータベースに完全なアクセス権を持つようにデータベースに通知してください:
これで、Django用にそれぞれ作成されたデータベースとユーザーアカウントがあります。最近行った変更について現在のMySQLインスタンスが知るように特権をフラッシュします:
これでMySQLサーバーから退出することができます。 EXIT;
を書いたり、CTRL + D
を押します。
ステップ2 — MySQLオプションファイルの作成
Django構成ファイルでMySQL接続の詳細を指定する代わりに、それらをオプションファイルに保存できます。多くのMySQLプログラムは、起動オプションや接続の詳細などの情報を含むオプションファイル — 別名構成ファイル — を読み取ることができます。これは便利です。なぜなら、データベースのログイン資格情報を1か所に保存するだけで済むからです。
MySQL資格情報を更新するために、お好みのテキストエディタでmy.cnf
構成ファイルを開いてください。ここではnano
を使用します:
以下の行を追加し、関連する情報を含めてください:
…
[client]
database = blog_data
user = djangouser
password = your_actual_password
default-character-set = utf8
注意してください。デフォルトのエンコーディングとしてutf8
が設定されています。これはMySQLでUnicodeデータをエンコードする一般的な方法です。詳細が正しいことを確認したら、ファイルを保存して閉じてください。ファイルを編集するためにnano
を使用した場合は、CTRL + O
でファイルを保存し、その後CTRL + X
でエディタを閉じることができます。
ファイルを編集したら、変更を有効にするためにMySQLを再起動してください:
MySQLを再起動すると数秒かかる場合があるため、しばらくお待ちください。
ステップ3 — 初期のDjangoプロジェクトスケルトンの作成
このステップでは、django-admin
コマンドを使用してプロジェクトスケルトンを生成することで、アプリケーションの土台を築きます。
ブログアプリを構築するディレクトリに移動します。そのディレクトリ内で、アプリを構築するための特定のディレクトリを作成します。ディレクトリは、構築しているアプリに意味のあるものにします。例として、私たちはmy_blog_app
という名前を付けます:
次に、新しく作成したディレクトリに移動します:
次に、Djangoで作業するために使用するプログラミング環境に移動します。既存のものを使用するか、新しいものを作成します。次のコマンドは、env
という名前の新しい環境を作成しますが、意味のある名前を使用してください:
作成されたら、それをアクティブにします:
まだDjangoをこの環境にインストールしていない場合は、インストールします:
my_blog_app
ディレクトリ内にいる間、次のコマンドを実行してプロジェクトを生成します:
それが機能したかどうかを確認するために、blog/
ディレクトリに移動します:
次に、ls
を実行して、プロジェクトフォルダ内に必要なファイルとディレクトリが作成されたかどうかを確認します:
出力には、blog
ディレクトリとmanage.py
ファイルがリストされます。
Outputblog manage.py
今、ブログアプリケーションの初期開始を含むプロジェクトディレクトリを作成したので、次のステップに進むことができます。
ステップ4 — MySQLデータベースコネクタのインストール
プロジェクトでMySQLを使用するためには、Djangoと互換性のあるPython 3データベースコネクタライブラリが必要です。このステップでは、そのようなデータベースコネクタであるmysqlclient
をインストールする方法について説明します。これはMySQLdb
のフォークバージョンです。
まず、必要なMySQL開発ヘッダーとライブラリをインストールします:
次に、pip
を使用してwheel
パッケージをインストールします。wheelは、Pythonのパッケージインデックスからモジュールをインストールするためのパッケージング形式です。wheelパッケージからPythonプログラムをインストールする方が、一般的にソースコードからパッケージをビルドするよりも速く、リソース効率が良いです。wheelパッケージとしてパッケージ化されたプログラムをインストールして使用するには、まずwheel
パッケージがインストールされていることを確認する必要があります:
次に、mysqlclient
をインストールします:
以下のような出力が表示されます。クライアントが正しくインストールされたことが確認されます:
Output...
Successfully installed mysqlclient-2.1.1
これで、PyPi mysqlclient
コネクタライブラリを使用してMySQLクライアントを正常にインストールしました。
ステップ5 — 設定の編集
以前に django-admin
を実行したとき、Django の構成ファイルである settings.py
が作成されました。すべてが正しく機能するようにするために、このファイルのいくつかのデフォルト設定を変更する必要があります。
ファイルを編集するには、お好みのテキストエディターでファイルのパスを開きます。このリストのタイムゾーン を参照して、ブログに正しい時間が関連付けられるようにすることができます。この例では、America/New_York
時間を使用します。
ファイル内で、ファイルの下部セクション近くにある TIME_ZONE
フィールドに移動します。
...
LANGUAGE_CODE = 'en-us'
TIME_ZONE = 'UTC'
USE_I18N = True
USE_L10N = True
USE_TZ = True
...
TIME_ZONE
行を変更して、現在のタイムゾーンに設定します。この例ではニューヨークのタイムゾーンを使用します。
...
LANGUAGE_CODE = 'en-us'
TIME_ZONE = 'America/New_York'
USE_I18N = True
...
次に、静的ファイルのパスを追加する必要があるため、ファイルを開いたままにしてください。Django Web アプリケーションから提供されるファイルは、静的ファイル と呼ばれます。これには、完全な Web ページをレンダリングするために必要な JavaScript、CSS、および画像を含めることができます。
settings.py
ファイルの末尾に移動し、STATIC_ROOT
を追加します。
…
STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'static')
...
今、タイムゾーンと静的ファイルのパスを追加したので、IPアドレスを許可されたホストのリストに追加してください。 settings.py
ファイルの中で ALLOWED_HOSTS
と書かれた行に移動してください。これは、settings.py
ファイルの上部にあるはずです。角括弧の間に、サーバーのIPアドレスを単一引用符で囲んで追加してください:
...
ALLOWED_HOSTS = ['your_server_IP_address']
...
次に、ディレクトリに関するさまざまな機能を提供するPythonのOSモジュールを追加します。このモジュールがないと、Djangoインターフェイスを使用するための管理ユーザーの設定時にエラーが発生します。これを行うには、各々のオペレーティングシステムで動作する os
モジュールをインポートする必要があります。 from pathlib import Path
の行の上に import os
の行を追加してください:
...
import os
from pathlib import Path
...
これまでに、settings.py
ファイルを編集して適切なタイムゾーンが設定された状態にしました。また、静的ファイルのパスを追加し、アプリケーションの ipアドレス
を ALLOWED_HOST
に設定し、後で管理ユーザーを設定するのにPython OSモジュールをインポートしました。
最後に、DjangoブログアプリケーションをMySQLに接続するためのデータベース接続資格情報をファイルに追加する必要があります。これには、ファイル内の DATABASES
ディクショナリを見つけます。デフォルトでは、次のようになります:
…
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': BASE_DIR / 'db.sqlite3',
}
}
...
...
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'OPTIONS': {
'read_default_file': '/etc/mysql/my.cnf',
},
}
}
...
'ENGINE': 'django.db.backends.mysql'
の行は、Djangoが組み込みのMySQLデータベースバックエンドを使用するように指示しています。 read_default_file
オプションは、以前に編集したMySQLオプションファイルである/etc/mysql/my.cnf
を指します。これにより、Djangoはステップ1で作成したMySQLデータベースに接続するための関連する接続詳細を見つける場所を知ることができます。
Djangoは次の順序でデータベース接続設定を読み取ります:
OPTIONS
NAME
、USER
、PASSWORD
、HOST
、PORT
- MySQLオプションファイル
この例のようにDjangoをOPTIONS
設定内のMySQLオプションファイルに指定することで、それはそれ以外の場合はオプションファイルをオーバーライドするはずのNAME
設定よりも優先されます。 OPTIONS
設定の外側でそれを指定する場合。
この時点で、ファイルを保存して閉じることができます。
次に、次のコマンドを実行して移行の変更を確認します:
その後、変更が適用されるようにmigrate
を実行します:
これで変更が移行されたので、Django管理インターフェイス用の管理ユーザーを作成できます。これをcreatesuperuser
コマンドで行います:
ユーザー名、メールアドレス、およびユーザーのパスワードが求められます。
この情報を入力した後、テストを許可するためにファイアウォール設定を調整することができます。
ステップ6 — ファイアウォール設定の調整
Django Webアプリケーションをテストする前に、ファイアウォール設定が調整されていることを確認する必要があります。まず、ufw
設定を変更して、ポート8000
へのアクセスを許可します:
これらの許可設定が正常に更新されたことを確認するために、ステータスを確認します:
OutputStatus: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
8000 ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
8000 (v6) ALLOW Anywhere (v6)
ファイアウォール設定は、次のステップで接続をテストするために適切に調整されました。
ステップ7 — アプリケーションへのMySQL接続のテスト
これで、Djangoの構成がMySQLサーバーを正しく検出していることを確認できます。これは、サーバーを実行して確認できます。失敗した場合、接続が正常に機能していません。それ以外の場合、接続は有効です。
まず、次のディレクトリに移動します:
そこから、次のコマンドを実行します:
次のような出力を受け取ります:
OutputPerforming system checks...
System check identified no issues (0 silenced).
July 19, 2022 - 13:26:08
Django version 4.0.6, using settings 'blog.settings'
Starting development server at http://your-server-ip:8000/
Quit the server with CONTROL-C.
注意: 出力に未適用のマイグレーションがあることに気付くでしょう。心配しないでください、これはアプリケーションの初期設定に影響を与えません。続行できます。
指示に従い、提案されたリンク、http://your-server-ip:8000/
、を開いてウェブアプリケーションを確認し、正常に動作していることを確認してください。
ページが上記のスクリーンショットと類似している場合、Djangoアプリケーションは期待どおりに動作しています。
アプリのテストが完了したら、CTRL + C
を押してrunserver
コマンドを停止してください。これにより、プログラミング環境に戻ります。
Python環境を終了する準備が整ったら、deactivate
コマンドを実行できます:
プログラミング環境を無効にすると、ターミナルのコマンドプロンプトに戻ります。
結論
このチュートリアルでは、Djangoブログの初期の基礎を作成しました。MySQLをインストール、設定、Djangoバックエンドに接続しました。また、DjangoアプリケーションをMySQLに接続するためのデータベースの資格情報やimport os
などの重要な情報をアプリケーションのsettings.py
ファイルに追加しました。また、テストがスムーズに行われるようにファイアウォールの設定を調整しました。
これらの基本的な設定と構成が完了したので、Djangoアプリケーションでモデルの開発とマイグレーションの適用を開始できます。