我正在尝试配置 mod_wsgi 以使用 Python 2.7。
我下载并解压源代码并运行
./configure --with-python=/usr/local/bin/python2.7
此后 mod_wsgi.so-2.4 和 mod_wsgi.so-2.5 出现在 /usr/lib/apache2/modules 中。
我重新启动了服务器,但报告“内部服务器错误”。错误日志显示,启动时服务器报告使用的是 Python 2.5.2——与之前的版本相同。
如何让 Apache 运行 Python 2.7?如何正确配置 mod_wsgi 以与 Python 2.7 一起运行?
答案1
您安装的 mod_wsgi 系统包存在冲突。如果您不需要它们,请卸载 mod_wsgi 系统包。
另请务必阅读:
因为您可能需要在构建 mod_wsgi 时将 LD_RUN_PATH 设置为 /usr/local/lib,以便如果 /usr/local/lib 未在系统 ld.cache 中列出,它知道在运行时在哪里找到 Python 库。
您可能还需要设置:
WSGIPythonHome /usr/local
在 Apache 配置中,mod_wsgi 知道 Python 2.7 在哪里,因为它不在系统位置。
还要确保安装了 Python 2.7 和共享库。
答案2
这是配置 mod_wsgi 使用 Python2.7 的方法
我碰巧遇到了同样的问题。我正在查看卸载 mod_wsgi 并使用适当的配置重新安装它的选项。
阅读其中一篇文章后,我意识到没有必要卸载我当前的 mod_wsgi,我可以继续重新安装 mod_wsgi3.4(之前我有 v3.2),并使用 Python2.7 进行设置(似乎安装过程重写了所有内容,没有任何错误/冲突)。
因为我已经安装了 Python2.7。
我重新安装了 mod_wsgi-3.4(没有执行任何卸载)
[root@server ~]# cd ~
[root@server ~]# wgethttp://modwsgi.googlecode.com/files/mod_wsgi-3.4.tar.gz
[root@server ~]# tar xvf mod_wsgi-3.4.tar.gz
[root@server ~]# cd mod_wsgi-3.4
使用已安装的 python2.7 配置 mod_wsgi
[root@server ~]#./configure --with-python=/usr/local/bin/python2.7
[root@server ~]# 制作
[root@server ~]# 进行安装
下面两个命令非常重要。如果 libpython2.7.so.1.0 不在 /usr/local/lib 中,请将 /usr/local/lib 替换为您安装 libpython2.7.so.1.0 的文件夹。
[root@server ~]# LD_LIBRARY_PATH=/usr/local/lib /usr/local/bin/python
[root@server ~]# ldconfig
重新启动 Apache 服务器
[root@server ~]# 重启服务 httpd
[root@server ~]# ldd /etc/httpd/modules/mod_wsgi.so
上述命令的输出:第 2 行表示您的 mod_wsgi 现在正在使用 Python2.7 库。好极了!
linux-vdso.so.1 => (0x00007fffc0aa9000)
libpython2.7.so.1.0 => /usr/lib/libpython2.7.so.1.0 (0x00007f03a5b20000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f03a5903000)
libdl.so.2 => /lib64/libdl.so.2 (0x00007f03a56fe000)
libutil.so.1 => /lib64/libutil.so.1 (0x00007f03a54fb000)
libm.so.6 => /lib64/libm.so.6 (0x00007f03a5277000)
libc.so.6 => /lib64/libc.so.6 (0x00007f03a4ee2000)
/lib64/ld-linux-x86-64.so.2 (0x00007f03a6133000)