1. 程式人生 > >django在windows下的部署(Apache+mod_wsgi)

django在windows下的部署(Apache+mod_wsgi)

 

原文文章:https://blog.csdn.net/weixin_40754816/article/details/80955817

之前一直在本地跑django專案,最近嘗試在伺服器上部署專案,目前已經成功部署,也花了好多時間,這裡跟大家交流一下,希望對像我一樣的新手有幫助。

一、配置環境:

1.Python版本3.6

2.伺服器平臺:windows server 2016

3.django版本2.0.7

二.Apache下載與配置

1.進入Apache官網,http://httpd.apache.org/下載對應版本,依次按照下面圖片找到版本下載列表:

 

到這裡就可以下載相應的版本了,我選擇的是Apache2.4 VC14 64為版本(根據需求選擇)

2.下載後是一個壓縮檔案,直接解壓縮,獲取資料夾裡的Apache24資料夾,這個資料夾就是apache伺服器檔案了,不需要安裝,直接將Apache24資料夾移動到你想放的位置。

我這裡直接將apache24移動到C盤根目錄:

3.配置apache伺服器檔案:

進入C:\Apache24\conf目錄,找到httpd.conf檔案,這個就是apache伺服器的配置檔案。

我用notepad開啟(也可以用其它程式設計工具),會看到很多程式碼,不用管,也不要刪除任何程式碼,直接找到如下程式碼行進行修改

 
 
  1. ...

  2. Define SRVROOT "C:\Apache24" #Apache24檔案的路徑,其餘不用改。

  3. ...

  4. Listen 192.168.31.227:8000 #此處為你要釋出的網站ip地址,此處我用我電腦的ip和埠,你也可以用127.0.0.1:8000用於本地測試;80埠自己設定

  5. ...

  6. ServerName 192.168.31.227:8000

  7. ...

此處可用crl+f查詢。

4.建立apache服務

開啟命令列(管理員),cd進入C:\Apache24\bin資料夾(此處根據自己實際apache24資料夾所在位置為準),輸入如下程式碼建立服務:

httpd.exe -k install -n "apache2.4"  #apache2.4是所建立伺服器名稱,可更改。

出現successfully installed說明服務建立成功;同時後面可能會跟一些其他資訊,說明你的配置是否正確,有錯的話再檢查步驟3,看路徑,ip是否正確。我本人遇到的問題是c++外掛報錯,下載安裝即可。

建立成功後,進入伺服器管理器,可看到如下

右鍵可對服務進行啟動,停止,重啟操作,此處我們把伺服器啟動,狀態變為正在執行則成功(補充一下,服務操作命令列為sc delete “Apache2.4”)

5.在瀏覽器輸入在配置檔案中配置的地址192.168.31.227:8000,顯示如下頁面成功:

三.配置Django

1.安裝mod_wsgi,進入http://www.lfd.uci.edu/~gohlke/pythonlibs/#mod_wsgi,下載相應版本mod_wsgi Python的外掛,這個外掛我理解的作用是一個python與apache的介面的作用,因為django專案本身使用python寫的。言歸正傳,進入網址後,下載對應版本,ap24cv24指apache版本,比如我的是apache24, cp36指python3.6,win_adm64指作業系統為64位,這裡一定要下載正確版本,不然後面無法正確部署。

 

這裡還有種情況,是下載之後找到mod_wsgi-4.5.24+ap24vc14-cp36-cp36m-win_amd64.whl,字尾名改為.zip進行解壓,但是解壓後找不到mod_wsgi.so檔案(倘若你的版本有os檔案,進入這個教程,http://www.cnblogs.com/fnng/p/4119712.html,找到安裝mod_wsgi步驟那裡)。此處我們直接將該whl檔案複製到python路徑下的script資料夾下,我的是C:\Users\PengGangzhu\AppData\Local\Programs\Python\Python36\Scripts。cd進入該路徑,命令列輸入

pip3 install "mod_wsgi-4.5.24+ap24vc14-cp36-cp36m-win_amd64.whl"

引號中的檔名根據實際更改,安裝成功後再輸入

mod_wsgi-express module-config

出現以下三行提示,這三行一定要記下來,後面配置最重要的就是它了:

 
  1. LoadFile "c:/users/penggangzhu/appdata/local/programs/python/python36/python36.dll"

  2. LoadModule wsgi_module "c:/users/penggangzhu/appdata/local/programs/python/python36/lib/site-packages/mod_wsgi/server/mod_wsgi.cp36-win_amd64.pyd"

  3. WSGIPythonHome "c:/users/penggangzhu/appdata/local/programs/python/python36"

至此,mod_wsgi安裝成功。

2.配置django專案

再次開啟httpd.conf檔案,再最末尾新增如下程式碼,具體解釋看註釋,實際情況根據自己的專案位置更改。此處face_log2為我的工程資料夾。

 
  1. #安裝wsgi模組後,出來的三行字元,直接複製過來

  2. LoadFile "c:/users/penggangzhu/appdata/local/programs/python/python36/python36.dll"

  3. LoadModule wsgi_module "c:/users/penggangzhu/appdata/local/programs/python/python36/lib/site-packages/mod_wsgi/server/mod_wsgi.cp36-win_amd64.pyd"

  4. WSGIPythonHome "c:/users/penggangzhu/appdata/local/programs/python/python36"

  5. #設定工程中的wsgi路徑

  6. WSGIScriptAlias / C:\Users\PengGangzhu\Desktop\face_log2\face_log2\wsgi.py

  7. #設定工程路徑

  8. WSGIPythonPath C:\Users\PengGangzhu\Desktop\face_log2

  9. #設定wsgi路徑

  10. <Directory C:\Users\PengGangzhu\Desktop\face_log2\face_log2>

  11. <Files wsgi.py>

  12. Require all granted

  13. </Files>

  14. </Directory>

  15. #設定靜態檔案路徑

  16. Alias /static C:\Users\PengGangzhu\Desktop\face_log2\static

  17. <Directory C:\Users\PengGangzhu\Desktop\face_log2\static>

  18. AllowOverride None

  19. Options None

  20. Require all granted

  21. </Directory>

寫好後儲存檔案,回到伺服器管理器,找到apache2.4重啟服務(記住要重啟服務)。如果之前配置都沒問題,瀏覽器輸入http://192.168.31.227:8000,你就會見到眼熟的django頁面了。

輸入url,http://192.168.31.227:8000/index1

大功告成!

額外補充一下,倘若想在區域網下訪問該站點,可按照如下連結操作,親測可行。https://jingyan.baidu.com/article/b87fe19e639a8052183568be.html直接從第五步看,建議別關閉防火牆。

總結:總結下來,看似簡單的問題,其實我還是折騰了好多天,而且感覺也不完善,總之還是多動手,多操作多時間,實際部署時候可能會遇到不同於我的問題,彆著急,一步一步解決,網上資源挺多的。第一次寫,主要也是本著一個開源的思想,大家相互分享,能夠節省很多時間,希望對大家有幫助,不對的請指正。

其次說一下,你以為這樣就完了,其實沒有,當我在看我的網站的時候,其實啊,網站開始報錯,多數是python的語法報錯,因為我的django本來是在mac下完成的,其中就涉及到一些linux和windows之間的一些小差別,主要是路徑問題。所以建議還是直接在linux伺服器上部署,據說要簡單好多,而且減少了後期除錯的工作量。