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

这个时候就可以打开配置文件。如下图

这里面需要修改两处地方,首先是类似于下面的一行代码

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

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

<Directory "${INSTALL_DIR}/bin/apache/apache2.4.33/cgi-bin/">AllowOverride NoneOptions NoneRequire all grantedOrder allow,denyAllow from allAddHandler 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的位置准确地表达出来。


参考如下

windows环境下利用python进行CGI配置相关推荐

  1. java 内存映射文件进程间通讯_[转]Windows环境下利用“共享内存”实现进程间通信的C/C++代码---利用CreateFileMapping和MapViewOfFile...

    进程间的通信方式有很多种, 上次我们说了最傻瓜的"共享外存/文件"的方法. 那么, 在本文中, 我们即将学习"共享内存"的方式实现进程间的通信, 这是IPC最快 ...

  2. 成功解决:将后缀.pyx格式文件(linux环境)编译成pyd文件(windows环境下)实现python编程加载或导入

    成功解决:将后缀.pyx格式文件(linux环境)编译成pyd文件(windows环境下)实现python编程加载或导入 目录 解决问题 解决思路 解决方法 解决问题 .pyx格式文件,在window ...

  3. Windows环境下用python嵌入式环境跑程序可太方便了

    Windows环境下用python嵌入式环境跑程序可太方便了 1. 嵌入式包默认的文件夹设置 2. 建立python环境文件夹 3. 添加python索引包路径 4. 安装pip和requiremen ...

  4. 在没有网的windows环境下安装Python模块

    在安装python环境以及python的一些模块时,可能需要在没有网的windows环境下安装Python模块. python模块下载地址,几乎所有的模块都有:https://www.lfd.uci. ...

  5. windows环境下apache VC14+php境配置

    windows环境下apache VC14+php环境配置 版本选择:apache 2.4.41 VC14+php7.1.33 X64 一.安装Apache 1.登录 http://httpd.apa ...

  6. Windows环境下利用VS和mingw编译LLVM

    致敬 昨日山河齐恸震,今朝两星自九州 国士无双,先生千古 袁爷爷,吴爷爷,一路走好,谢谢两位爷爷的辛苦付出,未来交在我们手里吧,您们放心吧 文章目录 致敬 昨日山河齐恸震,今朝两星自九州 国士无双,先 ...

  7. windows环境下用python控制ftdi芯片FT232H

    通过搜索互联网资料,发现目前有两种流行的模块用于控制ftdi芯片,一种是pylibftdi,不过目前看到的资料只能控制USB转成串口,暂时无法控制I2C和SPI接口,这两种接口的控制程序还在开发计划中 ...

  8. windows环境下php安装composer和配置php全局变量

    今天在云服务器上办公,重新搭建的服务环境,做laravel压缩文件并下载需要引用插件zipper扩展,是新环境没有composer,需要安装,在同事电脑按下面顺序安装成功. 第一步.下载安装器 php ...

  9. Windows 10 下 Anaconda3 (Python 3.8) 配置 OpenCV-4.4.0

    Anaconda3 配置 OpenCV-4.4.0 我的小站.Github Anaconda指的是一个开源的Python发行版本,其包含了conda.Python等180多个科学包及其依赖项. Ope ...

最新文章

  1. 在国企当程序员是什么体验?
  2. cad模糊查询符号_万能模糊查询SQL
  3. Elasticsearch 实现自定义排序插件
  4. 协作更进一步:微软隆重介绍Visual Studio动态分享功能
  5. 130242014037-汤毓聪-实验一
  6. Numpy ndarry按行、列求和
  7. 疑似小米平板5通过3C认证:搭载8720mah双电芯方案
  8. typeof需要注意的内容
  9. stata14中文乱码问题
  10. 系统架构改进--多系统用户整合
  11. 实验室信息管理系统(LIMS)软件大盘点
  12. 博士申请 | 加拿大阿尔伯塔大学韩杰教授招收电子与计算机专业博士/博后
  13. 自我介绍计算机应用技术,计算机应用专业的新生自我介绍
  14. usc week 5 计算几何(包含凸包) 队内练习题
  15. 好用一些的真无线蓝牙耳机,音质好的真无线蓝牙耳机
  16. 你知道数据运营日常主要工作吗?
  17. <Android开发> Android vold - 第三篇 vold 的NetLinkManager类简介
  18. dcs常用的冗余方式_一种DCS系统冗余网络设备电源配置的制作方法
  19. Centos8安装常用软件及家用操作命令
  20. css根据某个角旋转,设置旋转中心点

热门文章

  1. 关于SQL注入,绕过逗号过滤
  2. Maltego注册问题
  3. 使用Spark Graphx 探索你不知道的金庸武侠世界
  4. 深度分析拼多多的首场618战事:“猫拼狗“的快打旋风
  5. 控制理论-Nichols Chart
  6. JavaScript事件触发
  7. 【附源码】计算机毕业设计java制造型企业仓储管理系统设计与实现
  8. 支持nfc的android手机型号,NFC手机有哪些 2017支持NFC功能的手机推荐
  9. python如何判断web访问来源是PC端还是手机端
  10. html中头向下的箭头怎么打出来,向下的箭头怎么打,最简单实用的电脑知识