DjangoをApache + mod_wsgi + Windowsで動かす

Apache 2.4でmod_wsgiを設定してDjangoを使う

mod_wsgiのインストール

最初にapacheにmod_wsgiを組み込みます。

ダウンロード

Windows版のBinaryをダウンロードします。今回は、Python3.4 32ビット版 + apache 32ビット版(XAMPP1.8.3)をインストールしたWindows環境を想定しているので、

mod_wsgi‑3.5.ap24.win32‑py3.4.zip

をダウンロードしました。

apacheでロード

zipファイルを展開して

mod_wsgi.so

apache/modules

に配置して、confで

LoadModule wsgi_module modules/mod_wsgi.so

とすれば、mod_wsgiの組み込みは完了です(要再起動)。

mod-wsgi-python

正常にインストールが完了していれば、phpinfoを利用して上の画像のとおり表示されます。

バーチャルホストのconf全体像

VirtualHostとしてDjangoアプリを設定します。confの全体像は以下のとおりです。

<VirtualHost *:80>
  ServerName django.local
  WSGIScriptAlias / C:/xampp/htdocs/vhost/project/project/wsgi.py

  <Directory "C:/xampp/htdocs/vhost/project/project">
    <Files wsgi.py>
      Require all granted
    </Files>
  </Directory>

  # admin画面の静的ファイルパス設定
  Alias /static C:/xampp/htdocs/vhost/project/project/static
  <Directory "C:/xampp/htdocs/vhost/project/project/static">
    Require all granted
  </Directory>
</VirtualHost>

上のVirtualHost設定の外側で、以下の設定を行います。

WSGIPythonPath C:/xampp/htdocs/vhost/project

XAMPPの場合は、httpd-vhosts.confでバーチャルホストの設定を行い、httpd.confでWSGIPythonPathの設定を行う感じになります。

Djangoプロジェクトを作成しwsgi.pyを準備する

先にconfの全体像を載せましたが、その中でwsgi.pyというファイルをプロジェクトのエントリーファイルとして設定しています。そのため、Djangoプロジェクトを作成します。

Djangoがインストールされていることが前提ですが、プロジェクトを展開したいディレクトリに移動し以下のコマンドを実行します。

django-admin startproject project

django-adminは、

C:\Python34\Lib\site-packages\django\bin

に配置されています。

Djangoプロジェクトを展開した上で、

django.local

にアクセスすると、以下の画面が表示されます。

django-powerd

admin画面にCSSを適用する

django.local/admin

にアクセスすると、Djangoが自動生成するadminページのログイン画面が表示されます。が、CSSが適用されない状態になっています。上で載せたconfでstaticというaliasを設定したので、そのパスにCSSなどの静的ファイルを配置します。

project/settings.py

の最後に以下を追記します。

STATIC_ROOT = "C:/xampp/htdocs/vhost/project/project/static"

追記したら静的ファイルをSTATIC_ROOTにコピーする以下のコマンドを実行します。

python manage.py collectstatic

django-administration

ログイン画面にスタイルが適用された状態で表示されました。

Apacheで開発する場合の設定

Apache + mod_wsgiの環境をWindowsに構築することが出来ましたが、この構成で開発を開始するとコードの変更が即時反映されないため不便なことに気づきます。

Windows環境におけるApache + mod_wsgiの構成はEmbedded Modeとなり、コードの変更を反映するためにはApacheの再起動が必要になります。そのあたりの詳細は、以下のページに書いてあります。

Reloading Source Code

Windows環境で手軽にApache + mod_wsgiの開発環境を構成するための方法としては、

MaxRequestsPerChild 3

MaxRequestsPerChildに小さい数字を設定し、Apacheプロセスが再起動しやすい環境を意図的に作り、その環境で開発を行うという方法があります。

Webエンジニアブログにコメント

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

DjangoをApache + mod_wsgi + Windowsで動かすの記事にコメントを投稿