运行像PHP这样的Python脚本

运行像PHP这样的Python脚本,php,python,apache,wsgi,Php,Python,Apache,Wsgi,服务器上有Apache2+mod_wsgi+Python2.6 我希望像PHP脚本一样从Python运行脚本。这个想法可能看起来很傻,但我已经习惯了(至少在开始学习Python时是这样) 例如: PHP- 蟒蛇- 另外,我知道mod_重写和其他类似的技巧可以做到这一点。但这只是一种伪装,而不是直接运行 UPD:My.htaccess文件。py可以工作,但其他python脚本会出现404错误 <Files *.py> SetHandler wsgi-script Options Exe

服务器上有Apache2+mod_wsgi+Python2.6

我希望像PHP脚本一样从Python运行脚本。这个想法可能看起来很傻,但我已经习惯了(至少在开始学习Python时是这样)

例如:

PHP-

蟒蛇-

另外,我知道mod_重写和其他类似的技巧可以做到这一点。但这只是一种伪装,而不是直接运行

UPD:My.htaccess文件。py可以工作,但其他python脚本会出现404错误

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

SetHandler wsgi脚本
选项ExecCGI FollowSymLinks
DirectoryIndex.py

这看起来不像运行wsgi应用程序那么酷,因此我建议您使用尽可能简单的sane框架

这里有一个链接描述了

以后,你可能想考虑一个很酷的框架,比如Django,皮拉米德,GROK……/P>


如果您真的想使用mod_wsgi,比如mod_php,请查看Graham Dumpleton的精彩答案。

从技术上讲,您所做的应该是可行的,但请参阅以下中配置mod_wsgi的AddHandler方法:

这样你就不必摆弄文件了

SetHandler做了类似的事情,但上下文中的所有文件都被视为WSGI脚本文件,即使它们可能是静态HTML或PHP文件。您没有受到影响,因为它符合文件的要求,但最好只使用AddHandler

请注意,重新加载代码不会像使用PHP时那样工作。见:


我使用

这里是Apache的一个示例。要使用的cgi接口由Python.org提供

我用过的第二个好东西是一旦你开始跑步

我要补充的是,有一种类似的方式来配置Apache

步骤1:上述指南中未提及的第一步是在apache中启用CGI处理

sudo a2enmod cgi

如果您的服务器配置了多线程MPM,这将自动启用mod_cgid,我就是这样

步骤2:编辑httpd.conf或在/etc/apache2/sites enabled中命名的任何文件 在LinuxMint19.2中

为/使用index.py启用脚本

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

DocumentRoot/your/www/html
DirectoryIndex.py
步骤3:启用其他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/

不允许超限
选项+执行CGI-多视图+符号链接所有者匹配
命令允许,拒绝
通融
AddHandler cgi脚本.py
AddHandler default handler.jpg.png.gif.css.js.ico
ScriptAlias//your/www/html/
为了成功运行python脚本,我遇到了两个必须遵守的警告

  • 在linux中运行时,请确保每个python file.py的行尾都是 unix行结尾。否则,python脚本将不会运行。例如 记事本++的菜单、工具栏中有编辑、EOL转换、Linux(LF)

  • 确保每个python file.py的权限都有执行权限。
    在Linux Mint 19.2中,我右键单击文件,转到属性,转到权限, 然后选中Execute:Allow executing program as file处的复选框。或者只是 运行以下命令:

  • chmoda+xpython\u script.py


    快乐的Python编码

    我在什么地方写过关于mod_python的文章?我知道他已经过时了。。。WSGI运行脚本只有一个要点?我想我看错了这篇文章。我认为您不能使用WSGI进行配置。我正在给我的答案添加一个相关链接。说“它希望通过套接字连接到正在运行的WSGI进程”是完全错误的。它不像您想象的那样工作。WSGIScriptAlias的工作方式​​我不喜欢.WSGIScriptAlias实际上是每个人使用的方式,因为人们通常使用某种描述的框架。非常不鼓励您从头开始编写WSGI内容,因为它太容易出错。如果它对其他.py URL不起作用,那么在Apache配置的其余部分可能会发生其他事情,这可能会影响它。