django程序在windows服務器上發布
參考文獻:https://www.cnblogs.com/djangocn/p/10227006.html
1.安裝 IIS 和 GCI
打開服務器管理器,選擇添加角色和功能,選擇要添加的服務器角色(WEB服務器IIS),然后安裝
IIS安裝成功之后,然后安裝CGI,再次選擇添加角色和功能,找到之前安裝的WEB服務器IIS,點擊它
此時已經能夠成功的訪問的到對應的服務器首頁;
2.安裝wfastcgi
在 Windows 下,我們沒法使用uwsgi,但我們可以使用wfastcgi替代它,打開CMD窗口,進入虛擬環境,輸入命令安裝wfastcgi:
pip install wfastcgi
安裝之后,通過命令啟動它;
如上圖,啟動成功之后,它會把Python路徑和wfastcgi的路徑顯示出來,我們需要把這個路徑復制出來,保存好,后邊用得着。
C:\envs\test\Scripts\python.exe| \lib\site-packages\wfastcgi.py
注意:上面的路徑,是由 Python 解釋器的路徑和|
以及wfastcgi.py
文件路徑組成。
3.在IIS里添加項目網站
-
打開管理工具界面
- 補充:此時應該將django的環境,和數據庫進行遷移,
pip install -r requirement.txt
4.創建配置文件
- 在項目根目錄里新建一個
web.config
配置文件
放入以下內容
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<handlers>
<add name="Python FastCGI"
path="*"
verb="*"
modules="FastCgiModule"
scriptProcessor="C:\envs\test\Scripts\python.exe|C:\envs\test\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:\datacode\prote" />
<add key="DJANGO_SETTINGS_MODULE" value="prote.settings" />
</appSettings>
</configuration>
5. 修改報錯
HTTP 錯誤 500.19 Internal Server Error
出現這樣的情況是因為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
還有種情況:有時候訪問頁面,或者單獨訪問網站后台出現400錯誤,這個時候可能是因為沒有給網站權限的原因。我們打開IIS,找到網站,右鍵,編輯權限,給IIS用戶添加修改和寫入權限。就能正常訪問。
- 發生另一個錯誤
修改,配置文件中的參數應該是配置文所在的目錄的目錄名,不是路徑。
修改后的配置文件已經修改至上面的格式。
訪問成功。
6.給靜態資源添加虛擬目錄
網站能訪問了,但我們的前端樣式顯示有問題。那是因為我們沒有在IIS里指定我們的靜態資源目錄,我們給它添加上虛擬目錄就能解決。
步驟:
1、添加虛擬目錄,在IIS找選中網站項目名,右鍵--添加虛擬路徑
添加虛擬目錄時,別名放與你settings里設置的一致,比如'static',物理路徑就是靜態資源的實際目錄。
2、在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,訪問網站,前端就能正常顯示。
7.管理后台樣式丟失解決
正常情況下,部署的時候管理后台樣式是不能正常顯示的,我們需要收集這些樣式到項目里去,才能正常顯示。
步驟:
1、在settings.py里添加STATIC_ROOT配置指定收集路徑如:
#指定樣式收集目錄,路徑一般為項目里的static文件夾
STATIC_ROOT = os.path.join(BASE_DIR, 'static')
#或
STATIC_ROOT = 'C:\python\mysite\static'
2.然后CMD下運行如下面命令,進行樣式采集:
python manage.py collectstatic
采集完成之后,刷新頁面。后台樣式成功顯示。至此,部署結束。
強力推薦參考文獻,很清晰!