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
如何在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/ 即可。
新聞熱點
疑難解答