序章

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

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

さまざまな方法

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

さまざまな方法のいくつかを以下に示します。

  • パッケージからのグローバルインストール:公式のUbuntuリポジトリには、従来のaptパッケージマネージャーで簡単にインストールできるDjangoパッケージが含まれています。 これは非常に単純ですが、他の方法ほど柔軟ではありません。 また、リポジトリに含まれているバージョンは、プロジェクトから入手できる公式バージョンよりも遅れている可能性があります。
  • pip を介したグローバルインストール:pipツールは、Pythonパッケージのパッケージマネージャーです。 pipをインストールすると、システムレベルでDjangoを簡単にインストールして、すべてのユーザーが使用できるようになります。 これには、常に最新の安定したリリースが含まれている必要があります。 それでも、グローバルインストールは本質的に柔軟性が低くなります。
  • Virtualenvにpipを介してインストール:Python virtualenvパッケージを使用すると、さまざまなプロジェクト用の自己完結型環境を作成できます。 このテクノロジーを使用すると、大規模なシステムに影響を与えることなく、プロジェクトディレクトリにDjangoをインストールできます。 これにより、プロジェクトごとのカスタマイズとパッケージを簡単に提供できます。 仮想環境は、グローバルにアクセス可能なインストールと比較して、精神的およびプロセスのオーバーヘッドをわずかに追加しますが、最も柔軟性があります。
  • 開発バージョンgitを介したインストール:安定版リリースではなく最新の開発バージョンをインストールする場合は、gitリポジトリからコードを取得する必要があります。 これは最新の機能/修正を取得するために必要であり、グローバルまたはローカルで実行できます。 ただし、開発バージョンには同じ安定性の保証はありません。

上記の注意事項と品質を念頭に置いて、以下の手順からニーズに最適なインストール方法を選択してください。

前提条件

始める前に、Ubuntu16.04サーバーでsudo権限を持つ非rootユーザーが利用可能である必要があります。 これを設定するには、Ubuntu16.04初期サーバー設定ガイドに従ってください。

続行する準備ができたら、以下の手順に従います。

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

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

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

  1. sudo apt-get update

次に、Djangoで使用するPythonバージョンを選択します。 Python 2の場合、次のように入力します。

  1. sudo apt-get install python-django

代わりに、DjangoでPython 3を使用する場合は、次のように入力します。

  1. sudo apt-get install python3-django

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

  1. django-admin --version
Output
1.8.7

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

pipを介したグローバルインストール

Djangoの最新バージョンをグローバルにインストールする場合は、Pythonパッケージマネージャーであるpipを使用することをお勧めします。 まず、pipパッケージマネージャーをインストールする必要があります。 aptパッケージインデックスを更新します。

  1. sudo apt-get update

これで、pipをインストールできます。 Pythonバージョン2の使用を計画している場合は、次のコマンドを使用してインストールします。

  1. sudo apt-get install python-pip

代わりに、Python 3の使用を計画している場合は、次のコマンドを使用します。

  1. sudo apt-get install python3-pip

pipができたので、Djangoを簡単にインストールできます。 Python 2を使用している場合は、次のように入力できます。

  1. sudo pip install django

Python 3を使用している場合は、代わりにpip3コマンドを使用してください。

  1. sudo pip3 install django

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

  1. django-admin --version
Output
1.9.6

ご覧のとおり、pipから入手できるバージョンは、Ubuntuリポジトリから入手できるバージョンよりも最新です(上記とは異なる可能性があります)。

Virtualenvにpipを介してインストールします

おそらく、システムにDjangoをインストールする最も柔軟な方法は、virtualenvツールを使用することです。 このツールを使用すると、システムの他の部分に影響を与えることなく、必要なPythonパッケージをインストールできる仮想Python環境を作成できます。 これにより、他のプロジェクトの要件との競合に関係なく、プロジェクトごとにPythonパッケージを選択できます。

まず、Ubuntuリポジトリからpipをインストールします。 開始する前に、ローカルパッケージインデックスを更新してください。

  1. sudo apt-get update

Pythonのバージョン2を使用する場合は、次のように入力してpipをインストールできます。

  1. sudo apt-get install python-pip

代わりに、Pythonのバージョン3を使用する予定の場合は、次のように入力してpipをインストールできます。

  1. sudo apt-get install python3-pip

pipをインストールすると、それを使用してvirtualenvパッケージをインストールできます。 Python 2 pipをインストールした場合は、次のように入力できます。

  1. sudo pip install virtualenv

Python3バージョンのpipをインストールした場合は、代わりに次のように入力する必要があります。

  1. sudo pip3 install virtualenv

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

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

次に、次のように入力して、プロジェクトディレクトリ内に仮想環境を作成します。

  1. virtualenv newenv

これにより、スタンドアロンバージョンのPythonとpipが、プロジェクトディレクトリ内の分離されたディレクトリ構造にインストールされます。 仮想環境をnewenvと呼ぶことにしましたが、わかりやすい名前を付ける必要があります。 選択した名前でディレクトリが作成され、パッケージがインストールされるファイル階層が保持されます。

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

  1. source newenv/bin/activate

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

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

  1. pip install django

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

  1. django-admin --version
Output
1.9.6

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

  1. deactivate

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

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

開発バージョンgitを介してインストール

Djangoの開発バージョンが必要な場合は、gitリポジトリからDjangoをダウンロードしてインストールする必要があります。

そのためには、aptを使用してシステムにgitをインストールする必要があります。 次のように入力して、ローカルパッケージインデックスを更新します。

  1. sudo apt-get update

これで、gitをインストールできます。 pipPythonパッケージマネージャーもインストールします。 ダウンロード後のDjangoのインストールを処理するためにこれを使用します。 Python 2を使用している場合は、次のように入力できます。

  1. sudo apt-get install git python-pip

代わりにPython3を使用している場合は、次のように入力する必要があります。

  1. sudo apt-get install git python3-pip

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

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

リポジトリのクローンが作成されたら、pipを使用してリポジトリをインストールできます。 -eオプションを使用して、バージョン管理からインストールするときに必要な「編集可能」モードでインストールします。 Pythonのバージョン2を使用している場合は、次のように入力します。

  1. sudo pip install -e ~/django-dev

Python 3を使用している場合は、次のように入力します。

  1. sudo pip3 install -e ~/django-dev

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

  1. django-admin --version
Output
1.10.dev20160516172816

単一の環境に開発バージョンのDjangoをインストールする場合は、この戦略を上記のvirtualenvの使用と組み合わせることもできることに注意してください。

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

Djangoがインストールされたので、プロジェクトを開始する方法を簡単に説明します。

使用しているPythonのバージョンに一致する以下の手順に従ってください。

Python 2

django-adminコマンドを使用して、プロジェクトを作成できます。

  1. django-admin startproject projectname
  2. cd projectname

これにより、現在のディレクトリ内にprojectnameというディレクトリが作成されます。 この中に、管理スクリプトが作成され、projectnameという別のディレクトリが実際のコードで作成されます。

ノート

virtualenvコマンドで使用するために作成したプロジェクトディレクトリに既にいる場合は、これを入力することで、管理スクリプトと内部ディレクトリを追加のレイヤーなしで現在のディレクトリに配置するようにDjangoに指示できます(末尾に注意してください)ドット):

  1. django-admin startproject projectname .

Djangoの最新バージョンでデータベースをブートストラップするには(これはデフォルトでSQLiteを使用します)、次のように入力できます。

  1. python manage.py migrate

migrateコマンドが機能しない場合は、古いバージョンのDjangoを使用している可能性があります。 代わりに、次のように入力できます。

  1. python manage.py syncdb

このプロセスの一環として、管理ユーザーを作成するように求められます。 ユーザーのユーザー名、メールアドレス、パスワードを選択します。

上記のmigrateコマンドを使用した場合は、管理ユーザーを手動で作成する必要があります。 次のように入力して、管理ユーザーを作成できます。

  1. python manage.py createsuperuser

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

開発バージョンでのテストに関するセクションに進んでください。

Python 3

django-adminコマンドを使用して、プロジェクトを作成できます。

  1. django-admin startproject projectname
  2. cd projectname

これにより、現在のディレクトリ内にprojectnameというディレクトリが作成されます。 この中に、管理スクリプトが作成され、projectnameという別のディレクトリが実際のコードで作成されます。

ノート

virtualenvコマンドで使用するために作成したプロジェクトディレクトリに既にいる場合は、これを入力することで、管理スクリプトと内部ディレクトリを追加のレイヤーなしで現在のディレクトリに配置するようにDjangoに指示できます(末尾に注意してください)ドット):

  1. django-admin startproject projectname .

Djangoの最新バージョンでデータベースをブートストラップするには(これはデフォルトでSQLiteを使用します)、次のように入力できます。

  1. python3 manage.py migrate

migrateコマンドが機能しない場合は、古いバージョンのDjangoを使用している可能性があります。 代わりに、次のように入力できます。

  1. python3 manage.py syncdb

このプロセスの一環として、管理ユーザーを作成するように求められます。 ユーザーのユーザー名、メールアドレス、パスワードを選択します。

上記のmigrateコマンドを使用した場合は、管理ユーザーを手動で作成する必要があります。 次のように入力して、管理ユーザーを作成できます。

  1. python3 manage.py createsuperuser

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

Django設定でALLOWED_HOSTSを変更する

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

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

  1. nano ~/projectname/projectname/settings.py

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

角かっこ内に、Djangoサーバーに関連付けられているIPアドレスまたはドメイン名をリストします。 各項目は、エントリをコンマで区切って引用符で囲む必要があります。 ドメイン全体とサブドメインのリクエストを希望する場合は、エントリの先頭にピリオドを追加します。 以下のスニペットには、デモンストレーションに使用されるコメントアウトされた例がいくつかあります。

〜/ myproject / myproject / settings.py
. . .
# The simplest case: just add the domain name(s) and IP addresses of your Django server
# ALLOWED_HOSTS = [ 'example.com', '203.0.113.5']
# To respond to 'example.com' and any subdomains, start the domain with a dot
# ALLOWED_HOSTS = ['.example.com', '203.0.113.5']
ALLOWED_HOSTS = ['your_server_domain_or_IP', 'second_domain_or_IP', . . .]

終了したら、ファイルを保存して閉じます。

開発サーバーでのテスト

ユーザーができたら、Django開発サーバーを起動して、新しいDjangoプロジェクトがどのように見えるかを確認できます。 これは開発目的でのみ使用してください。

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

  1. sudo ufw allow 8000

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

Python 2の場合、次を実行します。

  1. python manage.py runserver 0.0.0.0:8000

Python 3の場合、次を実行します。

  1. python3 manage.py runserver 0.0.0.0:8000

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

server_ip_address:8000

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

Django public page

次に、URLの末尾に/adminを追加して、管理者ログインページにアクセスします。

server_ip_address:8000/admin

Django admin login

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

Django admin page

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

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

結論

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