在 apache 上部署 python 项目

最近在用 python 搞微信公众号开发,由于公众平台强制要服务器 80 端口,手头又没有空闲的资源,于是想到通过现有的 apache 来跑 python 程序。通过检索找到了 mod_wsgi 这样一个 apache 扩展模块,恰好能满足需求。

简单科普一下:WSGI(Web Server Gateway Interface)是专为 Python 定义的 Web 服务器和 Web 应用程序或框架之间的一种简单而通用的接口。mod_wsgi 实现了 WSGI 标准,可以支持任何兼容该标准的 Python 应用。

一、安装 apache 开发包

首先需要安装 apache 开发包,因为 mod_wsgi 的安装需要依赖模块编译工具 apxs。

修改 /etc/httpd/conf/httpd.conf 中 servername 等配置项,使得 http://{server-ip}:{port} 能够正常访问。

二、升级 python 版本

CentOS 6 上的 Python 版本是 2.6.6,太过于老旧,很多新的模块无法使用。因此,我们需要拉源码包编译安装最新的 2.7 版本。

这里有一个坑:pip 需要依赖 Python 的 zlib 及 openssl 相关模块,而这些模块的编译以来于系统的相应开发库。因此必须先安装 zlib 和 openssl 开发库,然后再编译安装 Python,否则这些 python 模块不会参与编译。

安装后,将原有 python 替换为新版本:

执行 python -v,检测是否为新版本。如果报错:

则需要将 python2.7 的运行库路径加速动态装载器的搜寻路径:

然后通过 ldconfig 更新共享库的缓存即可:

注意:由于 yum 依赖于 python,我们需要让其使用 python2.6 版本,不然会报错。

三、安装 mod_wsgi 模块

这个 python 的模块需要通过 pip 安装,因此需要先升级 pip。通过一行命令搞定:

与上面 python 的安装相似,我们需要让其成为系统默认的版本:

然后通过 pip 安装 mod_wsgi 和 web.py:

apache 中加载 wsgi 模块,在 /etc/httpd/conf/httpd.conf 中一堆的 module 后加入:

四、部署 python 程序

在 /etc/httpd/conf/httpd.conf 中加入下面配置:

其中,wx 为 web 程序目录。main.py 的代码为:

测试 http://{server-ip}:{port}/wx/ 访问正常,说明配置 ok。

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据