2014-06-12 83 views
2

我想部署一個Django應用程序的第一次使用mod_wsgiApacheUbuntu 12.04虛擬機。我一直在以下幾個教程,特別是Ayman Farhat blog,這excellent YouTube video當然官方的Django文檔Django應用程序不可見

在此之前的earlier question I posted here不知道爲什麼,當我上傳到/ var/WWW /(臉紅了我的Django的調查並沒有簡單地工作! )我已經根據答案查看了mod_wsgi

我不知道我失蹤了什麼階段。該項目可以通過python manage.py runserver在服務器上啓動,沒有任何錯誤。我也跑了python manage.py collectstatic沒有錯誤。

然後,我

sudo service apache2 restart 

但是重新啓動Apache,當我去的URL http://phaedrus.scss.tcd.ie/bias_experiment/surveythree/,我希望看到調查無所不有。我只看到標準的404錯誤。

我真的不確定接下來要做什麼或者爲什麼這不起作用。

下面是我的設置和我迄今爲止所嘗試的。

注意:我有一個在Pydev中創建的Bias_Experiment Django項目。它有三個應用程序包含在src文件夾中。

  • 調查(我的工作的項目)
  • 民意調查(一個教程中,我被下)
  • bias_experiment(我設置的根應用程序文件等)

我的項目結構

enter image description here

我的虛擬主機位於/etc/apache2/sites-available/bias_experiment

<VirtualHost *:80> 
ServerAdmin [email protected] 
ServerName kdeg-vm-18.scss.tcd.ie 
ServerAlias http://collegeserver.ie/bias_experiment 
WSGIScriptAlias/var/www/bias_experiment/src/bias_experiment/index.wsgi 

Alias /static/ /var/www/bias_experiment/src/bias_experiment/static/ 
<Location "/static/"> 
    Options -Indexes 
</Location > 
</VirtualHost > 

我WSGI文件位於/var/www/bias_experiment/src/bias_experiment/index.wsgi

import os 
import sys 
import site 

# Add the site-packages of the chosen virtualenv to work with 
site.addsitedir('~/var/www/bias_experiment/lib/python2.7/site-packages') 

# Add the app's directory to the PYTHONPATH 
sys.path.append('/var/www/bias_experiment') 
sys.path.append('/var/www/bias_experiment/src/bias_experiment') 

os.environ['DJANGO_SETTINGS_MODULE'] = 'bias_experiment/src/bias_experiment.settings' 

# Activate your virtual env 
activate_env=os.path.expanduser("~/var/www/bias_experiment/bin/activate_this.py") 
execfile(activate_env, dict(__file__=activate_env)) 

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

我的URL模式bias_experiment/src/bias_experiment/urls.py

urlpatterns = patterns('', 
    url(r'^polls/', include('polls.urls', namespace="polls")), 
    url(r'^admin/', include(admin.site.urls)),   
    url(r'^surveythree/$', SurveyWizard.as_view([SurveyForm1, SurveyForm2, SurveyForm3, SurveyForm4, SurveyForm5])), 
) 

回答

1

的addre你打算在你的瀏覽器中與你的Apache配置中的ServerName或ServerAlias指令不匹配,所以虛擬主機將不知道對該請求做出響應。

請注意,ServerAlias應該與ServerName類似 - 主機名,而不是URL,沒有http前綴或路徑。另外請注意,如果您需要該虛擬主機響應多個主機名,則您可以擁有多個ServerAlias值。

如果您想讓Django應用程序在/ bias_experiment下面提供服務,那應該是WSGIScriptAlias的一部分。

所以它應該是:

ServerAlias phaedrus.scss.tcd.ie 
WSGIScriptAlias /bias_experiment /var/www/bias_experiment/src/bias_experiment/index.wsgi 

我也感到困惑你的代碼的位置。它在/ var/www/...或/ home/whoever/var/www?你的wsgi文件是指後者,但Apache conf有前者。

接下來,virtualenv應該負責設置所有的Python路徑。因此,由於您正在運行激活腳本,因此可以刪除修改sys.path和site.addsitedir的行。儘管您可能需要保留添加src目錄的那個。

另一個問題是您的DJANGO_SETTINGS_MODULE。它應該是一個Python模塊,而不是文件路徑 - 實際上你所擁有的是它們之間的交叉。由於src位於Python路徑中,因此可以將其設置爲'bias_experiment.settings'。

+0

感謝您的幫助;-)我不知道我應該訪問的地址應該匹配服務器名稱或別名,我會嘗試一些變化後,我做了其他更改。 – Deepend

+0

我已根據您的指示更新了ServerAlias和WSGIScriptAlias。我的代碼在'/ var/www /'not'〜/ var/www /我也改變了這個。我也做了其他改變。 – Deepend

+0

由於這些變化,我仍然沒有看到預期的結果。我正在通過http://phaedrus.scss.tcd.ie/bias_experiment公開的私有虛擬機託管。我認爲這種困惑是問題的根源。我認爲現在最好能夠發佈另一個問題,重點關注這些問題已經解決了嗎? – Deepend

相關問題