mod_wsgi 的编译与安装

当我们使用了Linux操作系统发行版不包含的新版本的Python,我们会面临着需要使用相应版本的mod_wsgi的问题。比如Ubuntu 14.04 LTS 版本官方软件包里Python的最高版本是 3.4,相应的mod_wsgi也是和Python 3.4 编译的。当我们使用第三方的包把Python升级到了 3.6,相应地也需要把mod_wsgi升级。

办法是使用pip安装mod_wsgi。

$ sudo apt-get install python3.6-dev apache2-dev
$ . venv/bin/activate
$ pip install mod_wsgi

或者下载mod_wsgi的代码以后,本地编译安装

$ git clone https://github.com/GrahamDumpleton/mod_wsgi
$ cd mod_wsgi; git checkout <release-tag>
$ pip install .
# or
$ python setup.py install

这种把mod_wsgi当Python软件包编译安装的方法,更方便开发使用。其 mod_wsgi-express 能方便地运行 Python Web应用。如果要找到可以配置到apache2中的模块,则可参考如下命令的输出。

mod_wsgi-express module-config

如果我们使用的 Python是自己编译的,要注意mod_wsgi需要Python线程包的支持,且默认使用shared lib。因此在配置和编译Python时需要加上上述选项。

./configure --with-threads --enable-shared

上面的配置会使得python被安装到/usr (make altinstall)或/usr/local (make install) 目录中。在某些共享环境中,为了便于隔离,我们希望安装在其他位置,比如 --prefix=/opt/python-<version>

在下文中,为了编译出功能更全面的Python,作者列出了更多的依赖包 (Ubuntu 环境下): http://mbless.de/blog/2016/01/09/upgrade-to-python-2711-on-ubuntu-1404-lts.html

http://modwsgi.readthedocs.io/en/develop/configuration-directives/WSGIDaemonProcess.html

For setting venv specific lib sites.