在Apache Web服务器上部署基于python的脚本的初学者问题

时间:2018-09-19 11:11:18

标签: python apache

我正在尝试在本地计算机上运行一个简单的Web服务。在cgi-bin文件夹的Apache24目录中,添加了一个名为pywps.cgi的空文件,其内容如下:

#!C:\ProgramData\Anaconda2\envs\wps_env\python.exe
import sys
sys.path.insert(0, r"C:/pywps")
import os
os.environ['PYWPS_CFG']='C:/pywps/pywps.cfg'
os.environ['MPLCONFIGDIR']='C:/ProgramData/Anaconda2/envs/wps_env/Lib/site-packages/matplotlib/mpl-data'
# Note that WPS runs as apache user and not as you, so many more user variables might be needed.
# Restart Apache after adding one.
import pywps

index.html文件工作正常,但是当我尝试打开http://localhost/cgi-bin/pywps.cgi时出现错误:

  

内部服务器错误服务器遇到内部错误或   配置错误,无法完成您的请求。

     

请通过admin@example.com与服务器管理员联系以通知   他们发生此错误的时间以及您执行的操作   在此错误之前。

     

有关此错误的更多信息可能在服务器错误中可用   日志

我检查了错误日志,并进行了以下操作:

[Wed Sep 19 10:36:25.173859 2018] [core:notice] [pid 11404:tid 476] AH00094: Command line: 'C:\\Apache24\\bin\\httpd.exe -d C:/Apache24'
[Wed Sep 19 10:36:25.191859 2018] [mpm_winnt:notice] [pid 11404:tid 476] AH00418: Parent: Created child process 8080
[Wed Sep 19 10:36:26.134859 2018] [mpm_winnt:notice] [pid 8080:tid 416] AH00354: Child: Starting 64 worker threads.
[Wed Sep 19 10:36:27.134859 2018] [mpm_winnt:notice] [pid 1520:tid 420] AH00364: Child: All worker threads have exited.
[Wed Sep 19 10:37:03.781859 2018] [cgi:error] [pid 8080:tid 976] [client ::1:54670] End of script output before headers: pywps.cgi

我一直在寻找end of script output before headers,但不确定是什么原因引起的。我检查并重新检查了DocumentRoot路径以及cgi文件中的路径,但均无济于事。有人可以帮忙吗?

编辑

我尝试在设置解释器路径后添加以下内容:

print("Content-type: text/html\n\n")

似乎可以毫无问题地运行脚本,但不会输出所需的xml。用html修改以上xml会引发错误:

  

此页面包含以下错误:第2行第1列的错误:   文档末尾的额外内容是以下内容的呈现   页面直到第一个错误。

第2行包含上面显示的附加print语句。

0 个答案:

没有答案