【发布时间】:2020-01-18 19:22:15
【问题描述】:
所以我想进入 React Native 开发并决定 Python 作为我的后端,但由于某种原因我无法正确配置 Apache。从请求中成功获取结果的唯一方法是在文档开头包含python.exe 的路径,如下所示:
!C:\Users\Name\PycharmProjects\AppName\venv\Scripts\python.exe
但问题是该文件不是由 Python 控制台执行的,如果我想通过手机访问它会出现此错误:
服务器遇到内部错误,无法完成您的请求。服务器过载或 CGI 脚本出错。
所以我的问题是:
有没有什么方法可以配置 Apache 来执行文件,而不需要 py 控制台,因此请求可能由没有安装 Python 控制台的设备处理?
【问题讨论】:
-
我不明白你的问题 - Apache 在服务器上运行,如果它运行 python 代码,那么它在服务器上运行,而不是在用户设备上。也许您不使用 Apache 运行它。您是否在 Apache 中安装了模块
mod_cgi或mod_fcgi或mod_python?或者可能使用更流行的方法并使用任何 Web 框架,例如 Flask/Django,而不是使用 Apache。 -
我的问题是每当我发送请求以获取用python编写的文件时,都会显示此错误。 “服务器遇到内部错误,无法完成您的请求。服务器超载或 CGI 脚本出错。” 我无法让 apache 正确执行文件,我已启用 mod_cgi.so。还在 httpd.conf 中创建了特定的
,它只负责 python 文件......可能会尝试 Django 或 Flask,但我只是好奇 apache 是否可以执行 python 文件。 -
顺便说一句:据我所知,它仅在子文件夹
cgi-bin/中运行文件,因此首先您可以尝试将代码放入此文件夹中。在 Linux 脚本上,第一行需要 shebang#!/usr/bin/env python,它应该是可执行的 -chmod a+x script.py -
如果您从移动设备连接到服务器上的
http://192.168.1.3/HelloWorld.py(使用 CGI),那么代码应该在服务器上执行,而不是在移动设备上。如果 CGI 不起作用,那么服务器可能会尝试将代码作为普通文件发送,然后移动设备可能会尝试在本地运行它,但这是错误的 - CGI 服务器应该在服务器上运行代码。一开始我会将代码放在子文件夹cgi-bin中以http://192.168.1.3/cgi-bin/HelloWorld.py运行,因为大多数CGI 服务器默认运行代码只在这个子文件夹中。 -
顺便说一句:CGI 也有一些规则如何生成它将发送给客户端的数据。它可能在开始时需要 HTTP 协议的额外信息 - 并且仅使用
print("Hello World")可能会生成错误数据并且发送它可能有问题。您应该在任何 CGI 脚本教程中都有它。见模块cgi