如何使用Apache处理Python文件
因此,我想进入React本机开发,并决定将Python作为我的后端,但由于某些原因,我无法正确配置Apache。从请求中成功获取结果的唯一方法是在文档的开头包含到如何使用Apache处理Python文件,python,apache,cgi,Python,Apache,Cgi,因此,我想进入React本机开发,并决定将Python作为我的后端,但由于某些原因,我无法正确配置Apache。从请求中成功获取结果的唯一方法是在文档的开头包含到python.exe的路径,如下所示: !C:\Users\Name\PycharmProjects\AppName\venv\Scripts\python.exe 但问题是Python控制台执行的文件太多,如果我想通过手机访问它,我会遇到以下错误: 服务器遇到内部错误,无法完成您的请求。服务器过载或CGI脚本中存在错误 所以我的问题
python.exe的路径,如下所示:
!C:\Users\Name\PycharmProjects\AppName\venv\Scripts\python.exe
但问题是Python控制台执行的文件太多,如果我想通过手机访问它,我会遇到以下错误:
服务器遇到内部错误,无法完成您的请求。服务器过载或CGI脚本中存在错误
所以我的问题是:
是否有任何方式可以配置Apache来执行文件,而不需要py控制台,这样请求就可以由设备处理,哪个没有安装Python控制台?如果您从移动设备连接到http://192.168.1.3/HelloWorld.py
在服务器上使用CGI
则代码应在服务器上执行,而不是在移动设备上执行。如果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
protocol提供额外的信息,并且只使用print(“helloworld”)可能会生成错误的数据,并且可能无法发送。在CGI
脚本的任何教程中都应该有它。参见模块
要运行Python代码,Apache需要模块mod_cgi
,mod_fcgi
或
mod\u cgi
和mod\u fcgi
可以运行不同语言的脚本:Python
、Perl
、Ruby
,等等,甚至Bash
、PHP
或C
/C++/code>/Java
Python3有标准模块,也可以用作简单服务器
python3 -m http.server --cgi
它将为运行它的文件夹中的所有文件提供服务。它运行子文件夹cgi-bin/
中的文件-请参阅文档:我不理解您的问题-Apache在服务器上运行,如果它运行python代码,那么它在服务器上运行,而不是在用户设备上。也许你没有用Apache运行它。您是否已在Apache中安装模块mod_cgi
或mod_fcgi
或mod_python
?或者使用更流行的方法,使用Flask/Django之类的web框架,而不是使用Apache。“服务器遇到内部错误,无法完成您的请求。服务器过载或CGI脚本出错。”我无法使apache正确执行该文件,我已启用mod_CGI.so。还创建了httpd.conf中的特定文件,该文件仅负责python文件。。。可能会尝试Django或Flask,但我只是好奇apache是否可以执行python文件。顺便说一句:据我所知,作为标准,它只在子文件夹cgi-bin/
中运行文件,所以首先可以尝试将代码放在这个文件夹中。在Linux上,脚本需要shebang#/usr/bin/env python
在第一行,如果您从移动设备连接到http://192.168.1.3/HelloWorld.py
在服务器上(使用CGI),则代码应在服务器上执行,而不是在移动设备上执行。若CGI不工作,那个么服务器可能会尝试将代码作为普通文件发送,然后mobile可能会尝试在本地运行它,但这是错误的—CGI服务器应该在服务器上运行代码。开始时,我会将代码放入子文件夹cgi-bin
,以http://192.168.1.3/cgi-bin/HelloWorld.py
因为大多数CGI服务器默认只在此子文件夹中运行代码。顺便说一句:CGI还有一些规则如何生成数据并发送给客户端。在开始时,它可能需要HTTP协议的额外信息,并且仅使用打印(“Hello World”)
可能会生成错误的数据,并且可能无法发送。在CGI脚本的任何教程中都应该有它。参见模块