Django 1.6 在Windows平台下的配置
前言
最近兩天研究了下Django1.6
在Windows平台中的配置安裝,服務器采用Apache。期間遇到過許多新手所遇到的各種問題,也算是一種寶貴經歷,問題原因主要是關於新版Django靜態文件的配置問題,尤其是media和static兩種文件的混淆。網上很多教程都是基於比較老的版本所寫,導致配置思路有差異,最有價值的內容當屬Django官網的參考資料,值得細讀。
配置環境
Python:2.7.6
Apache: 2.2
Django: 1.6
OS: windows 7
目錄
Python 安裝
Python軟件安裝
到Python官網下載相應Win32版本的即可,我的是2.7.6。關於Python版本的選擇在網上有很多介紹,因為3.X以上版本很多模塊不支持,所以最好選擇2.X安裝。下載完后直接點擊安裝,至於安裝路徑可選擇默認也可自定義。建議是最好不要放在類似Program Files
的文件夾中,直接放在C盤或其它盤根目錄下。因為我在用Mingw32創建Django工程時,安裝在此路徑下的python會出現C:\program: bad interpreter
錯誤,也可能是自己未配置好的原因。軟件安裝好后將python安裝目錄添加到環境變量PATH
。
Python包安裝
由於安裝Django我使用的是Pip安裝,所以在此先安裝Pip包,我一般選擇國內的安裝源,不僅速度快且穩定,上面基本上囊括了PyPi的所有包,很方便。找到PIP相應的目錄選擇相應的版本,點擊下載即可,然后將目錄解壓,進入目錄執行如下命令安裝。
python setup.py install
安裝好后,需要將[python安裝目錄]/Scripts
路徑添加到環境變量,以便在任何地方使用。
Apache安裝
目前用得最廣的版本是2.2,直接到Apache官網下載即可。關於是否安裝Apache還是Nginx的問題,網上有相關介紹,各有優勢,不在此贅述。
Django 安裝
Django下載
進入命令行,可以是Windows CMD, 我用的是Mingw32,執行如下命令:
$ pip install django -i http://e.pypi.python.org/simple/
命令中指定下載安裝源。安裝好后會在Python安裝目錄中的Lib/Site-packages/路徑下生成Django目錄,同時會為在Python安裝目錄下的Scripts/目錄中產生django-admin.py
文件,此文件就是我們需要用來創建Django工程和應用的主文件,需要詳細了解。安裝好后需要測試是否安裝成功,進入Python Shell環境,執行import django
命令,如果未出現錯誤說明Django安裝成功。
Mod_WSGI配置
下載mod_wsgi.so文件,並配置mod_wsgi模塊, 找到Apache安裝目錄下Conf/httpd.conf,在LoadModule處添加如下語句:
LoadModule wsgi_module modules/mod_wsgi.so
Django工程創建
創建工程
Django工程的創建利用django-admin.py
進行,在相應的目錄執行如下命令即可創建一個Django工程:
django-admin.py startproject zend
其中,zend
是工程名。工程創建好之后,架構如下所示:
zend #項目名稱
|
--zend #項目子文件夾
|
----__init__.py #項目初始化文件
|
----settings.py #項目配置文件
|
----urls.py #項目鏈接管理文件
|
----wsgi.py #wsgi配置文件
|
--manage.py #項目管理文件,執行各種操作,如內置服務器啟動,數據庫表管理等
在下面將以此工程進行介紹。
Settings.py設置
此文件很關鍵,設置不對無法訪問Django項目,設置涉及幾個方面,主要字段有:
INSTALLED_APPS #關於APP方面的設置,如自己創建的APP
DATABASES #數據庫方面設置,mysql,sqlite3,oracle等
STATICFILES_DIR #靜態文件目錄設置
TEMPLATE_DIRS #模板文件目錄設置
INSTALLED_APPS
字段主要涉及所創建的APP,其中最為關鍵的一點是關於django.contrib.staticfiles
的設置,此處需添加上,這一步很關鍵。
DATABASES
字段,我設置的是Mysql,所以最后配置如下:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',#mysql engine
'NAME':'zend', #database name
'USER':'root', #database user
'PASSWORD':'xxx', #database password
'HOST':'', #主機名
'PORT':'', #訪問端口
}
}
在配置之前,需要創建數據庫
zend
。
STATICFILES_DIR
字段,主要用來配置靜態文件目錄,當項目運行時,通過此目錄找到相應的靜態配置文件,如css,js,images等。配置如下:
STATIC_URL = '/static/'
STATICFILES_DIRS=(os.path.join(BASE_DIR,"static"),)
TEMPLATE_DIRS
字段,主要用來配置模板文件目錄。配置如下: TEMPLATE_DIRS=( os.path.join(BASE_DIR,'templates'),)
配置STATICFILES_DIRS和TEMPLATE_DIRS需要在zend工程目錄下創建static和templates文件夾,在apache配置時還提及media,所以同時創建media文件夾。同時最關鍵的是static文件夾的內容。如果在Apache中指定的static目錄是工程目錄下的static目錄,則執行如下命令后會把site-packages/django/contrib/admin/static/下的內容拷貝到工程目錄中的static文件夾中:
python manage.py collectstatic
我是按照此方法來設置靜態文件的。所以下面Apache的配置也是根據此目錄來設置。
wsgi.py設置
此文件是關於創建工程后的解析設置,文件內容如下:
import os,sys
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "zend.settings")
sys.path.append(r'D:/www/django/zend') #工程路徑
from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()
Apache配置
此步驟是花時間比較多的步驟,一開始查閱網上資料說的都很亂,有的是Django版本不對,有的是Apache配置本身不對。最后靜下心查看官網的關於Apache的配置文章才有所領悟。按照此文章的介紹,我整理了下我的配置思路,我主要是用虛擬目錄方式來配置,區別就是我把WSGIScriptAlias
語句放在了虛擬目錄配置文件httpd-vhost.conf
中,而常規的話是放在httpd.conf
中。
首先,把httpd.conf文件中的
Include conf/extra/httpd-vhosts.conf
去掉注釋,以便在虛擬目錄配置文件中進行Django配置。其次,打開
conf/extra/httpd-vhosts.conf
文件,進行如下配置:
<VirtualHost *:80>
DocumentRoot "D:/www/django/zend"
ServerName localhost
AliasMatch ^/([^/]*\.css) "d:/www/django/zend/static/styles/$1
Alias /media/ "d:/www/django/zend/media/"
Alias /static/ "d:/www/django/zend/static/"
<Directory "D:/www/django/zend/static">
Order deny,allow
Allow from all
</Directory>
<Directory "D:/www/django/zend/media">
Order deny,allow
Allow from all
</Directory>
WSGIScriptAlias / "d:/www/django/zend/zend/wsgi.py"
<Directory "D:/www/django/zend/zend">
<Files wsgi.py>
Order Deny,Allow
Allow from all
</Files>
</Directory>
</VirtualHost>
測試工程
如果用Django內置服務器的話,進入工程目錄,直接執行以下命令:
python manage.py runserver [port] #port可省略,默認為8000
在瀏覽器中輸入localhost即可,如果出現It works
等字眼,說明django配置成功。
如果用Apache的話,先啟動apahce服務,然后輸入localhost
如果出現上述字眼,表明apache配置成功。
總結
此文檔主要是為記錄安裝過程所寫,以備后忘,在配置過程中,遇到很多問題,從網上也找到一些資料參考,收獲還是很多的。