django配置apache model_python
www.jz123.cn 2010-09-28 來源:
中國建站 責任編輯(袁袁)
我要投遞新聞
1:這個問題搞了好久 然來是因為我的apache的model檔案沒有mod_python.so檔案
解決辦法是: 先裝好python django 跟apance
下載mod_python-3.3.1.win32-py2.5-Apache2.2.exe這個檔案安裝時他會自動尋找python25的位置 點擊繼續
但是到倒數第二步的時候有個選項 就是選擇你電腦apance安裝的位置 點擊apache位置 確認 然後他自己會把mod_python.so檔案安裝到model檔案中:
然後再在apache的httpd.conf加上LoadModule pytyhon_module modules/mod_python.so
配置Django到Apache的步驟:
如何在Windows環境下安裝Apache和mod_Python, 這篇Blog解釋得很明白,我下面的這些步驟得到了驗證。
1:
從 http://httpd.apache.org/
來擷取apache_2.2.3-win32-x86-no_ssl.msi這個安裝檔案;
運行這個msi即可順利安裝Apache。
2:
網路上有很多說可以利用Apache和mod_python原始碼來編譯安裝mod_python的,但是如果你僅僅想快速安裝,那麼請從
http://www.apache.org/dist/httpd/modpython/win/3.2.10/
直接下載
mod_python-3.2.10.win32-py2.4-apache2.2.exe
檔案,運行這個exe即可順利把mod_python安裝到Python2.4以及Apache2.2;
由於GFW的封鎖,可能您無法訪問apache網站,那麼可以從這裡下載:
http://files.cnblogs.com/zhengyun_ustc/mod_python-3.2.10.win32-py2.4-apache2.2.rar
3:
我們用
Python django-admin.py startproject myproject
命令,在C盤的django目錄下建立了一個Django項目myproject。我們把它引用的圖片檔案和css檔案等靜態資源都放在myproject檔案夾下的media目錄中。
此時,將myproject目錄下的settings.py檔案中的這三個參數修改一下,主要是為了從相對路徑變成絕對路徑:
|
修改的配置行 |
|
# Django settings for myproject project.
'''
將相對路徑改為絕對路徑。主要有:
MEDIA_ROOT
TEMPLATE_DIRS
STATIC_PATH
'''
# Absolute path to the directory that holds media.
# Example: "/home/media/media.lawrence.com/"
MEDIA_ROOT = 'c:/django/myproject'
STATIC_PATH = 'c:/django/myproject/media'
TEMPLATE_DIRS = (
# Put strings here, like "/home/html/django_templates".
# Always use forward slashes, even on Windows.
'c:/django/myproject/templates',
) |
切記切記,一定要保證這三個參數是絕對路徑。
4:
配置Apache的httpd.conf設定檔:
首先,在“Dynamic Shared Object (DSO) Support”的配置下增加一行
LoadModule python_module modules/mod_python.so
這個必須手動添加。
5:
我們列出此時Apache所需要的參數分別為:
項目名:myporject
試圖訪問的URL為:http://localhost:80/mysite/
靜態資源檔案的存放目錄:c:/django/myproject/media
專案檔夾路徑:c:/django/myproject
好了,此時你就應該在httpd.conf檔案的最後附加這段配置,以便讓Apache知道到哪裡去定位myproject/settings.py檔案:
|
增加的配置行 |
|
# mysite目錄路徑: c:/django/myproject,
# 但是對於PythonPath,必須設定成這個目錄的上一級目錄!
# this site url:http://localhost:80/mysite/
<Location "/mysite/">
SetHandler python-program
PythonPath "sys.path+['c:/django']"
PythonHandler django.core.handlers.modpython
SetEnv DJANGO_SETTINGS_MODULE myproject.settings
PythonInterpreter mysite
PythonDebug On
</Location> |
對於上面的配置,Limodou注釋道:“上面 PythonPath 主要是將 myproject的目錄加入到 sys.path ,以便 Django 可以找到。需要使用絕對路徑。
SetEvn 中設定的 DJANGO_SETTINGS_MODULE 就對應於你的 項目名.設定檔。因此為了能匯入 項目名.設定檔,就需要前面的 PythonPath 的設定。
PythonDebug 和 PythonAutoReload 建議在生產時設為 Off 。”
為了讓圖片、css、script能夠被Apache成功載入,還需要在httpd.conf最後附加這段配置:
|
增加的配置行 |
|
#Alias /site_media 是用來將 myproject的靜態檔案設定一個 URL 訪問的別名。
Alias /site_media c:/django/myproject/media
<Location "/site_media/">
SetHandler None
</Location>
#Alias /media 是將 Django Admin 的靜態檔案設定一個 URL 的訪問別名。
Alias /media c:/Django-0.95/django/contrib/admin/media
<Location "/media/">
SetHandler None
</Location>
# file types we want to serve statically
# case insensative match
<LocationMatch "(?i)\.(jpg|gif|png|txt|ico|pdf|css|jpeg)$">
SetHandler None
</LocationMatch> |
Limodou在Step by step中特地說“同時可以注意到 settings 我改為了 settings_apache 了。一方面將要把其中的內容有關相對路徑的東西改為絕對路徑,另一方面我還想保持現在的 settings.py 。”這也是一個很好的做法。
最後,修改MaxRequestsPerChild為1,這是一個可選項。Limodou是這麼說的“同時如果你不想每次重啟Apache 來進行測試,可以將: MaxRequestsPerChild 0. 改為: MaxRequestsPerChild 1”
重啟Apache服務。
6:
瀏覽 http://localhost:80/mysite/ 即可。