DjangoアプリケーションとPostgreSQLデータベースの統合は、堅牢でスケーラブルなウェブアプリケーションの構築において非常に重要です。特に、Ubuntu 16.04環境での設定と運用は、さまざまな開発者にとって重要な作業となります。本記事では、DjangoアプリケーションとPostgreSQLをUbuntu 16.04サーバー上で設定し、適切に接続するための完全な手順を説明します。
1. 必要なパッケージのインストール
まず、PostgreSQLとその関連ツール、そしてDjangoに必要なPythonパッケージをインストールする必要があります。
PostgreSQLのインストール
Ubuntu 16.04には、APTパッケージマネージャを使ってPostgreSQLをインストールできます。以下のコマンドを使用して、PostgreSQLとそのクライアントツールをインストールします。
bashsudo apt update sudo apt install postgresql postgresql-contrib
インストールが完了したら、PostgreSQLのサービスが自動的に開始されるはずです。以下のコマンドでサービスの状態を確認できます。
bashsudo systemctl status postgresql
PythonとPostgreSQL用のライブラリのインストール
次に、DjangoとPostgreSQLを接続するためにpsycopg2
というライブラリをインストールする必要があります。psycopg2
は、DjangoとPostgreSQLの間でデータをやり取りするために使用されるPython用のPostgreSQLアダプターです。
bashsudo apt install python3-pip pip3 install psycopg2
Djangoのインストール
まだインストールしていない場合、以下のコマンドでDjangoをインストールします。
bashpip3 install django
2. PostgreSQLデータベースの設定
PostgreSQLをインストールした後、データベースとユーザーを作成する必要があります。
データベースとユーザーの作成
PostgreSQLにアクセスするためには、PostgreSQLのpsql
シェルを使用します。以下のコマンドを使って、PostgreSQLの管理者ユーザーpostgres
としてログインします。
bashsudo -u postgres psql
次に、新しいデータベースとそのデータベースにアクセスするためのユーザーを作成します。
sqlCREATE DATABASE mydb;
CREATE USER myuser WITH PASSWORD 'mypassword';
ALTER ROLE myuser SET client_encoding TO 'utf8';
ALTER ROLE myuser SET default_transaction_isolation TO 'read committed';
ALTER ROLE myuser SET timezone TO 'UTC';
GRANT ALL PRIVILEGES ON DATABASE mydb TO myuser;
これにより、mydb
というデータベースと、そのデータベースにアクセスできるmyuser
というユーザーが作成されます。
PostgreSQLシェルを終了するには、以下のコマンドを実行します。
sql\q
3. Djangoプロジェクトの設定
次に、Djangoプロジェクトの設定を行います。新しいDjangoプロジェクトを作成する場合は、以下のコマンドで新しいプロジェクトを開始します。
bashdjango-admin startproject myproject
cd myproject
Djangoの設定ファイルsettings.py
を開いて、DATABASES
の設定をPostgreSQLに変更します。
pythonDATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql',
'NAME': 'mydb',
'USER': 'myuser',
'PASSWORD': 'mypassword',
'HOST': 'localhost',
'PORT': '5432',
}
}
ここでは、mydb
がデータベース名、myuser
がユーザー名、mypassword
がそのパスワードです。
4. マイグレーションの実行
DjangoとPostgreSQLの接続が設定できたら、データベースにテーブルを作成するためにマイグレーションを実行します。
bashpython3 manage.py migrate
これで、Djangoが必要なテーブルをPostgreSQLデータベースに作成します。
5. サーバーの起動と確認
Djangoプロジェクトの設定が完了したら、開発用サーバーを起動して、アプリケーションが正しく動作しているかを確認します。
bashpython3 manage.py runserver
ブラウザでhttp://127.0.0.1:8000/
にアクセスし、Djangoのウェルカムページが表示されれば、設定は成功です。
6. データベースの管理と運用
データベースのバックアップ
PostgreSQLデータベースを運用する際には、バックアップが重要です。データベースをバックアップするには、pg_dump
を使用します。
bashpg_dump mydb > mydb_backup.sql
データベースの復元
バックアップからデータベースを復元するには、psql
コマンドを使用します。
bashpsql mydb < mydb_backup.sql
7. セキュリティの強化
データベースのセキュリティを強化するために、PostgreSQL設定ファイルpg_hba.conf
を編集し、アクセス制御を設定することが重要です。特に、データベースへのアクセスをローカルホストに制限することで、安全性を確保できます。
pg_hba.conf
ファイルは、通常/etc/postgresql/9.5/main/pg_hba.conf
にあります。ファイルを開き、以下の行が含まれていることを確認します。
csshost all all 127.0.0.1/32 md5
この設定により、PostgreSQLはローカルホストからの接続のみを許可し、パスワード認証(md5)を要求します。
8. 結論
これで、DjangoアプリケーションとPostgreSQLデータベースがUbuntu 16.04サーバー上で適切に設定され、接続されました。開発者は、この環境で強力でスケーラブルなウェブアプリケーションを構築し、運用する準備が整いました。