部署Django (mod_python)

0 投票
1 回答
675 浏览
提问于 2025-04-16 13:15

已解决

我的环境配置:

使用apache + mod_python
VPS服务器,操作系统是CentOS
django版本是1.2.5

我已经把我的文件上传到/mysite

并且将httpd.conf文件设置成如下:

< VirtualHost *:80 >

    DocumentRoot /var/www/html/domain
    ServerName www.domain.com
    ServerAlias domain.com

    #django...
    <Location "/mysite">
        SetHandler python-program
        PythonHandler django.core.handlers.modpython
        SetEnv DJANGO_SETTINGS_MODULE mysite.settings
        PythonOption django.root /mysite
        PythonDebug On
        PythonPath "['/var/www/html/domain/mysite'] + sys.path"
    </Location>

    CustomLog logs/access_log cplus

< /VirtualHost >

我遇到了这个错误:

Mod_python error: "PythonHandler django.core.handlers.modpython"

Traceback (most recent call last):

  File "/usr/lib64/python2.4/site-packages/mod_python/apache.py", line 299, in HandlerDispatch
    result = object(req)

  File "/usr/lib/python2.4/site-packages/django/core/handlers/modpython.py", line 228, in handler
    return ModPythonHandler()(req)

  File "/usr/lib/python2.4/site-packages/django/core/handlers/modpython.py", line 191, in __call__
    self.load_middleware()

  File "/usr/lib/python2.4/site-packages/django/core/handlers/base.py", line 33, in load_middleware
    for middleware_path in settings.MIDDLEWARE_CLASSES:

  File "/usr/lib/python2.4/site-packages/django/utils/functional.py", line 276, in __getattr__
    self._setup()

  File "/usr/lib/python2.4/site-packages/django/conf/__init__.py", line 40, in _setup
    self._wrapped = Settings(settings_module)

  File "/usr/lib/python2.4/site-packages/django/conf/__init__.py", line 75, in __init__
    raise ImportError("Could not import settings '%s' (Is it on sys.path? Does it have syntax errors?): %s" % (self.SETTINGS_MODULE, e))

ImportError: Could not import settings 'mysite.settings' (Is it on sys.path? Does it have syntax errors?): No module named mysite.settings

1 个回答

1

你正在为 www.domain.com/mysite 定义处理程序。

你试过访问这个网址吗?

如果你想让 www.domain.com 显示你的 mysite 应用,可以使用

<Location "/">
    ...
    # remove django.root /mysite
</Location>

编辑

关于你的第二个问题:mysite.settings 不在你的 Python 路径中。你可以把 '/var/www/html/domain' 加到 PythonPath 列表中,或者直接用 settings 作为 DJANGO_SETTINGS_MODULE 也可能解决这个问题。

希望这能帮到你!

撰写回答