像PHP一样运行Python脚本

9

服务器上安装了 Apache 2 + mod_wsgi + Python 2.6。

我想要像运行 PHP 脚本一样运行 Python 脚本。这个想法可能看起来有些傻,但是我已经习惯了(至少在学习 Python 的初期如此)。

例如:

PHP - http://example.com/script.php

Python - http://example.com/script.py

P.S. 我知道 mod_rewrite 和其他类似的技巧可以做到这一点。但这只是一个伪装,而不是直接运行。

更新:我的 .htaccess 文件。index.py 可以正常工作,但其他 Python 脚本会出现 404 错误。

<Files *.py>
SetHandler wsgi-script
Options ExecCGI FollowSymLinks
</Files>
 DirectoryIndex index.py
3个回答

3

这看起来不如运行一个wsgi应用程序酷,所以我建议您使用flask框架,它是一个简单而明智的框架。

这里有一个链接描述在mod_wsgi上安装过程

以后,您可能想考虑像Django、Pyramid、Grok等酷炫的框架...

如果您真的想像使用mod_php一样使用mod_wsgi,请查看Graham Dumpleton的出色答案。


我在某个地方写过关于mod_python的内容吗?我知道它已经过时了... WSGI只有一个运行脚本的点? - Ticksy
我想我误读了那篇文章。我认为你不能使用WSGI进行类似于mod_python / php的配置。我正在我的答案中添加相关链接。 - jpic
1
完全错误的说法是“它期望通过套接字连接到正在运行的 WSGI 进程。” 它并不像你认为的那样工作。 - Graham Dumpleton

2
从技术上讲,您正在做的应该有效,但请参见“AddHandler”方法以配置mod_wsgi(在以下链接中):

http://code.google.com/p/modwsgi/wiki/ConfigurationGuidelines#The_Apache_Alias_Directive

这样你就不必纠结于文件指令了。
SetHandler 做了类似的事情,但上下文中的所有文件都被视为 WSGI 脚本文件,即使它们可能是静态的 HTML 或 PHP 文件。你之前通过 Files 指令得以解决,但最好使用 AddHandler。
请注意,代码重载不会像你习惯的 PHP 一样工作。参见:

http://code.google.com/p/modwsgi/wiki/ReloadingSourceCode


我不喜欢使用WSGIScriptAlias的方式。 - Ticksy
WSGIScriptAlias是几乎每个人都使用的方式,因为通常人们会使用某种框架。强烈不建议从头编写WSGI代码,因为很容易出错。如果它不能用于其他.py URL,则可能是您Apache配置中其他部分存在问题,影响了它的正常运行。 - Graham Dumpleton

0

我使用 mod_cgi 像 PHP 一样运行 Python 脚本。

这里有一个由 Apache 提供的 tutorial。使用的 CGI 接口是由 Python.org 提供的 here

另外一个好的 tutorial 是在你安装并运行后可以使用的。

我想补充一下,配置 Apache 的方法更简单。

步骤 1:上述指南中没有提到的第一步是启用 Apache 中的 CGI 处理。

sudo a2enmod cgi

如果您的服务器配置了多线程 MPM(像我一样),则这将自动启用 mod_cgid。

步骤2:在Linux Mint 19.2中编辑您的httpd.conf或任何命名为/etc/apache2/sites-enabled的文件。

启用带有index.py的/脚本。

<VirtualHost *:80>
   DocumentRoot /your/www/html
   DirectoryIndex  index.py
</VirtualHost>

步骤三: 使其他Python脚本能够在同一文件夹或子目录中运行。

<Directory "/your/www/html/*">
    AllowOverride None
    Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
    Order allow,deny
    Allow from all
    AddHandler cgi-script .py
    AddHandler default-handler .jpg .png .gif .css .js .ico
</Directory>

ScriptAlias /   /your/www/html/

我遇到了两个必须遵守的注意事项,以便成功运行Python脚本。

  1. 在Linux中运行时,请确保每个python文件.py的行尾是Unix行尾。否则,Python脚本将无法运行。例如,Notepad++在其菜单工具栏中有编辑、EOL转换、Linux(LF)选项。

  2. 确保每个python文件.py的权限具有执行权限。
    在Linux Mint 19.2中,我右键单击文件,转到属性,转到权限,然后选中“执行:允许将程序作为文件执行”的复选框。或者只需运行以下命令:

chmod a+x python_script.py


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接