如何使用 Apache 处理 Python 个文件

How to handle Python files with Apache

所以我想进入 React Native 开发并决定 Python 作为我的后端,但由于某些原因我无法正确配置 Apache。成功从请求中获取结果的唯一方法是在文档的开头包含 python.exe 的路径,如下所示:

!C:\Users\Name\PycharmProjects\AppName\venv\Scripts\python.exe

但问题是文件是由 Python 控制台执行的,如果我想通过移动设备访问它 phone 我会收到此错误:

The server encountered an internal error and was unable to complete your request. Either the server is overloaded or there was an error in a CGI script.

所以我的问题是:

有什么方法可以配置 Apache 来执行文件,而不需要 py 控制台,所以请求可能由没有安装 Python 控制台的设备处理?

如果您使用 CGI 从移动设备连接到服务器上的 http://192.168.1.3/HelloWorld.py,则代码应在服务器上执行,而不是在移动设备上执行。如果 CGI 不起作用,那么服务器可能会尝试将代码作为普通文件发送,然后移动设备可能会尝试在本地 运行 它,但这是错误的 - CGI 服务器应该 运行 服务器上的代码。

一开始我会把代码放在子文件夹 cgi-bin 到 运行 中作为 http://192.168.1.3/cgi-bin/HelloWorld.py 因为大多数 CGI 服务器默认 运行 代码只在这个子文件夹。


在 Linux 脚本上需要 shebang

#!/usr/bin/env python

在第一行,它应该是可执行的

chmod a+x script.py

CGI 也有一些规则如何生成发送给客户端的数据。它可能在开始时需要 HTTP 协议的额外信息 - 并且仅使用 print("Hello World") 可能会生成错误的数据并且可能无法发送它。您应该在 CGI 脚本的任何教程中都有它。参见模块 cgi


到运行Python的代码Apache需要模块mod_cgimod_fcgimod_python

mod_cgimod_fcgi 可以 运行 不同语言的脚本:PythonPerlRuby 等,甚至 BashPHPC/C++/Java


Python3 有标准模块 http 也可以用作简单服务器

python3 -m http.server --cgi 

它会为您 运行 所在文件夹中的所有文件提供服务。它来自子文件夹 cgi-bin/ 的 运行s 个文件 - 请参阅文档:http