1. 程式人生 > >Django1.7+Apache2.4部署

Django1.7+Apache2.4部署

    本人也是剛接觸Django,在遇到困難時在網上得到很多部落格關於Django介紹的幫助,為了發揚分享的精神,特意記錄一下關於Django1.7 +Apache2.4的部署過程

因為Django涉及到python、Django、Apache、mod_wsgi,所以關於版本的配合非常關鍵,我使用的版本分別如下:Django1.7+Apache2.4VC9+mod_wsgi‑4.4.9+python2.7+Windows7 

版本說明
Django Apache mod_wsgi python
1.7 2.4 VC9 4.4.9 2.7

本文假設已經在本機上實現了Django網站的搭建,所以python2.7和Django1.7的下載不說明,Django文件地址:

Django文件說明

1、下載Apache2.4:

下載地址:點選開啟連結,我下載的文件的具體地址:點選開啟連結

Windows安裝注意事項:點選開啟連結,對Apache在Windows上安裝做一些說明,可以忽略

我下載後的文件的名字:httpd-2.4.12-x86.zip

下載後把文件解壓到:D:\Apache24,可以看到我的檔案目錄:


主要需要配置的檔案:D:\Apache24\conf\httpd.conf,通過文件查詢的方式查詢需要修改的程式碼段,推薦使用notepad++

Define SRVROOT "D:/Apache24"
ServerRoot "${SRVROOT}"
ServerName www.example.com:8086
#Listen 12.34.56.78:80
Listen 127.0.0.1:8086

啟動Apache的bin/httpd.exe程式,並瀏覽器訪問:http://127.0.0.1:8086,會在瀏覽器上看到Apache的歡迎介面,這樣Apache就初步配置完成

2、下載mod_wsgi:

下載地址:點選開啟連結,選擇灰色的那個版本:


whl是python打包的一個格式,把它改為zip就可以解壓了,把裡面的mod_wsgi.so拷貝到D:\Apache24\modules路徑下

3、配置Apache與Django

重新開啟D:\Apache24\conf\httpd.conf,在文件尾部添加了以下內容,主要是配置路徑,告訴Apache關於Django的static的路徑等
#新增mod_wsgi.so 模組
LoadModule wsgi_module modules/mod_wsgi.so

#指定myweb專案的wsgi.py配置檔案路徑
WSGIScriptAlias / F:/Django_Project/qblog/qblog/wsgi.py

#指定專案路徑
WSGIPythonPath F:/Django_Project/qblog

<Directory F:/Django_Project/qblog/qblog>
<Files wsgi.py>
    Require all granted
</Files>
</Directory>

Alias /static F:/Django_Project/qblog/static 
<Directory F:/Django_Project/qblog/static> 
    AllowOverride None
    Options None
    Require all granted
</Directory> 
然後設定Django的setting.py檔案:

修改以下內容:

...
DEBUG = False 

TEMPLATE_DEBUG = False

ALLOWED_HOSTS = ['127.0.0.1', 'localhost']
重新啟動Apache的bin/httpd.exe程式,開啟瀏覽器,訪問http://127.0.0.1:8086/看之前的Django網頁是否出來了;

到這裡,部署還沒有結束,通常這樣在admin上顯示的頁面無法載入部分css和背景圖片等靜態檔案,這是因為Apache無法找到這些靜態檔案,因為它們不是在我們的專案中,而是在這裡:D:\Python27\Lib\site-packages\Django-1.7.1-py2.7.egg\django\contrib\admin

4、收集靜態檔案

怎樣把D:\Python27\Lib\site-packages\Django-1.7.1-py2.7.egg\django\contrib\admin檔案拷貝到我們專案的static裡面呢?手動拷貝是可以的,但這樣不科學,可能還會遺漏其他app所需要的靜態檔案,例如我自己就還遺漏了django_markdown靜態檔案了,根據網路搜尋,解決的方法是:

①修改配置setting.py檔案,把STATIC_ROOT的註釋去掉,然後把STATICFILES_DIRS的os.path.join(BASE_DIR, "static")註釋掉。

STATIC_URL = '/static/'
#STATIC_ROOT = os.path.join(BASE_DIR, "static")
TEMPLATE_DIRS = (
    os.path.join(BASE_DIR, "templates"), 
)

STATICFILES_DIRS = (
    os.path.join(BASE_DIR, "static"), 
)
修改後的效果是:
STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, "static")
TEMPLATE_DIRS = (
    os.path.join(BASE_DIR, "templates"), 
)

STATICFILES_DIRS = (
    #os.path.join(BASE_DIR, "static"), 
)

②在Django專案的根目錄執行 cmd命令,收集到admin&django_markdown:

F:\Django_Project\qblog>python manage.py collectstatic


③把setting.py的上一步設定還原,重新執行Apache,是否可以看到除錯時的效果了,enjoy it!!

PS:在配置Apache時,可以檢視log檔案,這樣可以非常快的找出問題的原因,主要是兩個log檔案:access.log &error.log

參考文件:

dfg727的部落格:點選開啟連結