需要.py 文件与.html 和 .php 文件使用 mod_wsgi 在同一个目录中执行

需要.py 文件与.html 和 .php 文件使用 mod_wsgi 在同一个目录中执行

我正在运行带有 Python 3.6.8 和 Apache/2.4.37 的 CentOS 8.1。

我是 mod_wsgi 的新手。我找到了这个“hello world”示例并让它运行:

https://www.ionos.com/community/hosting/python/use-mod-wsgi-to-run-python-as-a-web-application-on-centos-7/

我遇到的问题是,这似乎要求将每个 .py 文件添加到其自己的 .conf 文件中,然后将其添加到 conf.d,如 /etc/httpd/conf.d/helloworld.conf 中所示:

WSGIScriptAlias /helloworld /var/www/python/helloworld.py

<Directory /var/www/python/>
Order allow,deny
Allow from all
</Directory>

并在 /var/www/python 之外运行 python (.py) 脚本。

这非常不方便,因为每个 Python 程序似乎都需要硬编码,而不是在 /var/www/html 目录中运行。我们在 Python 2 中进行开发,其中 .py 文件与 .html 和 .php 文件在同一目录中执行。在 CentOS 7 下,我们只需在 httpd.conf 中添加一个条目来识别所有 .py 文件并确保它们由 Python 执行。

我看到作者提到这是为了安全。有没有办法做到这一点既安全又不必收集服务器上的所有 .py 文件并为其创建 .conf 文件,如这个“hello world”示例所示?

如果我对使用 mod_wsgi 的看法完全错误,请赐教。

答案1

mod_wsgi 还有WSGIScriptAliasMatch这可能对你有用,例如

WSGIScriptAliasMatch ^/([^/]+).py /var/www/python/$1.py

如果你不需要较短的路径,你也可以使用WSGIScriptAlias对于整个文件夹:

WSGIScriptAlias /python/ /var/www/python/

这相当于:

Alias /python/ /var/www/python/
<Location /python>
    SetHandler wsgi-script
    Options +ExecCGI
</Location>

这类似于你使用 mod_python 的发布者处理程序

<Directory /var/www/python> 
   AddHandler mod_python .py
   PythonHandler mod_python.publisher 
   PythonDebug On 
</Directory>

更多示例请参考mod_wsgi 配置指南

相关内容