開発者ドキュメント

mod_wsgiを使用してUbuntu12.04でアプリケーションを提供する

ステータス:非推奨

この記事では、サポートされなくなったバージョンのUbuntuについて説明します。 現在Ubuntu12.04を実行しているサーバーを運用している場合は、サポートされているバージョンのUbuntuにアップグレードまたは移行することを強くお勧めします。

理由:
Ubuntu 12.04は2017年4月28日に保守終了(EOL)に達しました and no longer receives security patches or updates. This guide is no longer maintained.

代わりに参照してください:
このガイドは参照として役立つ場合がありますが、他のUbuntuリリースでは機能しない場合があります。 可能な場合は、使用しているUbuntuのバージョン用に作成されたガイドを使用することを強くお勧めします。 ページ上部の検索機能を使用して、より新しいバージョンを見つけることができます。

前提条件

この記事を始める前に、このシリーズの前の2つを完了していることを確認してください。 あなたはここでそれらを見つけることができます:

Ubuntu12.04へのDjangoのインストール

Ubuntu12.04へのmod_wsgiのインストール

Djangoアプリケーションの作成:

まず、ホームディレクトリに移動します。 新しいディレクトリを作成し、それに切り替えます。

mkdir  -p ~/public_html/domain1.com
cd ~/public_html/domain1.com

その後、django-admin.pyツールを使用してプロジェクトを作成します。

django-admin.py startproject MyTestProject

仮想ホストとWSGIファイルの作成:

Djangoアプリを適切に提供するには、Apacheが特定のタイプのリクエストをmod_wsgiに転送することになっていることを知っていることが重要です。 これらのリクエストの処理方法をmod_wsgiに指示するwsgiファイルを作成することも重要です。 これらのタスクを実行するために仮想ホストをセットアップします。 Apacheにwsgiファイルの場所を通知し、それに応じてファイルを設定します。

新しい仮想ホストファイルを開きます。

sudo nano /etc/apache2/sites-available/domain1.com

次に、仮想ホストの定義を以下に入力します。

&ltVirtualHost *:80>
        ServerName domain1.com
        ServerAlias www.domain1.com
        WSGIScriptAlias / /home/username/public_html/domain1.com/MyTestProject.wsgi
</VirtualHost>

上記で指定したwsgiファイルを使用して受信リクエストをmod_wsgiに渡すようにapacheに指示したら、mod_wsgiファイル自体を作成します。

nano ~/public_html/domain1.com/MyTestProject.wsgi

次の構成を入力します。

import os
import sys	
sys.path.append('~/public_html/domain1.com/')
os.environ['DJANGO_SETTINGS_MODULE'] = 'MyTestProject.settings'
import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()

この定義により、必要なモジュールが確実にインポートされます。 さらに、DjangoプロジェクトのパスをPythonのパスに追加し、mod_wsgiが機能するのに役立ついくつかの変数を設定します。 完了したら、仮想ホストを有効にしてApacheを再起動する必要があります。

sudo a2ensite domain1.com
sudo /etc/init.d/apache2 reload

すべてが期待どおりに進んだ場合、ブラウザにドメイン(ドロップレットIP)が表示され、新しく作成されたアプリケーションを取得できます。 NameVirtualHostまたはポートエラーが発生した場合に備えて、Apacheをリロードします。

静的コンテンツ

仮想ホストの定義には注意が必要です。 静的コンテンツはサポートされていません。 静的コンテンツを適切に提供するために、ファイルMyTestProject / settings.pyのいくつかの設定を更新し、仮想ホストの次の定義を使用できます。

&ltVirtualHost *:80>
        ServerName domain1.com
        ServerAlias www.domain1.com
        WSGIScriptAlias / /home/username/public_html/domain1.com/MyTestProject.wsgi
        Alias /static/ /home/username/public_html/domain1.com/static/
        &ltLocation "/static/">
            Options -Indexes
        </Location>
</VirtualHost>

エイリアスディレクティブは、Djangoまたはmod_wsgiがドメインの/static/ディレクトリの下にあるものを処理することを許可してはならないことをApacheに通知します。 任意のディレクトリを使用できますが、/ home / username/public_html/domain1.com/で使用できることを確認してください。 この例では、ディレクトリの名前は静的です。 MEDIA_ROOTとMEDIA_URLの変数を設定して、settings.pyを更新します。

 nano /home/username/public_html/domain1.com/MyMyTestProject/settings.py

以下の設定を見つけて更新してください。

MEDIA_ROOT = '/home/username/public_html/domain1.com/static/'
MEDIA_URL = '/static/'

最後に、Apacheを再起動して変更を有効にします。

 sudo /etc/init.d/apache2 reload

http://www.domain1.com/static/path/to/fileを介して、MEDIA_ROOTに配置されているすべてのアイテムにアクセスできます。

Djangoアプリへの変更

プロジェクトに変更を加えるたびに、apacheを再起動する習慣を身に付けることをお勧めします。

Etel Sverdlov
モバイルバージョンを終了