Debian8にDjangoWebフレームワークをインストールする方法
序章
Djangoは、動的なWebサイトとアプリケーションを開発するためのフル機能のPythonWebフレームワークです。 Djangoを使用すると、Python Webアプリケーションをすばやく作成し、フレームワークを利用して手間のかかる作業を大幅に行うことができます。
このガイドでは、Debian8サーバーでDjangoを起動して実行する方法を説明します。 インストール後、サイトの基盤として使用する新しいプロジェクトを開始する方法を説明します。
前提条件
始める前に、Debian8サーバーでsudo
権限を持つ非rootユーザーが利用可能である必要があります。 これを設定するには、Debian8初期サーバー設定ガイドに従ってください。
続行する準備ができたら、以下を読んで、状況に最適なインストール方法を決定してください。
利用可能なインストール方法
ニーズや開発環境の構成方法に応じて、Djangoをインストールする方法はいくつかあります。 これらにはさまざまな利点があり、1つの方法が他の方法よりも特定の状況に適している場合があります。
さまざまな方法のいくつかを以下に示します。
- パッケージからのグローバルインストール:公式のDebianリポジトリには、従来の
apt
パッケージマネージャーで簡単にインストールできるDjangoパッケージが含まれています。 これは非常に単純ですが、他の方法ほど柔軟ではありません。 また、リポジトリに含まれているバージョンは、プロジェクトから入手できる公式バージョンより遅れている可能性があります。 - pip を介したグローバルインストール:
pip
ツールは、Pythonパッケージのパッケージマネージャーです。pip
をインストールすると、システムレベルでDjangoを簡単にインストールして、すべてのユーザーが使用できるようになります。 これには、常に最新の安定したリリースが含まれている必要があります。 それでも、グローバルインストールは本質的に柔軟性が低くなります。 - Virtualenvにpipを介してインストール:Python
virtualenv
パッケージを使用すると、さまざまなプロジェクト用の自己完結型環境を作成できます。 このテクノロジーを使用すると、システムレベルのパッケージに影響を与えることなく、プロジェクトディレクトリにDjangoをインストールできます。 これにより、プロジェクトごとのカスタマイズとパッケージを簡単に提供できます。 仮想環境は、グローバルにアクセス可能なインストールと比較して、精神的およびプロセスのオーバーヘッドをわずかに追加しますが、最も柔軟性があります。 - 開発バージョンgitを介したインストール:安定版リリースではなく最新の開発バージョンをインストールする場合は、
git
リポジトリからコードを取得する必要があります。 これは、最新の機能/修正を取得するために必要な場合があり、グローバルまたはローカルで実行できます。 ただし、開発バージョンには同じ安定性の保証はありません。
上記の注意事項と品質を念頭に置いて、以下の手順からニーズに最適なインストール方法を選択してください。 その後、サンプルプロジェクトの作成のセクションを確認して、開始方法を確認してください。
パッケージからのグローバルインストール
Debianリポジトリを使用してDjangoをインストールしたい場合、プロセスは非常に簡単です。
まず、ローカルパッケージインデックスをapt
で更新します。
sudo apt-get update
次に、Djangoで使用するPythonバージョンを選択します。 Python 2 の場合、次のように入力します。
sudo apt-get install python-django
代わりに、 Python 3 をDjangoで使用する場合は、次のように入力します。
sudo apt-get install python3-django
次のように入力して、インストールが成功したことをテストできます。
django-admin --version
Output1.7.11
これは、ソフトウェアが正常にインストールされたことを意味します。 また、Djangoバージョンが最新の安定版ではないことに気付くかもしれません。 ソフトウェアの使用方法について少し学ぶには、スキップしてサンプルプロジェクトの作成方法を学びましょう。
pipを介したグローバルインストール
Djangoの最新バージョンをグローバルにインストールする場合は、Pythonパッケージマネージャーであるpip
を使用することをお勧めします。 まず、pip
パッケージマネージャーをインストールする必要があります。 apt
パッケージインデックスを更新します。
sudo apt-get update
これで、適切なパッケージをインストールして、インストールを完了することができます。 必要なパッケージとコマンドは、プロジェクトで使用する予定のPythonのバージョンによって異なります。
Python 2
Python 2の使用を計画している場合は、次のコマンドを使用して、Pythonパッケージマネージャーであるpip
をインストールします。
sudo apt-get install python-pip
pip
ができたので、次のように入力してDjangoを簡単にインストールできます。
sudo pip install django
次のように入力すると、インストールが成功したことを確認できます。
django-admin --version
Output1.10.4
ご覧のとおり、pip
から入手できるバージョンは、Debianリポジトリから入手できるバージョンよりも最新です(上記とは異なる可能性があります)。
Python 3
Python 3 を使用する場合は、次のコマンドを使用してpip
をインストールします。
sudo apt-get install python3-pip
次に、pip
パッケージマネージャーを利用して、次のように入力してDjangoをインストールできます。
sudo pip3 install django
インストールが正しく完了したことを確認するには、次のように入力します。
django-admin --version
Output1.10.4
pip
を介してインストールされたバージョンは、最新の安定したリリースである必要があります(特定のバージョンは上記のものとは異なる場合があります)。
Virtualenvpipを介してインストール
おそらく、システムにDjangoをインストールする最も柔軟な方法は、virtualenv
ツールを使用することです。 このツールを使用すると、システムの他の部分に影響を与えることなく、必要なPythonパッケージをインストールできる仮想Python環境を作成できます。 これにより、他のプロジェクトの要件との競合に関係なく、プロジェクトごとにPythonパッケージを選択できます。
まず、Debianリポジトリからpip
をインストールします。 開始する前に、ローカルパッケージインデックスを更新してください。
sudo apt-get update
Djangoのインストールに必要なパッケージとコマンドは、プロジェクトで使用するPythonのバージョンによって異なります。 使用する予定のPythonのバージョンについては、以下の手順に従ってください。
Python 2
最初のステップは、pip
をグローバルにインストールすることです。 Python 2を使用する場合、これを行うコマンドは次のとおりです。
sudo apt-get install python-pip
pip
をインストールしたら、次のように入力してvirtualenv
パッケージをインストールできます。
sudo pip install virtualenv
これで、新しいプロジェクトを開始するたびに、そのプロジェクトの仮想環境を作成できます。 新しいプロジェクトディレクトリを作成して移動することから始めます。
mkdir ~/projectname cd ~/projectname
次に、次のように入力して、プロジェクトディレクトリ内に仮想環境を作成します。
virtualenv venv
これにより、スタンドアロンバージョンのPythonとpip
が、プロジェクトディレクトリ内の分離されたディレクトリ構造にインストールされます。 仮想環境をvenv
と呼ぶことにしましたが、わかりやすい名前を付けることができます。 選択した名前でディレクトリが作成され、パッケージがインストールされるファイル階層が保持されます。
分離された環境にパッケージをインストールするには、次のように入力してパッケージをアクティブ化する必要があります。
cd ~/projectname source venv/bin/activate
プロンプトは、仮想環境にいることを反映するように変更されます。 (venv)username@hostname:~/projectname$
のようになります。
新しい環境では、pip
を使用してDjangoをインストールできます。 ローカルにインストールするため、はsudo
を使用する必要はありません。
pip install django
次のように入力して、インストールを確認できます。
django-admin --version
Output1.10.4
ご覧のとおり、Djangoは仮想環境にインストールされています。
注:仮想環境を終了するには、システムの任意の場所からdeactivate
コマンドを発行します。
deactivate
プロンプトは従来の表示に戻るはずです。
プロジェクトで再度作業する場合は、プロジェクトディレクトリに戻ってアクティブ化することにより、仮想環境を再度アクティブ化する必要があります。
cd ~/projectname source venv/bin/activate
Python 3
最初のステップは、pip
をグローバルにインストールすることです。 Python 3でこれを行うには、次のように入力します。
sudo apt-get install python3-pip
次に、インストールしたパッケージマネージャーを使用して、virtualenv
Pythonパッケージをインストールします。
sudo pip3 install virtualenv
次に、新しいプロジェクトのパッケージを保持する仮想環境を作成します。 新しいプロジェクトディレクトリを作成して移動することから始めます。
mkdir ~/projectname cd ~/projectname
次のように入力して、プロジェクトディレクトリ内に仮想環境を作成します。
virtualenv venv
これにより、スタンドアロンバージョンのPythonとpip
が、プロジェクトディレクトリ内の分離されたディレクトリ構造にインストールされます。 引数として渡された名前でディレクトリが作成されます。 ここではvenv
を選択しました。 このディレクトリは、パッケージがインストールされるファイル階層を保持します。
パッケージを仮想環境にインストールする前に、次のように入力してパッケージをアクティブ化する必要があります。
cd ~/projectname source venv/bin/activate
これで、コマンドプロンプトの前に仮想環境の名前を付ける必要があります。 (venv)username@hostname:~/projectname$
のようになります。
新しい環境では、pip
を使用してDjangoをインストールします。 Python 3を使用している場合でも、内のコマンドはpip
(pip3
ではない)であることに注意してください。 また、ローカルにインストールするため、はsudo
を使用する必要がないことに注意してください。
pip install django
次のように入力して、インストールを確認できます。
django-admin --version
Output1.10.4
ご覧のとおり、Djangoは仮想環境にインストールされています。
注:仮想環境を終了するには、システムの任意の場所からdeactivate
コマンドを発行します。
deactivate
プロンプトは従来の表示に戻るはずです。
プロジェクトで再度作業する場合は、プロジェクトディレクトリに戻ってアクティブ化することにより、仮想環境を再度アクティブ化する必要があります。
cd ~/projectname source venv/bin/activate
開発バージョンgitを介してインストール
Djangoの開発バージョンが必要な場合は、プロジェクトのgit
リポジトリからDjangoをダウンロードしてインストールする必要があります。
これを行うには、最初にapt
を使用してシステムにgit
をインストールします。 ダウンロードしたソースコードからのインストールに使用するpip
も必要です。 パッケージ名とコマンドは、Djangoで使用する予定のPythonのバージョンによって異なります。
Python 2
Python 2を使用している場合は、次のように入力して、パッケージインデックスを更新し、必要なパッケージをインストールできます。
sudo apt-get update sudo apt-get install git python-pip
git
を入手したら、Djangoリポジトリのクローンを作成できます。 リリース間で、このリポジトリには、安定性を犠牲にして、より最新の機能とバグ修正が含まれるようになります。 次のように入力して、ホームディレクトリ内のdjango-dev
というディレクトリにリポジトリのクローンを作成できます。
git clone git://github.com/django/django ~/django-dev
リポジトリのクローンが作成されたら、pip
を使用してリポジトリをインストールできます。 -e
オプションを使用して、バージョン管理からインストールするときに必要な「編集可能」モードでインストールします。 Pythonのバージョン2を使用している場合は、次のように入力します。
sudo pip install -e ~/django-dev
次のように入力すると、インストールが成功したことを確認できます。
django-admin --version
Output1.11.dev20161220175814
単一の環境に開発バージョンのDjangoをインストールする場合は、この戦略をvirtualenv
と組み合わせることができることに注意してください。
Python 3
Python 3 を使用している場合は、パッケージインデックスを更新し、次のように入力してgit
とpip
をインストールします。
sudo apt-get update sudo apt-get install git python3-pip
次に、次のように入力して、ホームディレクトリ内のdjango-dev
というディレクトリにDjangoリポジトリのクローンを作成できます。
git clone git://github.com/django/django ~/django-dev
Djangoは、pip
を使用してgit
ディレクトリから直接インストールできます。 -e
オプションを使用すると、「編集可能」モードでインストールできます。これは、バージョン管理リポジトリからインストールする場合に必要です。
sudo pip3 install -e ~/django-dev
次のように入力すると、インストールが成功したことを確認できます。
django-admin --version
Output1.11.dev20161220175814
分離された環境内に開発バージョンをインストールする場合は、この戦略をvirtualenv
戦略と組み合わせることができます。
サンプルプロジェクトの作成
Djangoをインストールしたら、プロジェクトを開始する方法を紹介します。
プロジェクトの基本を作成する
django-admin
コマンドを使用してプロジェクトを作成します。 これにより、現在のディレクトリ内にprojectname
というディレクトリが作成されます。 この新しいディレクトリ内に管理スクリプトが作成され、projectname
という別のディレクトリが実際のコードで作成されます。
注: virtualenv
コマンドで使用するために作成した親プロジェクトディレクトリがすでにある場合は、管理スクリプトと内部ディレクトリを既存のディレクトリに直接配置するようにDjangoに指示できます。 これにより、プロジェクトディレクトリの余分なレイヤーを回避できます。
cd ~/projectname source venv/bin/activate django-admin startproject projectname .
コマンドの最後にある終了ドットに注意してください。
完全なディレクトリ構造(親プロジェクトディレクトリ、管理スクリプト、および内部プロジェクトディレクトリ)を作成するには、次のように入力します。
django-admin startproject projectname cd projectname
データベースをブートストラップするには(これはデフォルトでSQLiteを使用します)、次のように入力します。
./manage.py migrate
次に、次のように入力して管理ユーザーを作成します。
./manage.py createsuperuser
ユーザーのユーザー名、電子メールアドレス、およびパスワードを選択するように求められます。
Django設定でALLOWED_HOSTSを変更する
アプリケーションをテストする前に、Django設定のディレクティブの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
ファイアウォールを実行している場合は、次のように入力して適切なポートを開くことができます。
sudo ufw allow 8000
iptables
ファイアウォールを実行している場合、必要な正確なコマンドは、現在のファイアウォール構成によって異なります。 ほとんどの構成の場合、次のコマンドが機能するはずです。
sudo iptables -I INPUT -p tcp --dport 8000 -j ACCEPT
次のように入力して、開発サーバーを起動します。
~/projectname/manage.py runserver 0.0.0.0:8000
サーバーのIPアドレスにアクセスし、続いてWebブラウザで:8000
にアクセスします
http://server_ip_address:8000
次のようなものが表示されます。
次に、URLの末尾に/admin
を追加して、管理者ログインページにアクセスします。
server_ip_address:8000/admin
作成した管理者のユーザー名とパスワードを入力すると、サイトの管理者セクションに移動します。
デフォルトサイトの確認が終了したら、ターミナルでCTRL-C
と入力して開発サーバーを停止できます。
作成したDjangoプロジェクトは、より完全なサイトを設計するための構造的な基盤を提供します。 アプリケーションを構築してサイトをカスタマイズする方法の詳細については、Djangoのドキュメントを確認してください。
結論
これで、Debian 8サーバーにDjangoがインストールされ、強力なWebアプリケーションを作成するために必要な主要なツールが提供されます。 また、新しいプロジェクトを開始して開発者サーバーを起動する方法も知っておく必要があります。 Djangoのような完全なWebフレームワークを活用すると、開発が高速化され、アプリケーションの固有の側面にのみ集中できるようになります。