Fork me on GitHub
Suzf  Blog

How-to Make mod_wsgi use python2.7.3 instead of python2.6.6

场景再现:
CentOs 6.7 中 Python的 默认版本为 2.6.x, 而日常工作中仍是以 2.7.x 居多。
So问题来了,如果使用 Apache + mod_wsgi 构建 基于Python的 Web 服务器,如何修改其中的Python 默认版本呢?
ENV:
CentOs6.7 httpd-2.2.15-47.el6.centos.4.x86_64 python-2.7.3 mod_wsgi-3.2
从Apache 日志中我们可以看到 相关软件的详细版本信息
[Fri Jun 17 11:33:25 2016] [notice] Apache/2.2.15 (Unix) DAV/2 
PHP/5.3.3 mod_ssl/2.2.15 OpenSSL/1.0.1e-fips 
mod_wsgi/3.2 Python/2.6.6 mod_perl/2.0.4 Perl/v5.10.1 
configured -- resuming normal operations
现在我们要升级 Python 到 2.7.3 的 版本
首先我们需要升级 系统中Python到指定的版本
这里我只是简单地 介绍, 详细信息请参见本站 Python 版本升级shell简略版
PY_VERSION=2.7.3
wget -c https://www.python.org/ftp/python/${PY_VERSION}/Python-${PY_VERSION}.tgz
tar zxf Python-${PY_VERSION}.tgz
cd Python-${PY_VERSION}
./configure --prefix=/usr/local/Python${PY_VERSION} --enable-shared
make && make install
接着我们需要重新编译 mod_wsgi
wget http://pkgs.fedoraproject.org/repo/pkgs/mod_wsgi/mod_wsgi-3.2.tar.gz/7e4f7f44
3f562f21f61d1bd06defa1d8/mod_wsgi-3.2.tar.gz

touch /etc/ld.so.conf.d/python2.7.conf
echo "/usr/local/Python2.7.3/lib/" > /etc/ld.so.conf.d/python2.7.conf
ldconfig

tar xf mod_wsgi-3.2.tar.gz
cd mod_wsgi-3.2
./configure --with-python=/usr/local/Python2.7.3/bin/python
make
make install
mod_wsgi 详细说明请见 mode_wsgi-x.x/README 如果 Apache 是编译的 同样需要指定 apache eg:--with-apxs=/usr/local/apache/bin/apxs 之后重新启动apache
/etc/init.d/httpd restart
在日志中查看 apache 中的 python 版本是否更新
[Fri Jun 17 14:04:21 2016] [notice] Apache/2.2.15 (Unix) DAV/2 
PHP/5.3.3 mod_ssl/2.2.15 OpenSSL/1.0.1e-fips 
mod_wsgi/3.2 Python/2.7.3 mod_perl/2.0.4 Perl/v5.10.1 
configured -- resuming normal operations
参考文档