Win7環境下Apache+mod_wsgi本地部署Django
django基礎已經掌握的同學可以嘗試將項目發布已尋找些許成就感,以鼓勵自己接下來進行django的進階學習
以前你總是使用python manage.py runserver進行服務啟動,但是卻不知:
- runserver是單線程服務,Apache支持多線程,性能不再一個等級
- runserver在debug模式下才能使用靜態文件,而debug模式下運行會留存很多debug信息,時間長了內存爆炸
- runserver掛了就GG,但是Apache很穩定,就算掛了,也只掛掉wsgi線程
- runserver方便開發調試而產生,生產環境不可用
廢話不多說,上幹貨(前提:python環境ok,django項目ok,本地可運行)
作者項目路徑:F:/py_workspace/DJ/proj
Apache路徑:E:\httpd-2.4.33-win64-VC15\Apache24
一、環境
- OS:win7
- Python2.7:自己安裝配置環境變量即可
- Django1.8:詳見“搞測試”公眾號
- Apache2.4:https://www.apachelounge.com/download/
- mod_wsgi.so:https://github.com/GrahamDumpleton/mod_wsgi/releases/download/4.4.12/mod_wsgi-windows-4.4.12.tar.gz
二、Apache配置
- 點擊https://www.apachelounge.com/download/,選擇適合自己的Apache版本(32位/64位)下載,下載完成得到httpd-2.4.33-win64-VC15.zip。
- 解壓後打開conf/httpd.conf配置文件,修改如下配置:
1 ServerRoot "E:\httpd-2.4.33-win64-VC15\Apache24" 2 Listen 192.168.200.235:8090 3 #ServerName 192.168.200.235:8090 #可以註釋掉 4 DocumentRoot "E:\httpd-2.4.33-win64-VC15\Apache24\htdocs" #Apache路徑下htdocs文件夾路徑,下同 5 <Directory "E:\httpd-2.4.33-win64-VC15\Apache24\htdocshttpd.conf"> 6 ScriptAlias /cgi-bin/ "E:\httpd-2.4.33-win64-VC15\Apache24\cgi-bin/" #Apache路徑下cgi-bin文件夾的路徑,下同 7 <Directory "E:\httpd-2.4.33-win64-VC15\Apache24\cgi-bin"> 8 AllowOverride None 9 Options None 10 Require all granted 11 </Directory>
在Apache的bin路徑下運行:httpd.exe,出現Apache控制臺,訪問localhost:8090,出現 It works 說明Apache服務啟動成功。
或者在httpd.exe所在路徑下shift+郵件選擇在此處打開命令窗口(CMD),鍵入:httpd.exe -k start 同樣可以啟動Apache服務。
想要查看Apache服務,右擊我的電腦,選擇管理,查看服務即可。
三、mod_wsgi配置
- 點擊https://github.com/GrahamDumpleton/mod_wsgi/releases/download/4.4.12/mod_wsgi-windows-4.4.12.tar.gz,將下載成功的壓縮包解壓,選擇適合自己版本的so文件。
- 將so文件復制到Apache路徑下的modules文件夾下即可。
- 將so文件放到指定位置後再次進行httpd.conf的項目和wsgi配置(直接在httpd.conf後面追加即可)。
1 #add mod_wsgi 2 LoadFile "c:/python27/python27.dll" 3 LoadModule wsgi_module modules/mod_wsgi-py27-VC9.so 4 WSGIPythonHome "c:/python27" 5 6 WSGIScriptAlias / F:/py_workspace/DJ/proj/proj/wsgi.py 7 8 WSGIPythonPath F:/py_workspace/DJ/proj/ 9 10 <Directory F:/py_workspace/DJ/proj/proj> 11 <Files wsgi.py> 12 Require all granted 13 </Files> 14 </Directory>httpd.conf
配置完成後再次啟動Apache服務,訪問localhost:8090即可看到Django web項目的頁面了。
四、靜態文件配置
同樣是在httpd.conf配置文件後面追加即可。
1 #Alias /static F:/py_workspace/DJ/proj/static 2 #<Directory F:/py_workspace/DJ/proj/static> 3 # AllowOverride None 4 # Options None 5 # Require all granted 6 #</Directory> 7 8 #Alias /media F:/py_workspace/DJ/proj/media 9 #<Directory F:/py_workspace/DJ/proj/media> 10 # AllowOverride None 11 # Options None 12 # Require all granted 13 #</Directory>
五、別忘了
修改django的settings配置:
DEBUG = False
Listen 192.168.200.235:8090
ALLOWED_HOSTS = [‘*‘]
這樣配置,局域網內的小夥伴就可以訪問到你的Django Web項目了。
PS:因為在之前的httpd.conf配置中,已經配置listen為本機ip了,所以這裏還是192xxx,有時候為了調試方便我們還在前面的listen中會配置ip為127.0.0.1:8090供自己調測使用,而不讓局域網內的人訪問。
六、Q&A
Q:啟動Apache的時候提示:無法啟動此程序,因為計算機中丟失VCRUNTIME140.dll 嘗試重新安裝此程序以解決此問題
A:安裝Microsoft.Net.Framework 4.6.1,點擊下載;安裝Visual C++ Redistributable for Visual Studio 2015,點擊下載。
Win7環境下Apache+mod_wsgi本地部署Django