1. 程式人生 > >Win7環境下Apache+mod_wsgi本地部署Django

Win7環境下Apache+mod_wsgi本地部署Django

cal 配置ip asp AS aps graham 位置 open blank

django基礎已經掌握的同學可以嘗試將項目發布已尋找些許成就感,以鼓勵自己接下來進行django的進階學習

以前你總是使用python manage.py runserver進行服務啟動,但是卻不知:

  1. runserver是單線程服務,Apache支持多線程,性能不再一個等級
  2. runserver在debug模式下才能使用靜態文件,而debug模式下運行會留存很多debug信息,時間長了內存爆炸
  3. runserver掛了就GG,但是Apache很穩定,就算掛了,也只掛掉wsgi線程
  4. runserver方便開發調試而產生,生產環境不可用

廢話不多說,上幹貨(前提:python環境ok,django項目ok,本地可運行)

作者項目路徑:F:/py_workspace/DJ/proj

Apache路徑:E:\httpd-2.4.33-win64-VC15\Apache24

一、環境

  1. OS:win7
  2. Python2.7:自己安裝配置環境變量即可
  3. Django1.8:詳見“搞測試”公眾號
  4. Apache2.4:https://www.apachelounge.com/download/
  5. mod_wsgi.so:https://github.com/GrahamDumpleton/mod_wsgi/releases/download/4.4.12/mod_wsgi-windows-4.4.12.tar.gz

二、Apache配置

  1. 點擊https://www.apachelounge.com/download/,選擇適合自己的Apache版本(32位/64位)下載,下載完成得到httpd-2.4.33-win64-VC15.zip。
  2. 解壓後打開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\htdocs
"> 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>
httpd.conf

   在Apache的bin路徑下運行:httpd.exe,出現Apache控制臺,訪問localhost:8090,出現 It works 說明Apache服務啟動成功。

   或者在httpd.exe所在路徑下shift+郵件選擇在此處打開命令窗口(CMD),鍵入:httpd.exe -k start 同樣可以啟動Apache服務。

   想要查看Apache服務,右擊我的電腦,選擇管理,查看服務即可。

三、mod_wsgi配置

  1. 點擊https://github.com/GrahamDumpleton/mod_wsgi/releases/download/4.4.12/mod_wsgi-windows-4.4.12.tar.gz,將下載成功的壓縮包解壓,選擇適合自己版本的so文件。
  2. 將so文件復制到Apache路徑下的modules文件夾下即可。
  3. 將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