以下是我所做工作的总结
- 我将我的 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!