在Apache2中嵌入Python使用mod_python(Debian / Ubuntu,Fedora / CentOS,Mandriva,OpenSUSE)

在Apache2中嵌入Python使用mod_python(Debian / Ubuntu,Fedora / CentOS,Mandriva,OpenSUSE) 本教程介绍如何安装和使用mod_pytho ...

嵌入Python在Apache2中使用mod_python(Debian / Ubuntu,Fedora / CentOS,Mandriva,OpenSUSE)

版本1.0
作者:Falko Timme

本教程将介绍如何在Apache2上安装和使用各种发行版(Debian / Ubuntu,Fedora / CentOS,Mandriva,OpenSUSE)上的mod_python。 mod_python是一个Apache模块,它将Python解释器嵌入到服务器中。 它允许您在Py​​thon中编写基于Web的应用程序,该应用程序的运行速度比传统的CGI快多倍,并且可以访问高级功能,例如保留数据库连接以及访问Apache内部部件之间的数据库连接和其他数据的能力。

我不会保证这将为您工作!

1初步说明

我在已经安装了Apache2的IP地址为192.168.0.100的系统上进行了测试。

2 Debian / Ubuntu

对于Debian / Ubuntu,请参阅本教程: 使用mod_python(Debian Etch)在Apache2中嵌入Python

对于ISPConfig用户

在该教程中,我在默认的vhost中启用了mod_python,对其他vhosts没有影响,所以如果使用ISPConfig(从版本2.2.24开始),您可以使用该设置而不进行任何更改,并且仍然启用/禁用mod_python,网站基础。 ISPConfig使用Publisher处理程序 - 它不支持PSP处理程序

3 Fedora 9 / CentOS 5.2

3.1安装mod_python

要安装mod_python,我们只需运行:

yum install mod_python

3.2配置Apache

现在我们必须配置Apache,以便它可以处理Python文件。 有两种方法可以这样做。 第一个(和默认)一个是使用Publisher处理程序 。 它允许您编写纯Python脚本,扩展名为.py,将由Apache解释。 第二种方式是PSP处理程序 。 PSP代表Python服务器页面。 它允许您将Python代码直接嵌入到HTML代码中,类似于PHP。 PSP文件的扩展名为.psp

3.2.1出版者处理程序

要启用Publisher处理程序,我们必须编辑可以在/etc/httpd/conf.d/python.conf中找到的mod_python配置 。 此文件包含许多示例 - 我们对其进行备份,并从头开始重新创建该文件。 我正在使用默认的Fedora / CentOS文档根/ var / www / html这里的<Directory>指令 - 根据您的需要调整。 重要的行是AddHandler mod_python .pyPythonHandler mod_python.publisher

cp /etc/httpd/conf.d/python.conf /etc/httpd/conf.d/python.conf_orig
cat /dev/null > /etc/httpd/conf.d/python.conf
vi /etc/httpd/conf.d/python.conf

LoadModule python_module modules/mod_python.so

<Directory /var/www/html/>
  Options Indexes FollowSymLinks MultiViews
  AllowOverride None
  Order allow,deny
  allow from all
  AddHandler mod_python .py
  PythonHandler mod_python.publisher
  PythonDebug On
</Directory>

请注意:如果您在服务器上使用ISPConfig(从版本2.2.24开始),请放弃上述文件中的<Directory ...> ... </ Directory>部分,因为这将使目录中的mod_python全局启用有问题 在ISPConfig中,您可以在每个网站的基础上启用mod_python,而不是让您更好地控制网站是否可以使用mod_python。

之后重新启动Apache:

/etc/init.d/httpd restart

现在我们用纯Python代码创建一个Python测试脚本(例如/var/www/html/test.py

vi /var/www/html/test.py

def index(req):
  return "Test successful";

...并在浏览器中调用它(例如http://192.168.0.100/test.py )。 如果一切顺利,应在浏览器中显示测试成功

3.2.2 PSP处理程序

要启用PSP处理程序,我们必须编辑可以在/etc/httpd/conf.d/python.conf中找到的mod_python配置 。 此文件包含许多示例 - 我们对其进行备份,并从头开始重新创建该文件。 我正在使用默认的Fedora / CentOS文档根/ var / www / html这里的<Directory>指令 - 根据您的需要调整。 重要的行是AddHandler mod_python .pyPythonHandler mod_python.psp

cp /etc/httpd/conf.d/python.conf /etc/httpd/conf.d/python.conf_orig
cat /dev/null > /etc/httpd/conf.d/python.conf
vi /etc/httpd/conf.d/python.conf

LoadModule python_module modules/mod_python.so

<Directory /var/www/html/>
  Options Indexes FollowSymLinks MultiViews
  AllowOverride None
  Order allow,deny
  allow from all
  AddHandler mod_python .psp
  PythonHandler mod_python.psp
  PythonDebug On
</Directory>

请注意:如果您在服务器上使用ISPConfig(从版本2.2.24开始),请放弃上述文件中的<Directory ...> ... </ Directory>部分,因为这将使目录中的mod_python全局启用有问题 在ISPConfig中,您可以在每个网站的基础上启用mod_python,而不是让您更好地控制网站是否可以使用mod_python。 另请注意,ISPConfig不支持PSP处理程序 - 它使用Publisher处理程序。

之后重新启动Apache:

/etc/init.d/httpd restart

现在我们用HTML和Python代码创建一个小的PSP测试脚本(例如/var/www/html/test.psp

vi /var/www/html/test.psp

<html>
<body>
<h1><% req.write("Hello!") %></h1>
</body>
</html>

...并在浏览器中调用它(例如http://192.168.0.100/test.psp )。 如果一切顺利,应该显示你好! 在你的浏览器