django+iis終於配置成功,高興!!!

django+iis終於配置成功,高興!!!

    博客分類:
  •  

  • otherhtml

IISDjango配置管理Python應用服務器 python

     早就據說過django開發框架的大名,一直想找個機會體驗一下。因爲公司使用的服務器系統是winows server 2003,web服務器是iis 6.0,所以,開發環境只能部署爲django+iis。因而,上google狂找,所能找到的教程不多,並且不少雷同無異,只能擇一照着配置,仍未能運行。幾經周折,始終未遂。web

     今天閒來無事,又有了配置django+iis運行環境的衝動。又嘗試之,好在黃天不負有心人,得以所償。附上所參考的教程。django

 

在Windows平臺下的IIS中發佈Django應用

目標

在Windows平臺上的IIS服務器中發佈由Django建立的應用。在咱們開始以前請確保你已經安裝完畢Windows,IIS,並能正常運行,須要發佈的Django應用也已在內置的測試服務器上調試經過。api

注意:本指南對Django <=0.91無效,由於IIS擴展基於Django >=0.92的API緩存

步驟

  • 安裝PyISAPIe - 一個讓IIS支持Python的擴展安全

  • 安裝Django並經過PyISAPIe鏈接Django服務器

  • 配置Django網絡

  • 測試app

安裝PyISAPIe - 一個IIS的ISAPI擴展

PyISAPIe不是以安裝包的形式發佈的,不過安裝起來也並不複雜

簡單地說,這個擴展在IIS運行時將Python解釋器加載到內存中並用它來響應頁面請求,它避免了CGI方式下爲每個請求反覆啓動 Python。這意味着某些Django文件會被緩存,在你修改代碼後不能立刻起效,直到你重啓Python進程。對於IIS 6你必須右鍵點擊應用程序池中的服務而後選擇」刷新」來讓更改有效,對於更早的IIS版本你也許須要從新啓動整個IIS服務。

好,那咱們先訪問http://pyisapie.sourceforge.net/ 並下載最新的PyISAPIe。

假設你將全部的文件解壓到c:\pyisapie,而且將Python安裝在c:\python24,若是路徑不一樣,請做相應的調整。

在readme中有文檔說明,步驟歸納以下:

安裝文件

  • 將 c:\pyisapie\PyISAPIe.dll 複製到 c:\python24\

  • 編輯該文件的「屬性」->「安全設置」,加入「Network」,「 Service」,並選中「讀取」權限。(爲了讓IIS能夠訪問)

  • 轉到 c:\pyisapie\source\PyISAPIe\Python\ 將整個Http文件夾複製到 c:\python24\lib\site-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下,實施步驟以下:

  • 右鍵點擊虛擬目錄並選擇「屬性」

  • 確保「執行許可」設置爲「腳本和可執行程序」

  • 點擊「配置」(在「腳本和可執性程序」旁)

  • 點擊「應用程序映射」標籤,選擇「添加」

  • 設置「可執行文件」爲 c:\python24\PyISAPIe.dll

  • 設置「擴展名」爲「*」,這樣全部的請求都經過PyISAPIe.dll處理

  • 你應該限定所容許的動做,可是爲了內部測試方便,咱們暫時設置爲「所有動做」

  • 清除「檢查文件是否存在」的選項

  • 點擊「肯定」關掉全部窗口

設置好以後,你能夠將 c:\pyisapie\source\PyISAPIe\Python\examples 下的Info.py複製到你新建的虛擬目錄中,而後訪問http://site/Info.py來測試。

將Django鏈接到PyISAPIe

按照PyISAPIe的examples\django目錄下的readme.txt來設置Django。簡要的說就是將兩個文件複製到相應的文件夾中。而後稍加修改以知足你的須要。

  • 將 Isapi.py 放到 c:\python24\lib\site-packages\Http 目錄。按照前面給的例子,你須要對此文件稍加修改:

改動的代碼

# 加入下列兩行,這樣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:\python24\lib\site-packages\Django-xyz-123.egg\django\core\handlers 目錄。PyISAPIe v1.0.3中有個小bug。 你須要對它稍加修改才能正常使用。

改動的代碼

class PyISAPIeRequest(http.HttpRequest):
def __init__(This):
# 加入下一行
This.method = Env.REQUEST_METHOD
# 其餘的沒必要修改
  • IIS+Python+PyISAPIe目前好像並不支持多個Django站點。

修改Django設置

作完上述幾步以後,咱們能夠將虛擬目錄 /myfolder 指向 c:\test,而後建立一個Hello World 頁面來進行測試。

  • 在 c:\test\proj 目錄中建立一個 helloworld.py 文件

內容以下

from django.http import HttpResponse
def index(request):
return HttpResponse("Hello world!")
  • 修改 c:\test\proj 目錄下的 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」 虛擬目錄來提供樣式表等靜態內容。

原文參考

相關文章
相關標籤/搜索