Apache+WSGI+Python+Django 给我一些奇怪的错误

Apache+WSGI+Python+Django 给我一些奇怪的错误

以下是我所做工作的总结

  • 我将我的 django 项目移至/pymodules/honstreams
  • 我已经安装了 apache2 和 apache2-dev
  • 我已经安装了 pythonbrew,安装了 Python-2.7.2 并切换到它
  • 我已将 PYTHONPATH 设置为/pymodules/etc/profile确认它可以工作
  • 我已经使用正确的 python 和 apache 版本编译了 mod-wsgi.so
  • 我已将 wsgi 模块添加到 httpd.conf
  • 我已经创建了一个 wsgi_handler.py,其指示如下本教程。 就是这个:

    import sys
    import os
    
    sys.path.append(os.path.dirname(os.path.abspath(__file__)) + '/..')
    os.environ['DJANGO_SETTINGS_MODULE'] = 'honstreams.settings'
    
    import django.core.handlers.wsgi
    
    application = django.core.handlers.wsgi.WSGIHandler()
    
  • 我按照相同的教程配置了 apache VirtualHost。我编辑/etc/apache2/sites-enabled/000-default如下:

    <VirtualHost *>
    
            ServerName www.honstreams.com
            ServerAlias *honstreams.com
    
            Alias /admin_media /root/.pythonbrew/pythons/Python-2.7.2/lib/python2.7/site-packages/django/contrib/ad$
    
            <Location /admin_media>
                    Order allow,deny
                    Allow from all
            </Location>
    
            Alias /media /root/honstreams/website/media
    
            <Location /media>
                    Order allow,deny
                    Allow from all
            </Location>
    
            WSGIScriptAlias / /root/honstreams/wsgi_handler.py
    
            WSGIDaemonProcess honstreams user=www-data group=www-data processes=1 threads=10
            WSGIProcessGroup honstreams
    
    </VirtualHost>
    

我启动 apache 时没有出现错误。我尝试从 http 访问根文件夹,然后/var/log/apache2/error.log重复:

Could not find platform independent libraries <prefix>
Could not find platform dependent libraries <exec_prefix>
Consider setting $PYTHONHOME to <prefix>[:<exec_prefix>]
ImportError: No module named site

说实话,我不知道下一步该做什么。我不知道是什么<prefix><exec_prefix>谷歌也没有特别的帮助。我猜我需要为用户 www-data 设置 PYTHONHOME 变量。

此外,我从未尝试在任何代码中导入名为“site”的模块。因此,我认为如果我修复了上述错误,它就会自行修复。

任何帮助,将不胜感激!


编辑:我已将 PYTHONHOME 设置为/root/.pythonbrew/pythons/Python-2.7.2/etc/profile我得到的错误与之前完全相同。/etc/profile当用户未在 shell 上登录时,这是否会产生任何影响?

答案1

我一直都知道我的 Python 安装中的权限是正确的。我不知道的是,如果层次结构中较高级别的文件夹具有更多限制权限,那将会产生影响。

解决方案是确保从根目录到我的 python 安装的整个目录链都具有 rx 权限。

答案2

作为第一次尝试,我将遵循 Graham 的建议:https://stackoverflow.com/questions/6946413/interesting-problem-with-python-2-7-on-centos-is-this-an-issue-with-my-build/6948092#6948092。由于您正在使用 pythonbrew,因此要使用选项进行构建,请使用 --configure="--enable-shared --whatever-other-options-you-need-go-here"。您可能需要或不需要在您的库周围进行一些符号链接,并明确将 LD_LIBRARY_PATH 添加到您的 .bashrc。hth!

相关内容