我正在部署一个 Django 应用,但似乎无法在 Apache 配置中正确设置。我已将 Django 应用放在 /path/to/mysite.com/teabag/current/ 中
DirectoryIndex index.html
DocumentRoot /path/to/mysite.com/teabag/current/
<Location "/">
SetHandler python-program
PythonHandler django.core.handlers.modpython
SetEnv DJANGO_SETTINGS_MODULE settings_production
PythonPath "['/path/to/mysite.com/teabag/current'] + sys.path"
PythonDebug On
</Location>
<Location "/media/">
SetHandler None
</Location>
<LocationMatch "\.(jpg|gif|png)$">
SetHandler None
</LocationMatch>
但它给了我这个错误:
ImportError: Could not import settings 'settings_production' (Is it on sys.path? Does it have syntax errors?): No module named settings_production
我怀疑我的 python 路径不正确。它应该比 /path/to/mysite.com/teabag 高一级,因此设置应该是“current.settings_production”
我有点困惑,如果能得到任何帮助我将非常感激,谢谢。
答案1
您使用的 PythonPath 值应包括您要在应用程序中导入的所有模块的父目录。它还应包括 DJANGO_SETTINGS_MODULE 位置的父目录。
我猜是:
SetEnv DJANGO_SETTINGS_MODULE current.settings_production
PythonPath "['/path/to/mysite.com/teabag/'] + sys.path"
答案2
我同意 rkthkr 对你的问题的回答,但我注意到了这一点。
DocumentRoot /path/to/mysite.com/teabag/current/
这不会造成安全问题吗?这会让某人访问您的应用程序代码。没有必要将您的 DocumentRoot 指向您的应用程序目录。您的所有静态媒体都应从单独的目录中提供。如果您使用的是 Linux 系统,您可以将您的媒体从您的应用程序目录符号链接到您的 DocumentRoot 目录。