Django Windows+IIS+wfastcgi 環境下部署

教程基於 Windows 10專業版+Python3.6+IIS+wfastcgi 之上部署Django2.2的,一樣適用於Windows server2012服務器和Windows7及以上的Windows操做系統。html

環境準備

1.Python及其虛擬環境

Django依賴於Python解釋器環境。安裝步驟略。可參考http://www.javashuo.com/article/p-zwmiwrmu-bh.html(根據實際狀況,也能夠不裝虛擬環境)。python

2.安裝IIS服務器(含CGI)

打開【控制面板】->【程序和功能】,點開左側的【啓用或關閉Windows功能】,啓用IIS,必定要包含CGI。web

在瀏覽器地址輸入localhost訪問IIS測試,若是出現如下頁面,表示安裝成功。sql

3.拷貝項目文件、安裝依賴庫

首先,部署生產環境要關閉調試模式,修改settings文件:數據庫

DEBUG = False  # 關閉調試

ALLOWED_HOSTS = ['127.0.0.1']  # 指定能訪問網站的主機IP

建議在服務器中新建文件夾,將上傳的項目文件和虛擬環境放在同一文件夾裏。進入虛擬環境,批量安裝全部依賴庫:django

pip install -r requirements.txt

留意:執行以上命令的前提是,用命令"pip freeze > requirements.txt"把項目環境的依賴庫信息導出到requirements.txt文件裏。瀏覽器

若是使用的是Mysql數據庫,請自行安裝Mysql和導入數據,這裏就不說明。安全

4.安裝wfastcgi應用服務器

進入虛擬環境,pip安裝之,如圖。服務器

啓動wfastcgi:app

wfastcgi-enable

如上圖,啓動成功以後,它會把Python路徑和wfastcgi的路徑顯示出來,咱們須要把這個路徑複製出來,保存好,後邊用得着!

e:\djblog\vpy_myblog\scripts\python.exe|e:\djblog\vpy_myblog\lib\site-packages\wfastcgi.py

注意:上面的路徑,是由Python解釋器的路徑和「|」以及「wfastcgi.py」文件路徑組成。

配置IIS服務器

經過【控制面板】->【管理工具】打開IIS管理器。

1.添加網站

2.web配置文件

在項目根目錄下新建"web.config"配置文件,複製粘貼如下內容。

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <handlers>
            <add name="Python FastCGI" 
                 path="*" 
                 verb="*" 
                 modules="FastCgiModule" 
                 scriptProcessor="<Path to Python>\python.exe|<Path to Python>\lib\site-packages\wfastcgi.py" 
                 resourceType="Unspecified" 
                 requireAccess="Script"/>
        </handlers>
    </system.webServer>
    <appSettings>
        <add key="WSGI_HANDLER" value="django.core.wsgi.get_wsgi_application()" />
        <add key="PYTHONPATH" value="<Path to Django App>" />
        <add key="DJANGO_SETTINGS_MODULE" value="<Django App>.settings" />
    </appSettings>
</configuration>

修改配置文件:

3.添加靜態文件虛擬目錄

右鍵添加虛擬目錄,如圖。

添加虛擬目錄時,別名與你的settings裏設置的一致,好比"static",物理路徑就是靜態資源的實際目錄。

在static目錄下新建一個"web.config"文件,而後寫入下面的內容,保存便可無須修改。

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <!-- this configuration overrides the FastCGI handler to let IIS serve the static files -->
        <handlers>
            <clear/>
            <add name="StaticFile" path="*" verb="*" modules="StaticFileModule" resourceType="File" requireAccess="Read" />
        </handlers>
    </system.webServer>
</configuration>

至此部署基本完成。重啓IIS,在瀏覽器裏輸入http://127.0.0.1,就能訪問網站。

常見問題

1.若是訪問IIS出現以下錯誤

出現這樣的狀況是由於IIS7以後的版本都採用了更安全的 web.config 管理機制,默認狀況下會鎖住配置項不容許更改。咱們把它解鎖了就OK。

打開CMD,在裏面依次輸入下面兩個命令:

%windir%\system32\inetsrv\appcmd unlock config -section:system.webServer/handlers 

%windir%\system32\inetsrv\appcmd unlock config -section:system.webServer/modules

2.有時候訪問頁面,或者單獨訪問網站後臺出現400錯誤

這個時候多是由於沒有給網站權限的緣由。咱們打開IIS,找到網站,右鍵,編輯權限,給IIS用戶添加修改和寫入權限。就能正常訪問。

3.靜態文件顯示異常

在settings.py裏添加STATIC_ROOT配置,指定收集靜態文件路徑,如:

STATIC_ROOT = os.path.join(BASE_DIR, 'static')

進入虛擬環境,輸入如下命令進行收集靜態文件:

python manage.py collectstatic

收集完成以後,刷新頁面,顯示正常。

 

 至此,轉載請註明出處。

相關文章
相關標籤/搜索