我正尝试在mod_wsgi
VM上使用Apache
和Ubuntu 12.04
首次部署Django应用程序。我一直在学习几个教程,特别是Ayman Farhat blog,这个excellent YouTube video,当然还有正式的Django文档
这跟随earlier question I posted here想知道为什么我的Django调查在我上传到/ var / www /(腮红!)时不能简单地工作。我已经根据答案调查了mod_wsgi
。
我不确定我错过了什么阶段。该项目能够通过python manage.py runserver
在服务器上启动而没有错误。我也没有错误地运行python manage.py collectstatic
。
然后我用
重启Apachesudo service apache2 restart
然而,当我访问我希望看到调查的网址http://phaedrus.scss.tcd.ie/bias_experiment/surveythree/时,没有任何内容。我只看到标准的404错误。
我真的不确定我接下来要做什么,或者为什么这不起作用。
以下是我的设置以及到目前为止我尝试过的内容。
注意:我在Pydev中创建了一个Bias_Experiment Django项目。它有一个src
文件夹中包含的三个应用程序。
我的项目结构
我的虚拟主机位于/etc/apache2/sites-available/bias_experiment
<VirtualHost *:80>
ServerAdmin admin@email.com
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()
来自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])),
)
答案 0 :(得分:1)
您在浏览器中访问的地址与Apache配置中的ServerName或ServerAlias指令不匹配,因此虚拟主机不知道是否响应该请求。
请注意,ServerAlias应类似于ServerName - 没有http前缀或路径的主机名,而不是URL。另请注意,如果您需要虚拟主机响应许多主机名,则可以为ServerAlias提供多个值。
如果你想在/ bias_experiment下面提供Django应用程序,那应该是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路径上,因此您只需将其设置为&lt; bias_experiment.settings&#39;。