2014-09-30 53 views
1

我一直在研究可以移動到生產服務器的Django應用程序。我安裝了Apache和mod_wsgi,並且使用了一個測試來檢查它是否全部正常工作,而且確實如此。但是現在我在使用Django時遇到了問題。無法使用mod-wsgi在Apache上部署django

我已經創建了wsgi.py文件:

import os 
import os.path 
import sys 


sys.path.append('/var/www/html/mideastinfo/lib/python2.7/site-packages/django/bin/mideastinfo') 
#os.environ['PYTHON_EGG_CACHE'] = 'path to a directory for egg cache' 
os.environ['DJANGO_SETTINGS_MODULE'] = 'mideastinfo.settings' 

import django.core.handlers.wsgi 
application = django.core.handlers.wsgi.WSGIHandlers() 

而且我必須通過WGSIScriptAlias的http.conf中指向它。它不工作,我知道它與sys.path有關,我不知道該怎麼做。

我有一個開發環境,我完成了所有的構建。然後,我將所有項目依賴項安裝到服務器用戶pip和requirements.txt中。然後,我移動了我的項目文件。但我認爲我正在把所有的映射和​​路徑錯誤。有任何想法嗎?我覺得我離這一切還有一步之遙。

+0

應用= django.core.handlers.wsgi.WSGIHandlers() [Mon Sep 29 19:13:07 2014] [error] [client 157.55.39 .217] AttributeError:'module'對象沒有屬性'WSGIHandlers' – bamabacho 2014-09-30 02:25:02

+0

當你> python manage.py shell並導入django.core.handlers.wsgi時會發生什麼? – 2014-09-30 02:34:17

+0

沒有,沒有repsonse – bamabacho 2014-09-30 02:37:43

回答

0

我將分享我是如何配置一個簡單的例子:

import os,sys 
apache_configuration = os.path.dirname(__file__) 
project = os.path.dirname(apache_configuration) 
workspace = os.path.dirname(project) 
sys.path.append(workspace) 
sys.path.append('PATH TO YOUR PROJECT ROOT') 

os.environ['DJANGO_SETTINGS_MODULE'] = 'mideastinfo.settings' 

import django.core.handlers.wsgi 
application = django.core.handlers.wsgi.WSGIHandler() 

在對Apa​​che配置你的虛擬主機的指令,你必須有:

WSGIScriptAlias//PATH/TO/YOUR/.wsgi 

例子:

<VirtualHost *:80> 
    ErrorLog /home/user/logs/error.log 
    ... 
    WSGIScriptAlias//PATH/TO/YOUR/.wsgi 
    ... 
</VirtualHost> 
+1

這有幫助。我轉移了一些東西並收緊了項目路徑。另外,我意識到對於我的版本,最後兩行是depracated的,所以我使用django.core.wsgi import get_wsgi_application application = get_wsgi_application() – bamabacho 2014-09-30 03:46:17