windows系統(tǒng)IIS部署Django項目的實踐
采用IIS服務器部署相比django提供的開發(fā)者服務器具有更好的并發(fā)訪問能力,性能更加穩(wěn)定。
一、Python WSGI部署原理
python web項目的部署的基本原理,是基于一種WSGI的框架協(xié)議。
WSGI協(xié)議主要包括Web服務器和應用服務器兩部分。
(1)Web服務器:即HTTP服務器,按照HTTP接受用戶HTTP請求并提供并發(fā)訪問,調(diào)用Web應用處理業(yè)務邏輯。
(2)Python Web應用:應用程序接受由服務器轉(zhuǎn)發(fā)的request,處理對應的請求,并將處理結(jié)果返回服務器。
本文章采用IIS+Django的方式構(gòu)建和部署Web項目。
二、準備部署環(huán)境
(1)cmd終端輸入:
pip freeze>requirements.txt //搜集python依賴包及對應版本號,生成txt文件
(2)在需要部署項目的服務器上安裝依賴包(pip)
pip install -r requirements.txt //文件requirements.txt為上一步cmd命令中生成
這是我自己的python依賴包:(依自己需求安裝依賴包)
三、安裝和配置IIS
打開windows的“控制面板”→“程序和功能”→“打開或關(guān)閉Windows功能”,找到Internet Information Services(Internet 信息服務),按照下圖進行勾選。
四、開放端口
我將自己web應用訪問端口設(shè)置為了8001端口,設(shè)置步驟如下。
(1)打開windows的“控制面板”→“系統(tǒng)和安全”→“Windows Defender防火墻”,單機進入防火墻配置界面。然后界面左側(cè)進入高級設(shè)置。
(2)進入高級安全Windows Defender防火墻配置界面,選中左側(cè)“入站規(guī)則”欄目,在選中右側(cè)操作欄的“新建規(guī)則”選項。彈出的向?qū)е羞x擇“端口(o)”。
(3)點擊下一步,輸入自己要設(shè)的端口號(我設(shè)置的8001),然后一直點下一步,命名規(guī)則,完成。就可以在入站規(guī)則看到這個規(guī)則。
(4)在瀏覽器地址輸入localhost訪問IIS測試,如果出現(xiàn)以下頁面,表示安裝成功
五、本地部署
(先放文件夾,需要注意的有,在項目根目錄和static文件夾中各有一個web.config文件。)
第四部分正文開始:
(1)安裝python依賴包wfastcgi,并啟動(需管理員權(quán)限)
pip install wfastcgi
//啟動wfastcgi,, 停止命令為:wfastcgi-disable wfastcgi-enable
輸出:“python路徑” 和 “wfastcgi解釋器核心腳本路徑”,用"|"隔開
已經(jīng)在配置提交路徑“MACHINE/WEBROOT/APPHOST”向“MACHINE/WEBROOT/APPHOST”的“system.webServer/fastCgi”節(jié)應用了配置更改
"d:\python395\python.exe|d:\python395\lib\site-packages\wfastcgi.py" can now be used as a FastCGI script processor
(2)配置web.config文件
為了能夠讓IIS服務器準確的運行項目,需要配置和設(shè)定一些參數(shù),包括項目路徑、配置文件路徑、解析器等。在django項目文件中創(chuàng)建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:\python395\python.exe|d:\python395\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="C:\Users\yangz\Desktop\ZC_System-V20.6_11-09\ZC_System-V20.6" /> <add key="DJANGO_SETTINGS_MODULE" value="ZC_System.settings" /> </appSettings> </configuration>
有三個參數(shù)需要注意:
1、scriptProcessor中冒號部分為前面對應的Python和wfastcgi解釋器核心腳本路徑。
2、<add key="PYTHONPATH" value="C:\Users\yangz\Desktop\ZC_System-V20.6_11-09\ZC_System-V20.6" />, (這里跟manage.py同一目錄)
3、<add key="DJANGO_SETTINGS_MODULE" value="ZC_System.settings" />,這個.settings文件一開始我配置的時候也沒有,可以自己配置。沒有該文件的同學可以參考下面鏈接自行配置。
(3)靜態(tài)文件文件遷移
1、進入到static文件夾中創(chuàng)建第二個個web.config文件。該文件用于將項目所有的靜態(tài)資源文件css,js,img等全部導入到根目錄下的static文件夾。方便服務器查找靜態(tài)文件
<?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')] //現(xiàn)語句 STATIC_BOOT = os.path.join(BASE_DIR, 'static')
cmd終端進入django項目根目錄:執(zhí)行命令
python manage.py collectstatic
(4)IIS創(chuàng)建網(wǎng)站
“控制面板”→“系統(tǒng)和安全”→“管理工具”→“Internet Information Services (IIS)管理器”,打開后左側(cè)上方選中網(wǎng)站欄目,右鍵選擇添加網(wǎng)站進入配置。
此時配置完成:訪問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,
到此這篇關(guān)于windows系統(tǒng)IIS部署Django項目的實踐的文章就介紹到這了,更多相關(guān)IIS部署Django項目內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python用TensorFlow做圖像識別的實現(xiàn)
這篇文章主要介紹了python用TensorFlow做圖像識別的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-04-04Python Flask請求擴展與中間件相關(guān)知識總結(jié)
今天帶大家學習的是關(guān)于Python Flask的相關(guān)知識,文章圍繞著Flask請求擴展與中間件的知識展開,文中有非常詳細的介紹,需要的朋友可以參考下2021-06-06基于Python實現(xiàn)一個簡單的銀行轉(zhuǎn)賬操作
這篇文章主要介紹了基于Python實現(xiàn)一個簡單的銀行轉(zhuǎn)賬操作的相關(guān)資料,需要的朋友可以參考下2016-03-03python內(nèi)置函數(shù)globals()的實現(xiàn)代碼
本文主要介紹了python內(nèi)置函數(shù)globals()的實現(xiàn)代碼,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-09-09Python PyQt5模塊實現(xiàn)窗口GUI界面代碼實例
這篇文章主要介紹了Python PyQt5模塊實現(xiàn)窗口GUI界面代碼實例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2020-05-05