Djangoは、堅牢でスケーラブル、安全、かつ高性能なWebアプリの構築プロセスを効率化する、有名なWebフレームワークです。これは、Pythonで書かれたオープンソースプロジェクトです。詳細については、Djangoのより詳細な情報はこちら.
データを管理するために、すべてのWebアプリはバックエンドとしてデータベースを必要とします。Djangoは、バックエンドとしてさまざまなデータベースエンジンをサポートしています。例えば、MySQL, PostgreSQL, SQLiteなどです。PostgreSQLは、強力なオープンソースのオブジェクト関係データベースシステムです。その信頼性、スケーラビリティ、セキュリティ、そして堅牢な機能群で知られています。詳細については、PostgreSQLの詳細はこちら.
このガイドでは、サンプルのDjangoアプリでバックエンドとしてPostgreSQLを統合する方法を紹介します.
前提条件
Djangoを使用するには、特定のシステム構成が必要です。
- 適切に設定されたUbuntu 21.04サーバー。詳細については、Ubuntuサーバーのセットアップ方法.
- Python開発環境。DjangoはPythonで書かれているため、実行するにはPython環境が必要です。
- Djangoアプリのデータベースサーバーとして使用するため、PostgreSQLがインストールされていること。詳細については、UbuntuへのPostgreSQLのインストールと設定方法はこちら.
このガイドでは、機能的なDjangoアプリに必要なさまざまなPythonモジュールやライブラリの使用方法についても紹介します。
ステップ 1. 必要なコンポーネントのインストール
プロジェクトを動作させるには、Ubuntuシステムにいくつかの重要なパッケージをインストールする必要があります。幸いなことに、これらはすべて公式のUbuntuパッケージリポジトリから直接入手できます。これらのパッケージには、Pythonコンポーネントとデータベース(PostgreSQL)コンポーネントが含まれています。
まず、ターミナルを起動してAPTパッケージキャッシュを更新します。
|
1 |
sudo apt update |
次に、パッケージをインストールします。
|
1 |
sudo apt install python3-pip python3-dev libpq-dev postgresql postgresql-contrib |
ステップ 2. データベースの準備
これでPostgreSQLがインストールされ、使用する準備が整いました。次に、Djangoアプリ用の専用データベースとユーザーを作成します。専用ユーザーを用意することは、データベースと権限の管理に役立ちます。
インストール中に、PostgreSQLは専用ユーザー postgresを作成します。このユーザーは、PostgreSQL上で任意の管理タスクを実行する権限を持っています。 postgres アカウントにアクセスします。
|
1 |
sudo su – postgres |
ユーザー postgresの新しいシェルセッションが開始されます。次に、PostgreSQLシェルを開きます。
|
1 |
psql |
次に、Djangoアプリ用の専用データベースを作成します。Djangoアプリと同じ名前を付けることをお勧めします。
|
1 |
CREATE DATABASE <database_name>; |
次に、専用のデータベースユーザーを作成します。このユーザーを使用して、Django専用のデータベースにアクセスします。
|
1 |
CREATE USER <username> WITH PASSWORD '<password>'; |
次のステップでは、新しいユーザーの接続パラメータをいくつか調整します。これにより、接続が確立されるたびに値を照会する必要がなくなるため、データベース操作が高速化されます。次のコマンドを実行します。
|
1 2 3 |
ALTER ROLE <username> SET client_encoding TO 'utf8'; ALTER ROLE <username> SET default_transaction_isolation TO 'read committed'; ALTER ROLE <username> SET timezone TO '<timezone>'; |
これらのコマンドを簡単に説明します。
-
デフォルトのエンコーディングをUTF-8に設定しています。これは、Djangoがデータベースとやり取りする際に想定しているものです。
-
デフォルトのトランザクションスキームは「read committed」に設定されており、コミットされていないトランザクションからの読み取りがブロックされます。
-
タイムゾーンは、場所に応じて設定する必要があります。
タイムゾーン名がわからない場合は、次のコマンドを実行すると、PostgreSQLでサポートされているすべてのタイムゾーンが一覧表示されます。
|
1 |
SELECT * FROM pg_timezone_names; |
最後に、Django専用データベースに対するすべての権限を新しいユーザーに付与します:
|
1 |
GRANT ALL PRIVILEGES ON DATABASE <database_name> TO <username>; |
これでPostgreSQLでの作業は完了です。 psqlシェルを終了し、 postgres セッションからログアウトします。
ステップ 3. Djangoのインストール
Djangoアプリに必要なデータベースサーバーの設定が完了しました。次に、専用のDjangoアプリをインストールして設定します。DjangoはUbuntuの公式リポジトリから直接入手できますが、この方法はお勧めしません。システム全体にDjangoがインストールされてしまうためです。柔軟性を高め、管理を容易にするために、代わりに仮想環境にDjangoをインストールします。仮想Python環境内でDjangoをインストールして設定するのが一般的な方法です。
Pythonには、 virtualenv モジュールがあり、対象の場所に仮想Python環境を作成します。この環境には、Pythonのバイナリと設定のコピーが作成されます。仮想環境内での変更は、システムの他の部分に影響を与えません。
以下をインストールします: virtualenv:
|
1 |
sudo apt install virtualenv |
次に、Python仮想環境を構築するための専用ディレクトリを作成します。これがDjangoアプリの基盤となります。デモンストレーションとして、アプリ名は sample_appとします。新しいディレクトリを作成します:
|
1 |
mkdir -pv <dir_name> |
現在の作業ディレクトリを変更し、仮想環境を構築します:
|
1 2 |
cd sample_app/ virtualenv sample_app_env |
その後、仮想環境を有効化します:
|
1 |
source sample_app_env/bin/activate |
これで仮想環境の準備が整い、機能するようになりました。次に、 pipを使用して、Djangoと psycopg2(PostgreSQL用のPythonアダプター)をインストールします:
|
1 |
pip install django psycopg2 |
最後に、Djangoツールを使用して新しいDjangoプロジェクトを作成できます。これにより、現在のディレクトリにすべてのコードを格納する同名の子ディレクトリと、管理スクリプトが生成されます:
|
1 |
django-admin startproject <project_name> . |
ステップ 4. Djangoプロジェクトの設定
Djangoプロジェクトには、Webアプリとして機能するための最小限のツールがすべて揃っています。これをデータベースと統合するには、設定ファイルをいくつか微調整する必要があります。
テキストエディタで settings.py ファイルを開きます:
|
1 |
nano settings.py |
下方にスクロールして、 DATABASES セクションに移動します。デフォルトでは、SQLite:
を使用するように設定されています。今回の目的に合わせて、コードを以下のように変更します:
|
1 2 3 4 5 6 7 8 9 10 |
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.postgresql_psycopg2', 'NAME': '<db_name>', 'USER': '<db_user>', 'PASSWORD': '<db_user_password>', 'HOST': 'localhost', 'PORT': '', } } |
ここでは、データベース通信に psycopg2 アダプターを使用するようにDjangoに指示しています。また、データベース名や専用ユーザーのユーザー名、パスワードなど、必要なデータベース情報をすべて宣言します。
完了したら、ファイルを保存してエディタを閉じます。
ステップ 5. データベースのマイグレーション
DjangoがPostgreSQLデータベースにアクセスするように設定されました。これで、データ構造をデータベースにマイグレーションできます。Djangoでは、これはマイグレーション.
と呼ばれます。データベースの変更をマイグレーションするには、管理スクリプトであるmanage.py:
|
1 |
python manage.py makemigrations |

|
1 |
python manage.py migrate |
次に、Djangoアプリのスーパーユーザーを作成します:
|
1 |
python manage.py createsuperuser |
このスーパーユーザーアカウントは、Djangoアプリの管理者アカウントとして機能します。
ステップ 6. 変更のテスト
これまでに、Djangoアプリに複数の調整を加えました。すべてが意図した通りに動作しているか確認する時間です。アプリを起動し、管理パネルにアクセスしてこれを確認します。
Djangoアプリをローカルで開発しているため、サーバーを以下で起動します: localhost。慣例として、次のポートで起動します: 8000。ファイアウォールを設定している場合は、次のポートへのトラフィックを許可する必要があります: 8000。詳細については、UFWの基本はこちら.
Djangoサーバーを起動します:
|
1 |
python manage.py runserver localhost:8000 |
ブラウザでURLにアクセスします:
|
1 |
http://localhost:8000 |
Djangoのインストール成功ページが表示されるはずです。Djangoの管理ページにアクセスするには、次のURLに移動します:
|
1 |
http://localhost:8000/admin |
ログインするには、作成したスーパーユーザーを使用する必要があります:
お見事!管理パネルに正常にアクセスできました!
確認が終わったら、Ctrl + C をコンソールから押して、Djangoサーバーを停止します。
最後に
このガイドでは、サンプルのDjangoアプリを構築し、バックエンドとしてPostgreSQLを設定する方法を実演しました。開発中(および軽度な本番環境での使用)のニーズを満たすには、通常SQLiteで十分ですが、ほとんどのプロジェクトは、より機能が豊富なDBMSに切り替えることで大きな恩恵を受けられます。PostgreSQLは、パフォーマンスとスケーラビリティにおいて優れた選択肢です。
Djangoは、数多くのテクノロジーと連携できる多才なWebフレームワークです。Djangoの使用方法を実演する他のクラウドガイドもご覧ください:
- Ubuntu 20.04でPostgreSQL、Nginx、Gunicornを使用してDjangoをセットアップする
- UbuntuでDockerを使用してDjangoとGunicornアプリケーションを構築する
- Docker、Nginx、Let’s Encryptを使用してDjangoアプリケーションを保護およびスケールする方法
- データベース接続を備えたDjangoアプリの作成:チュートリアル
ハッピーコンピューティング!






















コメント
コメントはまだありません。最初のコメントを投稿しましょう。