Ubuntu20.04にDjangoWebフレームワークをインストールする方法
序章
Django は、動的なWebサイトとアプリケーションを開発するためのフル機能のPythonWebフレームワークです。 Djangoを使用すると、Python Webアプリケーションをすばやく作成し、フレームワークを利用して手間のかかる作業を大幅に行うことができます。
このガイドでは、Ubuntu20.04サーバーでDjangoを起動して実行します。 インストール後、サイトの基盤として使用する新しいプロジェクトを開始します。
さまざまな方法
ニーズと開発環境の構成方法に応じて、Djangoをインストールするさまざまな方法があります。 これらにはさまざまな利点があり、1つの方法が他の方法よりも特定の状況に適している場合があります。
さまざまな方法のいくつかが含まれます:
- パッケージからのグローバルインストール:公式のUbuntuリポジトリには、従来の
apt
パッケージマネージャーでインストールできるDjangoパッケージが含まれています。 これは単純ですが、他の方法ほど柔軟ではありません。 また、リポジトリに含まれているバージョンは、プロジェクトから入手できる公式バージョンよりも遅れている可能性があります。 - 仮想環境にpipを使用してインストールする:
venv
やvirtualenv
などのツールを使用して、プロジェクトの自己完結型環境を作成できます。 仮想環境では、他のプロジェクトごとのカスタマイズやパッケージとともに、大規模なシステムに影響を与えることなく、プロジェクトディレクトリにDjangoをインストールできます。 これは通常、Djangoを使用するための最も実用的で推奨されるアプローチです。 - git を使用して開発バージョンをインストールする:安定版リリースではなく最新の開発バージョンをインストールする場合は、Gitリポジトリからコードを取得できます。 これは、最新の機能/修正を取得するために必要であり、仮想環境内で実行できます。 ただし、開発バージョンには、より安定したバージョンと同じ安定性の保証はありません。
前提条件
始める前に、Ubuntu20.04サーバーでsudo権限を持つroot以外のユーザーを使用できるようにする必要があります。 これを設定するには、Ubuntu20.04初期サーバー設定ガイドに従ってください。
パッケージからのグローバルインストール
Ubuntuリポジトリを使用してDjangoをインストールする場合、プロセスは非常に簡単です。
まず、ローカルパッケージインデックスをapt
で更新します。
- sudo apt update
次に、インストールしたPythonのバージョンを確認します。 20.04にはデフォルトでPython3.8が付属しています。これは、次のように入力することで確認できます。
- python3 -V
次のような出力が表示されます。
OutputPython 3.8.2
次に、Djangoをインストールします。
- sudo apt install python3-django
次のように入力して、インストールが成功したことをテストできます。
- django-admin --version
Output2.2.12
これは、ソフトウェアが正常にインストールされたことを意味します。 また、Djangoバージョンが最新の安定バージョンではないことに気付くかもしれません。 ソフトウェアの使用方法の詳細については、スキップしてサンプルプロジェクトの作成方法を学習してください。
仮想環境にpipでインストールする
システムにDjangoをインストールする最も柔軟な方法は、仮想環境内です。 標準のPython3ライブラリの一部であるvenv
モジュールを使用して作成する仮想環境にDjangoをインストールする方法を示します。 このツールを使用すると、システムの他の部分に影響を与えることなく、仮想Python環境を作成し、Pythonパッケージをインストールできます。 したがって、他のプロジェクトの要件との競合に関係なく、プロジェクトごとにPythonパッケージを選択できます。
ローカルパッケージインデックスを更新することから始めましょう:
- sudo apt update
インストールしたPythonのバージョンを確認してください。
- python3 -V
OutputPython 3.8.2
次に、Ubuntuリポジトリからpip
とvenv
をインストールしましょう。
- sudo apt install python3-pip python3-venv
これで、新しいプロジェクトを開始するたびに、そのプロジェクトの仮想環境を作成できます。 新しいプロジェクトディレクトリを作成して移動することから始めます。
- mkdir ~/newproject
- cd ~/newproject
次に、ご使用のバージョンのPythonと互換性のあるpython
コマンドを使用して、プロジェクトディレクトリ内に仮想環境を作成します。 仮想環境をmy_env
と呼びますが、わかりやすい名前を付ける必要があります。
- python3 -m venv my_env
これにより、スタンドアロンバージョンのPythonとpip
がプロジェクトディレクトリ内の分離されたディレクトリ構造にインストールされます。 選択した名前でディレクトリが作成され、パッケージがインストールされるファイル階層が保持されます。
分離された環境にパッケージをインストールするには、次のように入力してパッケージをアクティブ化する必要があります。
- source my_env/bin/activate
プロンプトは、仮想環境にいることを反映するように変更されます。 (my_env)username@hostname:~/newproject$
のようになります。
新しい環境では、pip
を使用してDjangoをインストールできます。 Pythonのバージョンに関係なく、仮想環境にいるときは、pip
をpip
と呼ぶ必要があります。 また、ローカルにインストールするため、sudo
を使用する必要がないことに注意してください。
- pip install django
次のように入力して、インストールを確認できます。
- django-admin --version
Output3.0.8
お使いのバージョンは、ここに表示されているバージョンと異なる場合があることに注意してください。
仮想環境を離れるには、システムのどこからでもdeactivate
コマンドを発行する必要があります。
- deactivate
プロンプトは従来の表示に戻るはずです。 プロジェクトで再度作業する場合は、プロジェクトディレクトリに戻ってアクティブ化することにより、仮想環境を再度アクティブ化します。
- cd ~/newproject
- source my_env/bin/activate
開発バージョンGitでインストール
Djangoの開発バージョンが必要な場合は、GitリポジトリからDjangoをダウンロードしてインストールできます。 仮想環境内からこれを実行してみましょう。
まず、ローカルパッケージインデックスを更新しましょう。
- sudo apt update
インストールしたPythonのバージョンを確認してください。
- python3 -V
OutputPython 3.8.2
次に、公式リポジトリからpip
とvenv
をインストールします。
- sudo apt install python3-pip python3-venv
次のステップは、Djangoリポジトリのクローンを作成することです。 リリース間で、このリポジトリには、安定性を犠牲にして、より最新の機能とバグ修正が含まれるようになります。 次のように入力して、ホームディレクトリ内の~/django-dev
というディレクトリにリポジトリのクローンを作成できます。
- git clone git://github.com/django/django ~/django-dev
このディレクトリに移動します。
- cd ~/django-dev
インストールされているPythonのバージョンと互換性のあるpython
コマンドを使用して、仮想環境を作成します。
- python3 -m venv my_env
それをアクティブにします:
- source my_env/bin/activate
次に、pip
を使用してリポジトリをインストールできます。 -e
オプションは、「編集可能」モードでインストールされます。これは、バージョン管理からインストールする場合に必要です。
- pip install -e ~/django-dev
次のように入力すると、インストールが成功したことを確認できます。
- django-admin --version
Output3.2
繰り返しますが、表示されるバージョンは、ここに表示されているものと一致しない場合があります。
これで、仮想環境に最新バージョンのDjangoがインストールされました。
サンプルプロジェクトの作成
Djangoをインストールすると、プロジェクトのビルドを開始できます。 プロジェクトを作成し、仮想環境を使用して開発サーバーでテストする方法について説明します。
まず、プロジェクトのディレクトリを作成し、それに変更します。
- mkdir ~/django-test
- cd ~/django-test
次に、仮想環境を作成します。
- python3 -m venv my_env
環境をアクティブ化します。
- source my_env/bin/activate
Djangoをインストールします:
- pip install django
プロジェクトをビルドするには、django-admin
をstartproject
コマンドとともに使用できます。 プロジェクトをdjangoproject
と呼びますが、これを別の名前に置き換えることができます。 startproject
は、現在の作業ディレクトリ内に次のディレクトリを作成します。
- さまざまなDjango固有のタスクを管理するために使用できる管理スクリプト
manage.py
。 - 実際のプロジェクトコードを含むディレクトリ(プロジェクトと同じ名前)。
ただし、ネストされたディレクトリが多すぎるのを避けるために、管理スクリプトと内部ディレクトリを current ディレクトリに配置するようにDjangoに指示しましょう(末尾のドットに注意してください)。
- django-admin startproject djangoproject .
データベースを移行するには(この例ではデフォルトでSQLiteを使用します)、migrate
コマンドをmanage.py
とともに使用してみましょう。 Migrations は、Djangoモデルに加えた変更をデータベーススキーマに適用します。
データベースを移行するには、次のように入力します。
- python manage.py migrate
次のような出力が表示されます。
OutputOperations 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
コマンドでこれを実行しましょう。
- python manage.py createsuperuser
ユーザーのユーザー名、電子メールアドレス、およびパスワードの入力を求められます。
Django設定でALLOWED_HOSTSを変更する
アプリケーションを正常にテストするには、Django設定のディレクティブの1つを変更する必要があります。
次のように入力して、設定ファイルを開きます。
- nano ~/django-test/djangoproject/settings.py
内部で、ALLOWED_HOSTS
ディレクティブを見つけます。 これは、Djangoインスタンスへの接続に使用できるアドレスまたはドメイン名のリストを定義します。 このリストにないHostヘッダーを持つ着信要求は、例外を発生させます。 Djangoでは、特定のクラスのセキュリティの脆弱性を防ぐためにこれを設定する必要があります。
角かっこ内に、Djangoサーバーに関連付けられているIPアドレスまたはドメイン名をリストします。 各項目は引用符で囲み、個別のエントリをコンマで区切ってリストする必要があります。 ドメイン全体とサブドメインのリクエストが必要な場合は、エントリの先頭にピリオドを追加します。
ALLOWED_HOSTS = ['your_server_ip_or_domain', 'your_second_ip_or_domain', . . .]
終了したら、ファイルを保存してエディターを終了します。
開発サーバーのテスト
ユーザーができたら、Django開発サーバーを起動して、新しいDjangoプロジェクトがどのように見えるかを確認できます。 これは開発目的でのみ使用してください。 デプロイする準備ができたら、Djangoのデプロイに関するガイドラインに注意深く従ってください。
開発サーバーを試す前に、ファイアウォールで適切なポートを開いていることを確認してください。 サーバーの初期設定ガイドに従い、UFWを使用している場合は、次のように入力してポート8000
を開くことができます。
- sudo ufw allow 8000
開発サーバーを起動します。
- python manage.py runserver your_server_ip:8000
WebブラウザでサーバーのIPアドレスにアクセスし、続いて:8000
にアクセスします。
http://your_server_ip:8000
次のようなものが表示されます。
管理インターフェースにアクセスするには、URLの末尾に/admin/
を追加します。
http://your_server_ip:8000/admin/
これにより、ログイン画面が表示されます。
作成した管理者のユーザー名とパスワードを入力すると、サイトのメインの管理者セクションにアクセスできます。
Django管理インターフェースの操作の詳細については、「Django管理インターフェースを有効にして接続する方法」を参照してください。
デフォルトサイトの確認が終了したら、ターミナルでCTRL-C
と入力して開発サーバーを停止できます。
作成したDjangoプロジェクトは、より完全なサイトを設計するための構造的な基盤を提供します。 アプリケーションを構築してサイトをカスタマイズする方法の詳細については、Djangoのドキュメントを確認してください。
結論
これで、Ubuntu 20.04サーバーにDjangoがインストールされ、強力なWebアプリケーションを作成するために必要な主要なツールが提供されます。 また、新しいプロジェクトを開始して開発者サーバーを起動する方法も知っておく必要があります。 Djangoのような完全なWebフレームワークを活用すると、開発が高速化され、アプリケーションの固有の側面にのみ集中できるようになります。
モデルやビューなどの詳細な説明など、Djangoの操作に関する詳細については、Django開発シリーズを参照してください。