2013-05-07 120 views
2

我正在开发一个django应用程序。在开发服务器上,一切正常。 在生产服务器上(使用apache),没有任何工作。django制作服务器:根路径

1 /我有错误TemplateDoesNotExist在/

在我的settings.py文件:

SITE_ROOT = os.path.abspath(os.path.dirname(__name__))。这是项目的根路径。

templateDir = os.path.join(SITE_ROOT, 'templates/') 
TEMPLATE_DIRS = (
    templateDir 
) 

这是模板路径。

2 /如果我改变SITE_ROOT与该项目的绝对路径:

SITE_ROOT="/var/www/europolix" 

模板似乎承认,但我有另一个错误: 无模块命名getEurlexIdsFunctions 下面是代码:

import sys 
sys.path.append('import') 
import getEurlexIdsFunctions as eurlexIds 

我认为问题再次来自相对路径。 Apache似乎在“var/www /”中搜索'import',而不是在“var/www/europolix /”中搜索。我对吗?

这里是我的Apache配置:

WSGIScriptAlias /europolix /var/www/europolix/europolix/wsgi.py 
WSGIPythonPath /var/www/europolix/ 
<Directory /var/www/europolix/> 
    <Files wsgi.py> 
     Order deny,allow 
     Allow from all 
    </Files> 
</Directory> 

它是根路径的问题不承认,还是有其他问题?

非常感谢。

+0

只为一个良好的模块的末端是UniPath。它以更正常的人语言方式帮助路径。 – 2013-05-07 09:01:24

+0

你能多解释一下还是举个例子?这是比我使用的更好/更清洁的解决方案吗? – rom 2013-05-07 09:36:48

+0

这里是文档:https://github.com/mikeorr/Unipath – 2013-05-07 10:30:06

回答

1

好吧,几件事情。使用settings.py时,最好将所有路径声明为绝对路径。我在你的代码中看到,你有这条线

SITE_ROOT = os.path.abspath(os.path.dirname(__name__)) 

站点的根,但我认为是更好,如果你使用__file__全局变量,而不是__name__。就像这样:

SITE_ROOT = os.path.abspath(os.path.dirname(__file__)) 

我在生产服务器Django应用程序和所有我不得不添加到我的httpd.confwsgiload_module指令和该行的虚拟主机

WSGIScriptAlias/C:/Users/ike/Documents/Work/Sincronoz/code/apache/django.wsgi 

内指定别名以django.wsgi脚本为根。

然后在django.wsgi脚本我有这样的代码:

import os, sys 
sys.path.append(r'<full site root to where is settings.py>') 
os.environ['DJANGO_SETTINGS_MODULE'] = 'my_project_module.settings' 

import django.core.handlers.wsgi 

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

我想你最好还是工作使用绝对路径,当你得到它的所有工作,然后试着去包容它有可能相对路径您的需求如果你不得不。

希望它有帮助。

0

在文件wsgi的django项目中。PY我添加这3条线

import sys 
DJANGO_PATH = os.path.join(os.path.abspath(os.path.dirname(__file__)),'..') 
sys.path.append(DJANGO_PATH) 

+0

编辑您的答案。格式不正确。 – jogo 2015-11-14 14:26:44