15. IIS部署
前面的章節我們完成了基本的業務功能的開發,本章節我們來說說python django項目如何部署到實際的運行環境,完成開發系統的發布工作。
Python Django 項目部署發布到windows iis環境,運行環境如下:
操作系統:windows 8.1
IIS版本:8.5
Python版本:2.7
Django版本:1.4
15.1. IIS服務添加CGI組件
在操作系統的啟用或關閉windows功能里添加IIS CGI組件,如已添加忽略。
15.2. IIS服務添加FAST CGI組件
打開IIS管理器時,系統會提示如下圖,選擇是:
或者訪問網址:http://www.microsoft.com/web/downloads/platform.aspx,進入web安裝平台程序,搜索FastCGI關鍵字。
安裝WFastCGI2.1Gateway for IIS and Python 2.7.9組件,安裝完成后在C:\Python27\Scripts\目錄下會增加wfastcgi.py文件。
15.3. 拷貝wfastcgi.py文件到項目manage.py相同目錄下
把項目文件拷貝到C:\inetpub\wwwroot\mysite目錄下,同時,復制wfastcgi.py到本目錄下。
15.4. IIS創建站點
我們把項目文件拷貝到IIS 的wwwroot目錄下,創建IIS站點,如下圖:
筆者注:IIS的項目發布目錄最好在wwwroot下,可以避免很多windows權限問題。
另外拷貝文件后,注意修改setting.py里的數據庫目錄。
DATABASES = { 'default': { # Add 'postgresql_psycopg2', 'mysql', 'sqlite3' or 'oracle'. 'ENGINE': 'django.db.backends.sqlite3', # Or path to database file if using sqlite3. 'NAME': 'C:\\inetpub\\wwwroot\\mysite\\MyDB.db', # Not used with sqlite3. 'USER': '', # Not used with sqlite3. 'PASSWORD': '', # Set to empty string for localhost. Not used with sqlite3. 'HOST': '', # Set to empty string for default. Not used with sqlite3. 'PORT': '', } }
15.5. 添加處理程序映射
IIS 管理器中選擇站點mysite,選中該站點的“處理程序映射”設置。
在“處理程序映射”設置中,右鍵選擇“添加模塊映射”菜單。
輸入完配置信息,點擊“請求限制(R)…”,確保映射tab頁CheckBox不被選中。
然后,點擊兩次“確定”按鈕,系統會彈出如下提示框:
“要為此可執行文件創建 FastCGI 應用程序嗎? 單擊“是”將此項添加到 FastCGI 集合中,以及允許此可執行文件作為 FastCGI 應用程序運行。”
點擊[是]
15.6. 修改我們的web.config文件只保留如下代碼
<?xml version="1.0" encoding="UTF-8"?> <!-- Generated web.config for Microsoft Azure. Remove this comment to prevent modifications being overwritten when publishing the project. --> <configuration> <appSettings> <add key="WSGI_HANDLER" value="django.core.wsgi.get_wsgi_application()" /> <add key="PYTHONPATH" value="%ROOTDIR%" /> <add key="DJANGO_SETTINGS_MODULE" value="mysite.settings" /> </appSettings> </configuration>
完成部署,在IIS管理器中重新啟動mysite站點。
15.7. 訪問發布的網站
我們訪問基於模板的頁面,頁面是能正常訪問的,但是訪問基於Extjs的inventoryQueryExtjs頁面,頁面不能正常顯示。這是Extjs相關的靜態文件目錄沒有正常部署的緣故。
15.8. 靜態文件部署
根據setting.py靜態文件目錄的配置,我們項目目錄下創建一個static的文件目錄
在cmd命令窗口進入到項目目錄下,執行命令:
python manage.py collectstatic
然后,在iis管理器mysite站點下添加static虛擬目錄:
注:最后刪除虛擬目錄處理程序映射中的Django handler處理器。
我們再訪問網站的inventoryQueryExtjs頁面,頁面正常顯示,現在完成了示例網站的IIS發布工作。
15.9. 小結
本章節我們完成了在IIS平台部署我們的django項目,采用的是“處理程序映射”的Fast CGI來實現django項目的解析處理。下一章節我們將描述如何部署django 的windows apache平台。