windows环境下利用python进行CGI配置

windows环境下利用python进行CGI配置(win10,visual stdio 2017中的python3.6)

写在前面,初学python,看到python的CGI编程这一章的时候尝试在教程的指导下完成例子的内容,但是在完成的过程中遇到了大量的问题,可能和本人对编程不熟悉有关,现在将过程以及遇到的问题总结如下,使用的工具是集成了Apache的wampserver以及集成了python3.6的visual stdio 2017。
1.首先是进行服务器配置,这里使用的是集成了Apache的wampserver(以下将以wamp简称)wamp软件大家可以去官网下载,这个软件集成了apache,php,MySQL。下载好后直接进行安装就可以。安装过程就不再赘述,大家可以去百度经验。然后最主要的是对配置文件进行修改,首先运行wamp,然后点击地址栏的wamp图标,接着依次点击Apache,接着点击httpd.conf

wamp图标

这个时候就可以打开配置文件。如下图
这里写图片描述
这里面需要修改两处地方,首先是类似于下面的一行代码

  ScriptAlias /cgi-bin/ "${INSTALL_DIR}/bin/apache/apache2.4.33/cgi-bin/"

上面是修改过的,需要修改的是双引号内的路径,这个路径是存放.py文件的地方,注意路径一定要对,最后的斜杠要加上。
然后是,修改类似于下面的一行代码:

<Directory "${INSTALL_DIR}/bin/apache/apache2.4.33/cgi-bin/">
    AllowOverride None
    Options None
    Require all granted
   Order allow,deny
    Allow from all
  AddHandler cgi-script .cgi .pl .py
</Directory>

这也是修改过的,在这一段代码的最开始,也像上面一段,修改成py文件存放的地址。为了能够使用py文件进行CGI编程,所以需要在代码块里添加上面的倒数第二行,使其能够识别py文件。
2.接下来就是写一段简单的代码,这个可以在网上找到例程,这里贴出一个自己修改过的一段,里面有两个需要注意的问题(将在后面的问题中进行说明):

#!D:\software\Microsoft Visual Studio\Shared\Python36_64\python.exe
# -*- coding: utf-8 -*-
print ("Content-type:text/html\n\n")
print ('<html>')
print ('<head>')
print ('<meta charset="utf-8">')
print ('<title>Hello Word - 我的第一个 CGI 程序!</title>')
print ('</head>')
print ('<body>')
print ('<h2>Hello Word! 我是CGI程序</h2>')
print ('</body>')
print ('</html>')

将此文件另存为hello.py文件放在修改在配置文件的路径里面即可
3.接下来便可以在浏览器地址栏中输入http://localhost/cgi-bin/hello.py即可以看到以下界面
这里写图片描述
这里的乱码应该是对中文的支持不好(以后将查看是什么问题)
至此已经完成了这个例程的学习。


接下来将对自己遇到的几个问题加以说明
1.首先就是在修改配置文件的时候,路径的格式不对,这个会导致根本找不到文件,也就更别提显示了,这里的路径一定要准确以及格式要正确。
error日志中会显示如下信息(使用wampserver的可以打开安装路径wamps路径下的logs文件夹里面的apache error文件):

[Sun Aug 05 16:49:48.674476 2018] [cgi:error] [pid 13396:tid 1228] (OS 2)系统找不到指定的文件。  : [client ::1:57556] couldn't create child process: 720002: hello.py

最后在路径的最后一个文件夹名后一定要加一个斜杠,不然访问不到这个文件夹下的文件。
2.配置文件弄好了之后,又遇到了另一个错误,500错误,internal error,这个错误在error log中将显示为如下信息:

[Sun Aug 05 18:50:40.682220 2018] [cgi:error] [pid 13396:tid 1212] [client ::1:58747] malformed header from script 'hello.py': Bad header: <html>

这个是说头文件有错误,在上面提到了代码块中需要注意的地方就是这里,

#!D:\software\Microsoft Visual Studio\Shared\Python36_64\python.exe
# -*- coding: utf-8 -*-
print ("Content-type:text/html\n\n")
print ('<html>')
print ('<head>')
print ('<meta charset="utf-8">')
print ('<title>Hello Word - 我的第一个 CGI 程序!</title>')
print ('</head>')
print ('<body>')
print ('<h2>Hello Word! 我是CGI程序</h2>')
print ('</body>')
print ('</html>')

这里的第三行后面需要加两个换行,表示的是有一个空行(两次换行产生了一个空行),告诉服务器结束头部。这个时候才能正确的访问以及显示。


最后需要提及的是python中print函数需要加括号,这个问题困扰了我好久,因为不管怎样保存文件都有错误,才知道自己在网上复制的代码是不一样的,print函数需要加括号。
有疑问的是在最后这个代码块里的第一行的注释,里面是python解释器的位置,网上说需要很准确的加上,但是感觉这是一个注释,不知道起的是什么作用,将这个路径改成不对之后,确实会出现错误。error log会显示如下:

[Sun Aug 05 19:48:38.755296 2018] [cgi:error] [pid 13396:tid 1212] (OS 5)拒绝访问。  : [client ::1:59657] AH01223: couldn't spawn child process: D:/software/wamp64/bin/apache/apache2.4.33/cgi-bin/hello.py

所以这个代码块也是需要非常重视的,需要将python.exe的位置准确地表达出来。


参考如下

猜你喜欢

转载自blog.csdn.net/qq_42856481/article/details/81434587