1. 程式人生 > >Django 用Apache2.4 + mod_wsgi 在Windows Server 上進行部署

Django 用Apache2.4 + mod_wsgi 在Windows Server 上進行部署

  • 問題描述

最近在學習使用Django做網站,不得不說,Django + Bootstrap 進行簡單的網站製作、搭建還是非常的方便快捷的,熟練了以後,分分鐘做一個網站出來簡直不是夢。本來,我是直接用python manage.py  runserver 0.0.0.0:80 直接在伺服器上進行部署的,但是,後來我發現一個問題,當我把django專案setting.py 裡面的debug改為False的時候,網站的靜態檔案就無法進行載入了,也就是說所有的圖片之類的都無法正常顯示,要想解決這個問題,有兩個解決方法,第一,就是將debug改回為True(這裡需要提醒,不建議直接用django自帶的python manage.py runserver命令進行部署,因為,安全性並沒有保證,別人可能因為debug = True這個選項, 獲得更多的關於你伺服器的資訊);第二,就是使用其他的程式進行部署了,這裡推薦兩個部署方式,一個是linux端的 nginx + uwsgi 進行部署(該部署方式請參考這個部落格:

django2.0+uwsgi+nginx部署),另外一個就是使用apache + mod_wsgi在Windows上進行部署啦!

  • 參考文獻

django在windows下的部署(Apache+mod_wsgi)(你可以先參考這篇文章,我的部署很大一部分是基於這一篇文章完成的,如果你跟著這篇文章部署,還是出現了一些問題,那麼,就可以接著看下去了)

  • 解決方法

需要準備的工具以及環境:

1 、Apache2.4

2、mod_wsgi(版本要根據你的apache以及python版本而定)

3、python 3.6.5

4、django 2.0以上

下載六十四位的,然後點選紅色小框進行下載,下載完成以後解壓(位置任意),我是解壓到C盤的根目錄的 

 然後進入C:\Apache24\conf這個路徑,開啟httpd.conf(我使用notepad++開啟的)

 接下來我們對httpd.conf進行修改:

在39行左右的地方將Define SRVROTT 引號裡面的路徑修改為Apache的路徑,我的Apache路徑為C:\Apache24

Define SRVROOT "C:\Apache24"
ServerRoot "${SRVROOT}"

然後,在65行左右的地方,修改監聽的埠及ip:

Listen 0.0.0.0:80

 這裡的0.0.0.0:80指的是監聽所有ip的請求,也就是所,任何IP都可以訪問我們的網頁,然後,埠為80,這樣做的好處是80是預設埠,所以別人輸入你的網址時不用輸入埠號,直接輸入ip地址就可以訪問你的網頁

接下來,在230行附近修改伺服器名字(如果你設定了其他埠,那麼,就要帶上其他的埠,例如,你設定了8000埠,那麼,前面你監聽的埠應該是0.0.0.0:8000,假設你的伺服器ip為127.0.0.1,那麼,這裡伺服器的ip應該是127.0.0.1:8000,或者,假如你的域名為godlrodgee.com ,那麼,應該這樣輸入godlordgee.com:8000):

ServerName 你的ip地址或者域名
比如,假設你的伺服器的ip地址為127.0.0.1,那麼,就這樣修改:
ServerName 127.0.0.1
或者,假設你的域名為godlordgee.com,那麼,就這樣修改:
ServerName godlordgee.com

 配置到這裡,就點選儲存退出,然後,開啟cmd,用cmd進入C:\Apache24\bin目錄,執行命令:

httpd.exe -k install -n "apache2.4"  

 這行命令是建立apache服務用的,當你運行了這行命令,你開啟工作管理員,點選服務,就會看到有一個apache2.4的服務

 如果剛建立服務,那麼這裡的狀態應該是已停止的狀態,我是直接從伺服器截的圖,所以是正在執行的狀態。

這裡需要說明,如果用cmd執行安裝apache服務的命令,那麼,會出現下面這句話:

Errors reported here must be corrected before the service can be started

 這句話的下一行,如果有輸出一些資訊,那麼,就表明你的httpd.conf配置有問題,那麼,你就要根據它提示你的報錯資訊,去檢查哪裡有問題,如果這句話的下一行是空白的,那麼,就說明你的apache服務安裝沒有問題,你可以正常啟動了。

如果你配置好了,開啟工作管理員,找到apache服務,右鍵,啟動就可以了,如果啟動成功,訪問127.0.0.1或者本機ip或者域名,那麼,就會出來這樣IT WORKS的介面

 注意!有的小夥伴可能配置檔案正常,但是無法啟動Apache服務,這是因為你沒有安裝VC的外掛!我們安裝的apache2.4,要求我們的電腦有VC14或者更高版本的環境才能執行!這個坑我踩了好久才自己爬出來!!!嚶嚶嚶~~~

點選downl連線,會跳到微軟官網,然後點選下載,下載64位的然後安裝就行了,這裡不再詳述,你們應該可以搞定,我相信你們! (apache服務能夠正常執行的忽略這一步)

安裝完VC15以後,我們再次啟動apache服務,就發現apache服務可以正常的執行,輸入對應的網址,也可以出來apache的介面了

接下來,就要對我們的django專案下手了~嘿嘿嘿(邪惡笑)

是不是感覺有很多的東西,自己找不到?使用瀏覽器的查詢快捷鍵:CTRL + F , 輸入mod_wsgi,即可找到你想要的:

點進去,你會發現有很多的版本:

 通過這個mod_wsgi的名字,我們就可以看到它的要求還挺嚴格,我們一定要對號入座,比如,我框柱的那個下載連結,它就要求你的apache版本是apache2.4VC14版本的,python版本是3.6.x版本的,然後電腦是64位的,大家一定要對號入座哦,一定要所條件都符合才行,不然我也不能保證會發生什麼。
點選連結下載,然後,用cmd進入下載的資料夾,或者將下載的.whl檔案移動到你找得到的地方去(我一般是把它移動到python/Lib/site-packages裡面去),然後用cmd進入.whl檔案所在的目錄,輸入命令:

pip install mod_wsgi-4.5.24+ap24vc14-cp36-cp36m-win_amd64.whl 

 就可以安裝mod_wsgi了。ps:你可以輸入個mod_wsgi,然後按TAB鍵,就可以自動補全了,以免輸錯

安裝完成以後,在cmd裡面輸入:

mod_wsgi-express module-config

 會出來幾行資訊,把它複製然後儲存起來,我是儲存在記事本的,後面配置http_conf會用到

 接下來就是關鍵的地方了,再次開啟剛才的httpd.conf檔案,在檔案最後新增幾行程式碼:

LoadFile "c:/python/python36.dll"
LoadModule wsgi_module "c:/python/lib/site-packages/mod_wsgi/server/mod_wsgi.cp36-win_amd64.pyd"
WSGIPythonHome "c:/python"
#設定工程中的wsgi路徑
WSGIScriptAlias / C:\Users\Administrator\Desktop\test_django\xiaofan\xiaofan\wsgi.py
#設定工程路徑
WSGIPythonPath C:\Users\Administrator\Desktop\test_django\xiaofan
#設定wsgi路徑
<Directory C:\Users\Administrator\Desktop\test_django\xiaofan\xiaofan>
    <Files wsgi.py>
        Require all granted
    </Files>
</Directory>
#設定靜態檔案路徑
Alias /static C:\Users\Administrator\Desktop\test_django\xiaofan\static
<Directory C:\Users\Administrator\Desktop\test_django\xiaofan\static>  
    AllowOverride None  
    Options None  
    Require all granted  
</Directory>
#設定媒體檔案路徑
Alias /media C:\Users\Administrator\Desktop\test_django\xiaofan\media
<Directory C:\Users\Administrator\Desktop\test_django\xiaofan\media>  
    AllowOverride None  
    Options None  
    Require all granted  
</Directory>

 前三行,就是剛才儲存的mod_wsgi命令出來的程式碼,後面的就是django的一些配置,這裡需要說明,我把一個名為test_django的檔案放在了桌面,裡面是一個名為‘xiaofan’的專案,再開啟裡面是django的各個檔案,如下圖所示:

 注意!這裡也有個坑,根據文章開頭的參考部落格,我部署成功了,但是一些圖片沒有正常顯示,只有一些靜態圖片正常顯示了,是因為參考的部落格裡面沒有寫media的路徑(可能是因為該博主的專案沒有用到media,所以沒寫),因為我有media的目錄,這個目錄存放了app的一些圖片,所以,我們在這裡要寫上去。同理,如果,你的django專案沒有media,那麼,就不用寫最後面的設定媒體路徑。

到此,所有的配置已經完成了,我們只需要重啟apache服務(這是必須的!必須重啟),接著,輸入網址,就可以正常訪問啦!其他好朋友也可以通過IP地址或者域名訪問你的網站了哦

再多嘴一句,記得將django專案裡面的setting.py裡面的debug改為false哦,這是為了你的網站好,畢竟,在這紛擾的世界,防人之心不可無啊。

再再多嘴一句,看似挺簡單的部署,浪費了我好多天的時間,無數次的接近崩潰,心好累

再再再多嘴一句,跟著教程走如果遇到了其他的問題,一定多思考,多google、百度、biying,困難,總會被解決的,只要你不放棄就好了

寫部落格好累。。。嚶嚶嚶