嵌入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解释器嵌入到服务器中。 它允许您在Python中编写基于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 .py
和PythonHandler 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 .py
和PythonHandler 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
)。 如果一切顺利,应该显示你好!
在你的浏览器