run django於apache mod_python上會出現一些問題,且apache官方也較推薦使用mod_wsgi來跑python。當然,wsgi在實際佈署上也比mod_python容易許多


1. 確定有安裝mod_wsgi並include進apache的設定檔中

2. 在apache設定檔中加入以下設定(我的DocumentRoot在/home/doraemon/django底下,請參考並自行調整):

WSGIScriptAlias / "/home/doraemon/django/amon_project/django.wsgi"
<Directory "/home/doraemon/django/amon_project">
        Order Deny,Allow
        Allow from all
</Directory>

3. create /home/doraemon/django/amon_project/django.wsgi,貼入以下內容:

# -*- coding: utf-8-*-
import os
import sys
os.environ['DJANGO_SETTINGS_MODULE'] = 'settings'
os.environ['PYTHON_EGG_CACHE'] = '/tmp/.python-eggs'
current_dir = os.path.dirname(__file__)
if current_dir not in sys.path: sys.path.append(current_dir)
import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()

4. apache restart,收工

P.S. 由於django本身無法識別、存取project內的靜態檔案(static files,如圖片、影片、css、js等....),官方文件中提到處理靜態檔案的章節是特別針對在本機電腦上開發的情況,必須針對urls.py中的路徑動手腳。不過還是太複雜了啦~若是將django project部屬在apache上,我們可以用傳統apache提供檔案的方式在django app中提供靜態檔案存取,我們只要把apache alias指到django project中對應的目錄即可。打開apache設定檔並加入以下內容(static):

Alias /static/ /home/doraemon/django/amon_project/static/

<Directory /home/doraemon/django/amon_iproject/static>
Order deny,allow
Allow from all
</Directory>

 


 

2011.10.06更新

假如django project無法順利運行,且/var/log/apache2/error.log在apache啟動時出現以下錯誤訊息:

ImproperlyConfigured: Error importing middleware django.middleware.csrf: "No module named csrf"

這是因為csrf module是在1.2之後的django才有的,會出現這狀況不外乎使用apt-get install python-django的方式安裝django

解決方法很簡單,移除已安裝舊版的dajngo並從網站上下載最新版的django來安裝

arrow
arrow
    文章標籤
    django apache wsgi
    全站熱搜

    amon0626 發表在 痞客邦 留言(1) 人氣()