序章

Django は、動的なWebサイトとアプリケーションを開発するためのフル機能のPythonWebフレームワークです。 Djangoを使用すると、Python Webアプリケーションをすばやく作成し、フレームワークを利用して手間のかかる作業を大幅に行うことができます。

このガイドでは、Ubuntu20.04サーバーでDjangoを起動して実行します。 インストール後、サイトの基盤として使用する新しいプロジェクトを開始します。

さまざまな方法

ニーズと開発環境の構成方法に応じて、Djangoをインストールするさまざまな方法があります。 これらにはさまざまな利点があり、1つの方法が他の方法よりも特定の状況に適している場合があります。

さまざまな方法のいくつかが含まれます:

  • パッケージからのグローバルインストール:公式のUbuntuリポジトリには、従来のaptパッケージマネージャーでインストールできるDjangoパッケージが含まれています。 これは単純ですが、他の方法ほど柔軟ではありません。 また、リポジトリに含まれているバージョンは、プロジェクトから入手できる公式バージョンよりも遅れている可能性があります。
  • 仮想環境にpipを使用してインストールするvenvvirtualenvなどのツールを使用して、プロジェクトの自己完結型環境を作成できます。 仮想環境では、他のプロジェクトごとのカスタマイズやパッケージとともに、大規模なシステムに影響を与えることなく、プロジェクトディレクトリにDjangoをインストールできます。 これは通常、Djangoを使用するための最も実用的で推奨されるアプローチです。
  • git を使用して開発バージョンをインストールする:安定版リリースではなく最新の開発バージョンをインストールする場合は、Gitリポジトリからコードを取得できます。 これは、最新の機能/修正を取得するために必要であり、仮想環境内で実行できます。 ただし、開発バージョンには、より安定したバージョンと同じ安定性の保証はありません。

前提条件

始める前に、Ubuntu20.04サーバーでsudo権限を持つroot以外のユーザーを使用できるようにする必要があります。 これを設定するには、Ubuntu20.04初期サーバー設定ガイドに従ってください。

パッケージからのグローバルインストール

Ubuntuリポジトリを使用してDjangoをインストールする場合、プロセスは非常に簡単です。

まず、ローカルパッケージインデックスをaptで更新します。

  1. sudo apt update

次に、インストールしたPythonのバージョンを確認します。 20.04にはデフォルトでPython3.8が付属しています。これは、次のように入力することで確認できます。

  1. python3 -V

次のような出力が表示されます。

Output
Python 3.8.2

次に、Djangoをインストールします。

  1. sudo apt install python3-django

次のように入力して、インストールが成功したことをテストできます。

  1. django-admin --version
Output
2.2.12

これは、ソフトウェアが正常にインストールされたことを意味します。 また、Djangoバージョンが最新の安定バージョンではないことに気付くかもしれません。 ソフトウェアの使用方法の詳細については、スキップしてサンプルプロジェクトの作成方法を学習してください。

仮想環境にpipでインストールする

システムにDjangoをインストールする最も柔軟な方法は、仮想環境内です。 標準のPython3ライブラリの一部であるvenvモジュールを使用して作成する仮想環境にDjangoをインストールする方法を示します。 このツールを使用すると、システムの他の部分に影響を与えることなく、仮想Python環境を作成し、Pythonパッケージをインストールできます。 したがって、他のプロジェクトの要件との競合に関係なく、プロジェクトごとにPythonパッケージを選択できます。

ローカルパッケージインデックスを更新することから始めましょう:

  1. sudo apt update

インストールしたPythonのバージョンを確認してください。

  1. python3 -V
Output
Python 3.8.2

次に、Ubuntuリポジトリからpipvenvをインストールしましょう。

  1. sudo apt install python3-pip python3-venv

これで、新しいプロジェクトを開始するたびに、そのプロジェクトの仮想環境を作成できます。 新しいプロジェクトディレクトリを作成して移動することから始めます。

  1. mkdir ~/newproject
  2. cd ~/newproject

次に、ご使用のバージョンのPythonと互換性のあるpythonコマンドを使用して、プロジェクトディレクトリ内に仮想環境を作成します。 仮想環境をmy_envと呼びますが、わかりやすい名前を付ける必要があります。

  1. python3 -m venv my_env

これにより、スタンドアロンバージョンのPythonとpipがプロジェクトディレクトリ内の分離されたディレクトリ構造にインストールされます。 選択した名前でディレクトリが作成され、パッケージがインストールされるファイル階層が保持されます。

分離された環境にパッケージをインストールするには、次のように入力してパッケージをアクティブ化する必要があります。

  1. source my_env/bin/activate

プロンプトは、仮想環境にいることを反映するように変更されます。 (my_env)username@hostname:~/newproject$のようになります。

新しい環境では、pipを使用してDjangoをインストールできます。 Pythonのバージョンに関係なく、仮想環境にいるときは、pippipと呼ぶ必要があります。 また、ローカルにインストールするため、sudoを使用する必要がないことに注意してください。

  1. pip install django

次のように入力して、インストールを確認できます。

  1. django-admin --version
Output
3.0.8

お使いのバージョンは、ここに表示されているバージョンと異なる場合があることに注意してください。

仮想環境を離れるには、システムのどこからでもdeactivateコマンドを発行する必要があります。

  1. deactivate

プロンプトは従来の表示に戻るはずです。 プロジェクトで再度作業する場合は、プロジェクトディレクトリに戻ってアクティブ化することにより、仮想環境を再度アクティブ化します。

  1. cd ~/newproject
  2. source my_env/bin/activate

開発バージョンGitでインストール

Djangoの開発バージョンが必要な場合は、GitリポジトリからDjangoをダウンロードしてインストールできます。 仮想環境内からこれを実行してみましょう。

まず、ローカルパッケージインデックスを更新しましょう。

  1. sudo apt update

インストールしたPythonのバージョンを確認してください。

  1. python3 -V
Output
Python 3.8.2

次に、公式リポジトリからpipvenvをインストールします。

  1. sudo apt install python3-pip python3-venv

次のステップは、Djangoリポジトリのクローンを作成することです。 リリース間で、このリポジトリには、安定性を犠牲にして、より最新の機能とバグ修正が含まれるようになります。 次のように入力して、ホームディレクトリ内の~/django-devというディレクトリにリポジトリのクローンを作成できます。

  1. git clone git://github.com/django/django ~/django-dev

このディレクトリに移動します。

  1. cd ~/django-dev

インストールされているPythonのバージョンと互換性のあるpythonコマンドを使用して、仮想環境を作成します。

  1. python3 -m venv my_env

それをアクティブにします:

  1. source my_env/bin/activate

次に、pipを使用してリポジトリをインストールできます。 -eオプションは、「編集可能」モードでインストールされます。これは、バージョン管理からインストールする場合に必要です。

  1. pip install -e ~/django-dev

次のように入力すると、インストールが成功したことを確認できます。

  1. django-admin --version
Output
3.2

繰り返しますが、表示されるバージョンは、ここに表示されているものと一致しない場合があります。

これで、仮想環境に最新バージョンのDjangoがインストールされました。

サンプルプロジェクトの作成

Djangoをインストールすると、プロジェクトのビルドを開始できます。 プロジェクトを作成し、仮想環境を使用して開発サーバーでテストする方法について説明します。

まず、プロジェクトのディレクトリを作成し、それに変更します。

  1. mkdir ~/django-test
  2. cd ~/django-test

次に、仮想環境を作成します。

  1. python3 -m venv my_env

環境をアクティブ化します。

  1. source my_env/bin/activate

Djangoをインストールします:

  1. pip install django

プロジェクトをビルドするには、django-adminstartprojectコマンドとともに使用できます。 プロジェクトをdjangoprojectと呼びますが、これを別の名前に置き換えることができます。 startprojectは、現在の作業ディレクトリ内に次のディレクトリを作成します。

  • さまざまなDjango固有のタスクを管理するために使用できる管理スクリプトmanage.py
  • 実際のプロジェクトコードを含むディレクトリ(プロジェクトと同じ名前)。

ただし、ネストされたディレクトリが多すぎるのを避けるために、管理スクリプトと内部ディレクトリを current ディレクトリに配置するようにDjangoに指示しましょう(末尾のドットに注意してください)。

  1. django-admin startproject djangoproject .

データベースを移行するには(この例ではデフォルトでSQLiteを使用します)、migrateコマンドをmanage.pyとともに使用してみましょう。 Migrations は、Djangoモデルに加えた変更をデータベーススキーマに適用します。

データベースを移行するには、次のように入力します。

  1. python manage.py migrate

次のような出力が表示されます。

Output
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 admin.0003_logentry_add_action_flag_choices... 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 auth.0009_alter_user_last_name_max_length... OK Applying sessions.0001_initial... OK

最後に、Djano管理インターフェースを使用できるように管理ユーザーを作成しましょう。 createsuperuserコマンドでこれを実行しましょう。

  1. python manage.py createsuperuser

ユーザーのユーザー名、電子メールアドレス、およびパスワードの入力を求められます。

Django設定でALLOWED_HOSTSを変更する

アプリケーションを正常にテストするには、Django設定のディレクティブの1つを変更する必要があります。

次のように入力して、設定ファイルを開きます。

  1. nano ~/django-test/djangoproject/settings.py

内部で、ALLOWED_HOSTSディレクティブを見つけます。 これは、Djangoインスタンスへの接続に使用できるアドレスまたはドメイン名のリストを定義します。 このリストにないHostヘッダーを持つ着信要求は、例外を発生させます。 Djangoでは、特定のクラスのセキュリティの脆弱性を防ぐためにこれを設定する必要があります。

角かっこ内に、Djangoサーバーに関連付けられているIPアドレスまたはドメイン名をリストします。 各項目は引用符で囲み、個別のエントリをコンマで区切ってリストする必要があります。 ドメイン全体とサブドメインのリクエストが必要な場合は、エントリの先頭にピリオドを追加します。

〜/ django-test / djangoproject / settings.py
ALLOWED_HOSTS = ['your_server_ip_or_domain', 'your_second_ip_or_domain', . . .]

終了したら、ファイルを保存してエディターを終了します。

開発サーバーのテスト

ユーザーができたら、Django開発サーバーを起動して、新しいDjangoプロジェクトがどのように見えるかを確認できます。 これは開発目的でのみ使用してください。 デプロイする準備ができたら、Djangoのデプロイに関するガイドラインに注意深く従ってください。

開発サーバーを試す前に、ファイアウォールで適切なポートを開いていることを確認してください。 サーバーの初期設定ガイドに従い、UFWを使用している場合は、次のように入力してポート8000を開くことができます。

  1. sudo ufw allow 8000

開発サーバーを起動します。

  1. python manage.py runserver your_server_ip:8000

WebブラウザでサーバーのIPアドレスにアクセスし、続いて:8000にアクセスします。

http://your_server_ip:8000

次のようなものが表示されます。

Django public page

管理インターフェースにアクセスするには、URLの末尾に/admin/を追加します。

http://your_server_ip:8000/admin/

これにより、ログイン画面が表示されます。

Django admin login

作成した管理者のユーザー名とパスワードを入力すると、サイトのメインの管理者セクションにアクセスできます。

Django admin page

Django管理インターフェースの操作の詳細については、「Django管理インターフェースを有効にして接続する方法」を参照してください。

デフォルトサイトの確認が終了したら、ターミナルでCTRL-Cと入力して開発サーバーを停止できます。

作成したDjangoプロジェクトは、より完全なサイトを設計するための構造的な基盤を提供します。 アプリケーションを構築してサイトをカスタマイズする方法の詳細については、Djangoのドキュメントを確認してください。

結論

これで、Ubuntu 20.04サーバーにDjangoがインストールされ、強力なWebアプリケーションを作成するために必要な主要なツールが提供されます。 また、新しいプロジェクトを開始して開発者サーバーを起動する方法も知っておく必要があります。 Djangoのような完全なWebフレームワークを活用すると、開発が高速化され、アプリケーションの固有の側面にのみ集中できるようになります。

モデルビューなどの詳細な説明など、Djangoの操作に関する詳細については、Django開発シリーズを参照してください。