Django Windows+IIS+wfastcgi 環境下部署


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

環境准備

1.Python及其虛擬環境

Django依賴於Python解釋器環境。安裝步驟略。可參考https://www.cnblogs.com/wcwnina/p/9069783.html(根據實際情況,也可以不裝虛擬環境)。

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

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

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

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

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

DEBUG = False  # 關閉調試

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

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

pip install -r requirements.txt    # 注意是requirements.txt的完整路徑或相對路徑

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

如果使用的是Mysql數據庫,請自行安裝Mysql和導入數據,這里就不說明。

4.安裝wfastcgi應用服務器

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

啟動wfastcgi:

wfastcgi-enable          // 停止服務:wfastcgi-disable

如上圖,啟動成功之后,它會把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出現如下錯誤

解析1)檢查.Net Framework是否正確安裝,如圖。

 

解析2)出現這樣的情況是因為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

收集完成之后,刷新頁面,顯示正常。

 

 至此,轉載請注明出處。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM