首頁 > 軟體

windows系統IIS部署Django專案的實踐

2022-03-10 13:01:09

採用IIS伺服器部署相比django提供的開發者伺服器具有更好的並行存取能力,效能更加穩定。

一、Python WSGI部署原理

        python web專案的部署的基本原理,是基於一種WSGI的框架協定。

        WSGI協定主要包括Web伺服器和應用伺服器兩部分。

        (1)Web伺服器:即HTTP伺服器,按照HTTP接受使用者HTTP請求並提供並行存取,呼叫Web應用處理業務邏輯。

        (2)Python Web應用:應用程式接受由伺服器轉發的request,處理對應的請求,並將處理結果返回伺服器。

本文章採用IIS+Django的方式構建和部署Web專案。

二、準備部署環境

        (1)cmd終端輸入:

pip freeze>requirements.txt //蒐集python依賴包及對應版本號,生成txt檔案

        (2)在需要部署專案的伺服器上安裝依賴包(pip)

pip install -r requirements.txt //檔案requirements.txt為上一步cmd命令中生成

        這是我自己的python依賴包:(依自己需求安裝依賴包)

三、安裝和設定IIS

        開啟windows的“控制面板”→“程式和功能”→“開啟或關閉Windows功能”,找到Internet Information Services(Internet 資訊服務),按照下圖進行勾選。

 四、開放埠

        我將自己web應用存取埠設定為了8001埠,設定步驟如下。 

        (1)開啟windows的“控制面板”→“系統和安全”→“Windows Defender防火牆”,單機進入防火牆設定介面。然後介面左側進入高階設定。

         (2)進入高階安全Windows Defender防火牆設定介面,選中左側“入站規則”欄目,在選中右側操作欄的“新建規則”選項。彈出的嚮導中選擇“埠(o)”。

          (3)點選下一步,輸入自己要設的埠號(我設定的8001),然後一直點下一步,命名規則,完成。就可以在入站規則看到這個規則。

        (4)在瀏覽器地址輸入localhost存取IIS測試,如果出現以下頁面,表示安裝成功

 五、本地部署

        (先放資料夾,需要注意的有,在專案根目錄和static資料夾中各有一個web.config檔案。)

        第四部分正文開始:

        (1)安裝python依賴包wfastcgi,並啟動(需管理員許可權)

pip install wfastcgi 
//啟動wfastcgi,,   停止命令為:wfastcgi-disable 
wfastcgi-enable  

 輸出:“python路徑” 和 “wfastcgi直譯器核心指令碼路徑”,用"|"隔開

已經在設定提交路徑“MACHINE/WEBROOT/APPHOST”向“MACHINE/WEBROOT/APPHOST”的“system.webServer/fastCgi”節應用了設定更改
"d:python395python.exe|d:python395libsite-packageswfastcgi.py" can now be used as a FastCGI script processor

        (2)設定web.config檔案

        為了能夠讓IIS伺服器準確的執行專案,需要設定和設定一些引數,包括專案路徑、組態檔路徑、解析器等。在django專案檔案中建立web.config檔案(和manage.py在同一資料夾)。

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <handlers>
            <add name="Python FastCGI" 
                 path="*" 
                 verb="*" 
                 modules="FastCgiModule" 
                 scriptProcessor="d:python395python.exe|d:python395libsite-packageswfastcgi.py" 
                 resourceType="Unspecified" 
                 requireAccess="Script"/>
        </handlers>
    </system.webServer>
    <appSettings>
        <add key="WSGI_HANDLER" value="django.core.wsgi.get_wsgi_application()" />
        <add key="PYTHONPATH" value="C:UsersyangzDesktopZC_System-V20.6_11-09ZC_System-V20.6" />
        <add key="DJANGO_SETTINGS_MODULE" value="ZC_System.settings" />
    </appSettings>
</configuration>

                有三個引數需要注意:

                1、scriptProcessor中冒號部分為前面對應的Python和wfastcgi直譯器核心指令碼路徑。

                2、<add key="PYTHONPATH" value="C:UsersyangzDesktopZC_System-V20.6_11-09ZC_System-V20.6" />,  (這裡跟manage.py同一目錄)

                3、<add key="DJANGO_SETTINGS_MODULE" value="ZC_System.settings" />,這個.settings檔案一開始我設定的時候也沒有,可以自己設定。沒有該檔案的同學可以參考下面連結自行設定。

設定"DJANGO_SETTINGS_MODULE"

       (3)靜態檔案檔案遷移

        1、進入到static資料夾中建立第二個個web.config檔案。該檔案用於將專案所有的靜態資原始檔css,js,img等全部匯入到根目錄下的static資料夾。方便伺服器查詢靜態檔案

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <!-- this configuration overrides the FastCGI handler to let IIS serve the static files -->
        <handlers>
          	<remove name="Python FastCGI"/>
        </handlers>
    </system.webServer>
</configuration>

         2、開啟專案組態檔setting.py

        將語句“STATICFILES_DIRS = [os.path.join(BASE_DIR, 'static')]”替換為 “STATIC_BOOT = os.path.join(BASE_DIR, 'static')”。

//原語句註釋掉
# STATICFILES_DIRS = [os.path.join(BASE_DIR, 'static')]  
//現語句
STATIC_BOOT = os.path.join(BASE_DIR, 'static')        

        cmd終端進入django專案根目錄:執行命令

python manage.py collectstatic

        (4)IIS建立網站

        “控制面板”→“系統和安全”→“管理工具”→“Internet Information Services (IIS)管理器”,開啟後左側上方選中網站欄目,右鍵選擇新增網站進入設定。

         此時設定完成:存取http://127.0.0.1:8001即可進入web應用。

 六、問題

        (1)[Errno 13] Permission denied: 'C:\Users\yangz\Desktop\ZC_System-V20.6_11-09\ZC_System-V20.6\templates\ShouYe\Login.html'

 解決方法:找到django專案資料夾,右鍵屬性,選擇安全,編輯使用者和組,新增使用者“Everyone”並選擇完全控制。選擇應用。

         (2)如果在根目錄中沒有****.settings問件,會彈出缺少MODULE,

設定***.settings檔案

到此這篇關於windows系統IIS部署Django專案的實踐的文章就介紹到這了,更多相關IIS部署Django專案內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com