django+iisやっと配置に成功して、嬉しい!!!


django開発フレームワークの大名はとっくに聞いていたので、機会を見つけて体験したいと思っていました.会社が使用するサーバシステムはwinows server 2003、webサーバはiis 6.0であるため、開発環境はdjango+iisにしか配備できない.そこで、googleを探して、見つけることができるチュートリアルは少なくて、その上多くは同じで、1つの配置を選ぶしかなくて、まだ実行できません.幾多の紆余曲折を経て,終始未遂であった.
今日は暇で、django+iisの実行環境を構成する衝動がありました.また試してみると、黄天は心を持たず、償うことができた.参考にしたチュートリアルを添付します.
 
Windowsプラットフォーム下のIISでDjangoアプリケーションを公開する
ターゲット
Djangoによって作成されたアプリケーションは、Windowsプラットフォーム上のIISサーバで公開されます.私たちが始める前に、Windows、IISをインストールし、正常に動作していることを確認してください.パブリッシュする必要があるDjangoアプリケーションも内蔵のテストサーバでデバッグに合格しました.
注意:IIS拡張はDjango>=0.92のAPIに基づいているため、このガイドはDjango<=0.91に対して無効です.
ステップ
  • PyISAPIeのインストール-IISにPythonをサポートさせる拡張
  • Djangoをインストールし、PyISAPIeを介してDjango
  • に接続する.
  • 構成Django
  • テスト
  • PyISAPIeのインストール-IISのISAPI拡張機能
    PyISAPIeはインストールパッケージとして公開されているわけではありませんが、インストールも複雑ではありません
    簡単に言えば、この拡張はIIS実行時にPython解釈器をメモリにロードし、ページ要求に応答するために使用され、CGI方式で各要求に対してPythonを繰り返し起動することを回避する.これは、一部のDjangoファイルがキャッシュされ、Pythonプロセスを再起動するまでコードを変更した後、すぐに有効にならないことを意味します.IIS 6では、アプリケーション・プールのサービスを右クリックして「リフレッシュ」を選択して変更を有効にする必要があります.以前のIISバージョンでは、IISサービス全体を再起動する必要があるかもしれません.
    では、http://pyisapie.sourceforge.net/にアクセスし、最新のPyISAPIeをダウンロードします.
    すべてのファイルをc:pyisapieに解凍し、Pythonをc:python 24にインストールし、パスが異なる場合は調整してください.
    readmeにはドキュメントの説明があり、手順は以下のように要約されています.
    インストールファイル
  • c:pyisapiePyISAPI e.dllをc:python 24
  • にコピー
  • ファイルの「プロパティ」->「セキュリティ設定」を編集し、「Network」、「Service」に参加し、「読み取り」権限を選択します.(IISがアクセスできるように)
  • c:pyisapiesourcePyISAPIePythonHttpフォルダ全体をc:python 24libsite-packagesにコピーします.注意:Httpフォルダの名前は大文字と小文字が敏感で、httpや他のバリエーションと間違えて保存しないでください.そうすると、正常に動作しません.

  • IISの設定
    仮想ディレクトリを作成する必要はありません.ルートディレクトリを直接使用できます./myfolderなどの仮想ディレクトリを使用する場合は、/myfolderで始まるページのみがPyISAPIeで処理されます.ルートディレクトリを使用すると、すべてのURLがPyISAPIeによって処理され、サイト上の他のコンテンツにアクセスできない可能性があります.*IIS管理コンソールを開き、新しい仮想ディレクトリを作成し、ウィザードのプロンプトでISAPI拡張を許可します.
    IIS 6
  • 仮想ディレクトリのプロパティを参照して「構成」をクリックし(このオプションがグレーの場合は「作成」をクリック)、新しいワイルドカード(下のリストボックス内)を追加してpyisapieにナビゲートします.dllファイル、「ファイルが存在するかどうかを確認」オプションをオフにします.
  • IISマネージャで、[ネットワークサービス拡張]領域を右クリック->新しいネットワークサービス拡張に追加します.
  • 勝手に名前を付けてpyisapie.dllを必要なファイルとして追加し、この拡張を許可する
  • を選択します.
    IIS 5
  • IIS 5.xはワイルドカードアプリケーションマッピングをサポートしていません.少なくとも構成インタフェースではサポートされていません.IIS 5において実施するステップは、
  • である.
  • 仮想ディレクトリを右クリックし、「プロパティ」
  • を選択します.
  • 「実行許可」が「スクリプトと実行可能プログラム」
  • に設定されていることを確認します.
  • [設定](Configuration)(スクリプトと実行可能プログラムの横)
  • をクリックします.
  • 「アプリケーションマッピング」タブをクリックし、「追加」
  • を選択
  • 「実行可能ファイル」をc:python 24PyISAPIeに設定.dll
  • 「拡張子」を「*」に設定、すべてのリクエストがPyISAPIeを通過する.dll処理
  • 許可された動作を限定する必要がありますが、内部テストの便利さのために、一時的に「すべての動作」
  • に設定します.
  • ファイルが存在するかどうかをチェックするオプション
  • をクリア
  • [OK]をクリックしてすべてのウィンドウ
  • を閉じます.
    設定したら、c:pyisapiesourcePyISAPIePythonexamplesの下のInfoをpy新しい仮想ディレクトリにコピーしてアクセスhttp://site/Info.pyテストします.
    DjangoをPyISAPIeに接続する
    PyISAPIeのexamplesdjangoディレクトリのreadmeに従います.txtでDjangoを設定します.簡単に言えば、2つのファイルを対応するフォルダにコピーします.それから少し修正してあなたのニーズを満たします.
  • Isapi.pyをc:python 24libsite-packagesHttpディレクトリに配置します.前の例に従って、このファイルを少し修正する必要があります:
  • 変更コード# , python DJANGO_SETTINGS_MODULE import sys sys.path.append(r'c:\test') # Indicate the settings module of your project os.environ["DJANGO_SETTINGS_MODULE"] = "proj.settings"
  • pyisapie.pyをc:python 24libsite-packagesDjango-xyz-123に配置します.eggdjangocorehandlersディレクトリ.PyISAPIe v1.0.3に小さなバグがあります.正常に使用するには、少し修正する必要があります.

  • 変更コードclass PyISAPIeRequest(http.HttpRequest): def __init__(This): # This.method = Env.REQUEST_METHOD #
  • IIS+Python+PyISAPIeは現在、複数のDjangoサイトをサポートしていないようです.

  • Django設定の変更
    上記の手順を完了したら、仮想ディレクトリ/myfolderをc:testに移動し、Hello Worldページを作成してテストできます.
  • c:testprojディレクトリにhelloworldを作成します.pyファイル
  • 内容は以下の通りfrom django.http import HttpResponse def index(request): return HttpResponse("Hello world!")
  • c:testprojディレクトリのurlsを変更します.py

  • 内容は以下の通りfrom django.conf.urls.defaults import * urlpatterns = patterns('', # Example: # (r'^newtest/', include('proj.apps.foo.urls.foo')), (r'^.*$', 'proj.helloworld.index'), # Uncomment this for admin: # (r'^admin/', include('django.contrib.admin.urls')), ) 準備が整い次第、すぐに訪問できます.http://site/myfolder効果を見てみましょう.Djangoサービスを手動で起動する必要はありません.
    よくある質問
  • IIS 5では、コードを変更するたびに、コンソールの下でコマンド「iisreset」でIISを再起動して有効にする必要があります.「IIS管理コンソール」の下でサイトを直接再起動するのは効果的ではなく、IISサービス全体を再起動する必要があります.
  • は、スタイルシートなどの静的コンテンツを提供するために、ルートディレクトリの下に「media」仮想ディレクトリを作成することが望ましい.

  • 原文の参考
  • DjangoOnWindowsWithIISAndSQLServer