1 2 | cd /my/dir/
django-admin startproject hoge_proj
|
作成したプロジェクトのパスは、/my/dir/hoge_proj です。
1 | emacs /etc/apache2/http.conf |
ApacheにどのURI以下をDjangoに任せるかをLocationディレクティブで指定する必要があります。
ここでは、/var/www/py/ 以下をDjangoに任せるよう設定する例を示します。
1 2 3 4 5 6 7 8 9 | <Location "/py/"> SetHandler python-program PythonHandler django.core.handlers.modpython PythonOption django.root /my/dir/hoge_proj PythonPath "['/my/dir'] + sys.path" SetEnv DJANGO_SETTINGS_MODULE hoge_proj.settings # PythonAutoReload On PythonDebug On </Location> |
上記のように設定することで、/var/www/py以下にアクセスすると、Djangoが応答するようになります。
とりあえず、http://yourdomain/py/にアクセスしてみましょう。
なお、このエラーメッセージには詳細なバックトレース情報等が表示されています。これは、
上記設定で「PythonDebug On」と指定しているためです。セキュリティや性能向上のためにも本運用時には
コメントアウトするようにしましょう。
また、上記でコメントアウトしている「PythonAutoReload On」についてですが、
hoge_projプロジェクト配下のファイルが変更されるたびにApacheがリロードしてくれるという便利なものです。
開発状況に応じて使うようにしましょう。
Djangoは、Apahce + mod_pythonの構成で動作しています。
そのため、上記設定のほとんどはmod_pythonの書式に従っていますので、詳細はmod_pythonの資料をご参照ください。
mod_python運用で重要なポイントは、Apache起動時にインタプリタやプロジェクト内のCGIプログラムが
すべてApacheプロセスのメモリ上にロードされるということと、HTTPリクエストに対してスレッドが応答するように
なるということです。従って、動作が高速になると同時に、スレッド実装についてよく理解している必要がありますので
注意してください。また、プロジェクト内のCGIを書き換えてもApacheを再起動しない限り(「PythonAutoReload On」の
場合を除く)、メモリ上のプログラムは起動時のままであるということにも注意を払っておきましょう。
1 | emacs /my/dir/hoge_proj/settings.py |
設定内容は、個々の開発状況に応じて変化しますのでここでは基本的な事項だけ説明します。 Django v1.02のデフォルトのsettings.pyから変更する点としては、以下の項目があります。
1 2 3 4 5 6 7 | TIME_ZONE = "ASIA/TOKYO" DEFAULT_CHARSET = "utf-8" SESSION_EXPIRE_AT_BROWSER_CLOSE = True CACHE_BACKEND = 'file:///var/cache/django' TEMPLATE_DIRS = ( "/my/dir/hoge_proj", ) |
上記で必須なのは、TEMPLATE_DIRSの設定です。
TIME_ZONEは、タイムスタンプを処理する際に重要となってきます。デフォルトではUTCになっていますから 日本の時刻を扱いたい場合は上記のように設定しておきましょう。そうすることでJST扱いになります。
DEFAULT_CHARSETは、自分がどの文字エンコーディングを使用するかということです。 できるだけDjangoに教えておいた方がよいでしょう。
SESSION_EXPIRE_AT_BROWSER_CLOSEは、Djangoのセッション機能を用いるときにつかう設定です。 Djangoでは、ハンドラリクエストオブジェクトを介して簡単にセッションを扱う仕組みがあるのですが、 そのセッションの有効期限を柔軟に設定すること出来ます。上記では、ブラウザを閉じたらセッションを 削除するという設定をしています。これは、セッションライブラリを使用しない限り関係のない話なので、 省略可能です。
CACHE_BACKENDは、Djangoでキャッシュ機能を使用するときに必要となる設定です。
Djangoは協力で柔軟なキャッシュ機能を持っています。ページ単位のキャッシュやオブジェクト単位のキャッシュ などです。また、キャッシュの実現方法も、メモリ、ファイル、データベースなど状況に応じて 変更できます。上記では、/var/cache/djangoというディレクトリに、キャッシュデータをファイルとして格納 するという宣言をしています。
/var/cache/djangoディレクトリは、自分で作成する必要があり、また権限も777にするなどしてWebサーバに ファイル作成権限を与えておく必要がありますので、自分で作成するようにしてください。
それについては、また後日!