前書き
Djangoは強力なWebフレームワークであり、PythonアプリケーションまたはWebサイトを迅速に立ち上げるのに役立ちます。 Djangoには、ローカルでコードをテストするための簡素化された開発サーバーが含まれていますが、わずかに生産関連の場合でも、より安全で強力なWebサーバーが必要です。
このガイドでは、DjangoをPython仮想環境にインストールして設定する方法を示します。 次に、アプリケーションロジックを必要とするリクエストをDjangoアプリに渡す前に、クライアントリクエストを直接処理できるように、アプリケーションの前にApacheをセットアップします。 これを行うには、WSGIインターフェース仕様を介してDjangoと通信できるApacheモジュール「+ mod_wsgi +」を使用します。
前提条件と目標
このガイドを完了するには、 `+ sudo +`特権が設定された非rootユーザーを持つ新しいUbuntu 14.04サーバーインスタンスが必要です。 https://www.digitalocean.com/community/tutorials/initial-server-setup-with-ubuntu-14-04 [初期サーバーセットアップガイド]を実行して、これを設定する方法を学ぶことができます。
Python仮想環境内にDjangoをインストールします。 プロジェクト固有の環境にDjangoをインストールすると、プロジェクトとその要件を個別に処理できます。
アプリケーションを起動して実行したら、DjangoアプリとインターフェイスするようにApacheを構成します。 これは、HTTPリクエストをWSGIと呼ばれる仕様で定義された予測可能なアプリケーション形式に変換できる、 + mod_wsgi +
Apacheモジュールでこれを行います。 WSGIの詳細については、https://www.digitalocean.com/community/tutorials/how-to-set-up-uwsgi-and-nginx-to-serve-python-apps-onのリンクセクションを参照してください。 -ubuntu-14-04#definitions-and-concepts [このガイド]。
始めましょう。
Ubuntuリポジトリからパッケージをインストールする
プロセスを開始するには、Ubuntuリポジトリから必要なすべてのアイテムをダウンロードしてインストールします。 これには、Apache Webサーバー、Djangoアプリとのインターフェースに使用される `+ mod_wsgi `モジュール、およびPython関連ツールのダウンロードに使用できるPythonパッケージマネージャーである ` pip +`が含まれます。
必要なものをすべて取得するには、サーバーのローカルパッケージインデックスを更新してから、適切なパッケージをインストールします。
Python 2でDjangoを使用している場合、必要なコマンドは次のとおりです。
sudo apt-get update
sudo apt-get install python-pip apache2 libapache2-mod-wsgi
代わりに、Python 3でDjangoを使用している場合、代替のApacheモジュールが必要になります。 この場合の適切なコマンドは次のとおりです。
sudo apt-get update
sudo apt-get install python3-pip apache2 libapache2-mod-wsgi-py3
チュートリアルの残りの部分で仮想環境の_outside_を操作するときに、Python 3を使用している場合は、「+ pip 」を「 pip3 +」に置き換えます。
Python仮想環境を構成する
Ubuntuリポジトリのコンポーネントができたので、Djangoプロジェクトの作業を開始できます。 最初のステップは、Djangoプロジェクトがシステムのツールや作業中の他のPythonプロジェクトから分離されるように、Python仮想環境を作成することです。
これらの環境を作成するには、 `+ virtualenv `コマンドをインストールする必要があります。 これは ` pip +`を使用して取得できます。
sudo pip install virtualenv
`+ virtualenv +`をインストールすると、プロジェクトの形成を開始できます。 プロジェクトを保持するディレクトリを作成し、そのディレクトリに移動します。
mkdir ~/
cd ~/
プロジェクトディレクトリ内で、次のように入力してPython仮想環境を作成します。
virtualenv
これにより、「」ディレクトリ内に「」というディレクトリが作成されます。 内部では、Pythonのローカルバージョンと `+ pip +`のローカルバージョンがインストールされます。 これを使用して、プロジェクトの分離されたPython環境をインストールおよび構成できます。
プロジェクトのPython要件をインストールする前に、仮想環境をアクティブ化する必要があります。 次のように入力して、それを行うことができます。
source /bin/activate
プロンプトが変わり、Python仮想環境内で操作していることを示す必要があります。 次のようになります: +()@:〜/ $ +
。
仮想環境がアクティブな状態で、次のように入力して、Djangoを `+ pip +`のローカルインスタンスでインストールします。
pip install django
新しいDjangoプロジェクトを作成して構成する
Djangoが仮想環境にインストールされたので、実際のDjangoプロジェクトファイルを作成できます。
Djangoプロジェクトを作成する
すでにプロジェクトディレクトリがあるので、ここでファイルをインストールするようDjangoに指示します。 通常の実際のコードで第2レベルのディレクトリを作成し、このディレクトリに管理スクリプトを配置します。 これの鍵は、Djangoに現在のディレクトリにファイルを作成するように指示する最後のドットです。
django-admin.py startproject .
プロジェクト設定を調整する
新しく作成したプロジェクトファイルで最初に行うべきことは、設定を調整することです。 テキストエディターで設定ファイルを開きます。
nano /settings.py
このガイドでは、簡単にするためにデフォルトのSQLiteデータベースを使用するため、実際にあまり変更する必要はありません。 Djangoが静的ファイルを配置する静的ファイルディレクトリの構成に焦点を当て、Webサーバーが静的ファイルを簡単に提供できるようにします。
ファイルの最後に、このディレクトリを設定する行を追加します。 Djangoは `+ STATIC_ROOT +`設定を使用して、これらのファイルが保存されるディレクトリを決定します。 プロジェクトのメインディレクトリで「静的」というディレクトリを使用するように、Pythonを少し使用します。
STATIC_ROOT = os.path.join(BASE_DIR, "static/")
完了したら、ファイルを保存して閉じます。
初期プロジェクトのセットアップを完了する
これで、管理スクリプトを使用して初期データベーススキーマをSQLiteデータベースに移行できます。
cd ~/
./manage.py makemigrations
./manage.py migrate
次を入力して、プロジェクトの管理ユーザーを作成します。
./manage.py createsuperuser
ユーザー名を選択し、メールアドレスを入力し、パスワードを選択して確認する必要があります。
次のように入力して、すべての静的コンテンツを構成したディレクトリの場所に収集できます。
./manage.py collectstatic
操作を確認する必要があります。 静的ファイルは、プロジェクトディレクトリ内の「+ static +」というディレクトリに配置されます。
最後に、次のコマンドでDjango開発サーバーを起動して、プロジェクトをテストできます。
./manage.py runserver 0.0.0.0:8000
ウェブブラウザで、サーバーのドメイン名またはIPアドレスにアクセスし、その後に「:8000」を入力します。
http://:8000
デフォルトのDjangoインデックスページが表示されます。
image:https://assets.digitalocean.com/articles/django_uwsgi_nginx_1404/sample_site.png [Djangoデフォルトインデックス]
アドレスバーのURLの末尾に「+ / admin 」を追加すると、「 createsuperuser」コマンドで作成した管理ユーザー名とパスワードの入力を求められます。
画像:https://assets.digitalocean.com/articles/django_uwsgi_nginx_1404/admin_login.png [Django admin login]
認証後、デフォルトのDjango管理インターフェースにアクセスできます。
image:https://assets.digitalocean.com/articles/django_uwsgi_nginx_1404/admin_interface.png [Django管理インターフェース]
探索が終了したら、ターミナルウィンドウでCTRL-Cを押して、開発サーバーをシャットダウンします。
とりあえずDjangoを使い終わったので、次のように入力して仮想環境から戻ることができます。
deactivate
Apacheを構成する
Djangoプロジェクトが機能するようになったので、Apacheをフロントエンドとして設定できます。 受信したクライアント接続は、Djangoアプリケーションが `+ mod_wsgi +`モジュールを使用することを想定しているWSGI形式に変換されます。 これは、以前のインストール時に自動的に有効になっているはずです。
WSGIパスを設定するには、デフォルトの仮想ホストファイルを編集する必要があります。
sudo nano /etc/apache2/sites-available/000-default.conf
ファイルに既に存在するディレクティブを保持できます。 追加のアイテムを追加するだけです。
まず、静的ファイルを構成しましょう。 エイリアスを使用して、 `+ / static +`で始まるすべてのリクエストをプロジェクトフォルダー内の「static」ディレクトリにマッピングするようApacheに指示します。 静的な資産は以前に収集しました。 エイリアスを設定し、ディレクトリブロックを使用して問題のディレクトリへのアクセスを許可します。
<VirtualHost *:80>
. . .
Alias /static /home///static
<Directory /home///static>
Require all granted
</Directory>
</VirtualHost>
次に、Djangoコードが保存されている第2レベルのプロジェクトディレクトリ内の `+ wsgi.py +`ファイルへのアクセスを許可します。 これを行うには、ファイルセクションを中に含むディレクトリセクションを使用します。 このネストされた構造内のファイルへのアクセスを許可します。
<VirtualHost *:80>
. . .
Alias /static /home///static
<Directory /home///static>
Require all granted
</Directory>
<Directory /home///>
<Files wsgi.py>
Require all granted
</Files>
</Directory>
</VirtualHost>
これを構成したら、WSGIパスを実際に処理するファイルの部分を作成する準備が整います。 デーモンモードを使用して、推奨される構成であるWSGIプロセスを実行します。 これを設定するには、 `+ WSGIDaemonProcess +`ディレクティブを使用できます。
このディレクティブは、プロセスの任意の名前を取ります。 一貫性を保つために「+」を使用します。 その後、プロジェクトの親ディレクトリへのPythonパスを設定します。 これは、このガイドでは「 / home // +」になります。 仮想環境を使用したため、Pythonホームを仮想環境のルートに設定する必要もあります。 このようにして、Apacheはプロジェクトの実行に必要な他のすべてのPythonコードを見つけることができます。
その後、プロセスグループを指定する必要があります。 これは、 + WSGIDaemonProcess +`ディレクティブ(この場合は `+ myproject +
)で選択したのと同じ名前を指す必要があります。 最後に、Apacheがルートドメインのリクエストを `+ wsgi.py +`ファイルに渡すように、スクリプトエイリアスを設定する必要があります。
<VirtualHost *:80>
. . .
Alias /static /home///static
<Directory /home///static>
Require all granted
</Directory>
<Directory /home///>
<Files wsgi.py>
Require all granted
</Files>
</Directory>
WSGIDaemonProcess python-path=/home// python-home=/home///
WSGIProcessGroup
WSGIScriptAlias / /home////wsgi.py
</VirtualHost>
これらの変更が完了したら、ファイルを保存して閉じます。
いくつかのパーミッションの問題をまとめる
この記事で使用するデフォルトのSQLiteデータベースを使用している場合、Apacheプロセスがこのファイルにアクセスできるようにする必要があります。
これを行うための最初のステップは、データベースのグループ所有者が読み取りおよび書き込みできるように権限を変更することです。 データベースファイルはデフォルトで「+ db.sqlite3 +」と呼ばれ、ベースプロジェクトディレクトリに配置する必要があります。
chmod 664 ~//db.sqlite3
その後、Apacheが実行されるグループ、 `+ www-data`グループ、ファイルのグループ所有権を与える必要があります。
sudo chown :www-data ~//db.sqlite3
ファイルに書き込むために、Apacheグループにデータベースの親ディレクトリの所有権を与える必要もあります。
sudo chown :www-data ~/
これらの手順が完了すると、Apacheサービスを再起動して、行った変更を実装する準備が整います。 次を入力してApacheを再起動します。
sudo service apache2 restart
これで、ポートを指定せずにサーバーのドメイン名またはIPアドレスにアクセスして、Djangoサイトにアクセスできるようになります。 通常のサイトと管理インターフェイスは期待どおりに機能するはずです。
結論
このガイドでは、独自の仮想環境でDjangoプロジェクトを設定しました。 クライアントリクエストを処理し、Djangoアプリとやり取りするために、 `+ mod_wsgi +`でApacheを設定しました。
Djangoは、多くの共通部分を提供することでプロジェクトとアプリケーションの作成を簡単にし、独自の要素に集中できるようにします。 この記事で説明した一般的なツールチェーンを活用することで、単一のサーバーから作成したアプリケーションを簡単に提供できます。