Apache+Python+Windows进行CGI编程新手上路时的各种坑

题外提醒:
1、本人有强迫症,且死要面子。所以不到完全迫不得已,不会“骚扰”身边的大佬,这让我在这破事上浪费了三四天,虽然最终对其理解更为深刻,但投入和产出严重不成比例,希望大家不要学我。脸皮厚一点,啥都解决了。
*但这种独自解决问题的畅快,别人又怎能理解呢? :p

2、暂不想写的太详细,网上相关的文章也很多,我也会给大家贴链接的,如果有详细的需求,请在下面留言区留言。若需求较多,再考虑写一个详细版的。

3、由于这次安装是几个巧合凑一块了,并且网上的内容很多是过时的,(而且用的是Windows不是Linux和Unix也很烦)所以异常艰辛,我算是踩过坑了,不想让后来者再踩,写出来希望能给大家一点帮助!

4、请结合文中链接阅读本文


**

正文:

**
1、下载Python我就不说了,我用的是Python27
2、Apache当然是在官网上下载啦。下载教程:http://jingyan.baidu.com/album/29697b912f6539ab20de3cf8.html?picindex=2
我在下载时发现
这里写图片描述
貌似是2.2系列的已经到最后一版了(end-of-life),为了以后的需求,我选择了2.4的版本,这也为我之后的一个坑埋下了伏笔。
3、像安装一般软件一样一路点下去就安好了Apache,打开Apache的文件夹后应该是这样的这里写图片描述
这里的各个文件夹代表什么呢?我挑几个重要的讲一下:

  • bin:命令行操作文件夹,使用cmd使要在此文件夹路径下发出命令
  • cgi-bin:一般CGI文件就放在这里
  • conf:配置、参数文件夹
  • htdos:二级目录,其他css,JavaScript等文件放在这里
  • logs:日志,其中error.log文件很重要,这是你进行不下去时,找到下一线索的重要途径

别的就请大家自己探索了,和本文关联不大

4、配置httpd. conf
给大家几个相关的链接,我就不用再复述了
http://www.cnblogs.com/biyuting/p/5986287.html
http://jingyan.baidu.com/article/0eb457e53c019f03f1a905c7.html

请注意几点:
5、Define SRVROOT “/Apache24”这一行:
最近版本的Apache好像是不用再改SRVROOT就可以了,但我没有试,不能确定,这里暂不讨论。我就按需要改的来。我的改法是:Define SRVROOT “D:/Apache24” 。改法很多,很多网上教程把这一句注释掉或删掉,然后把文件中所有的${SRVROOT}都改成自己电脑的绝对路径了,其实没那么麻烦,全改还容易错,并且如果以后要更改${SRVROOT},就会很麻烦。这是没有理解语法造成的。第一句是定义SRVROOT,所以以后的${SRVROOT}都等同于”D:/Apache24”,所以完全不必改动。

6、我在更改listen端口时,发生了件很诡异的事:我已经把80改为了8081,但是当我用浏览器访问时,不仅localhost:8081进入了页面,localhost也可以进入页面!连接两天都这样,直到第三天才突然发现localhost无法进入页面了。我现在还没琢磨清楚为什么,怎么会在端口只有一个8081的情况下,同时这两个都可以访问?欢迎各位讨论!

7、配置Directory时有个大坑:你在别人的教程中可能会看到这两行代码:

Order allow,deny  
Allow from all  

这是访问控制语句,但可惜的是,只有2.2版本的支持这样的语句,到2.4版本就变了,具体请详见http://blog.csdn.net/pzqingchong/article/details/52702575

8、使用cmd要以管理员身份打开

9、写下你的第一段CGI代码:(来自菜鸟教程)

#!/usr/bin/python3

print ("Content-type:text/html")
print ()                             # 空行,告诉服务器结束头部
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>')

10、将你的xxxx.py文件放到cgi-bin文件夹后要给它755权限,而在Windows环境下,我们只需右键,找到属性,在安全中选中“完全控制”即可。详见http://blog.csdn.net/a1083595345/article/details/52371677

11、当你把这一切都搞定,可能获得的仍是500错误页面。你查看error.log,发现有如下错误: 系统找不到文件 [client ::1:52335] couldn’t create child process: 720002: first.py [client ::1:51592] AH01223: couldn’t spawn child process: D:/Apache24/cgi-bin/first.py 这时我们回顾9中的那段代码
第一行:

#!/usr/bin/python3

或许你刚开始学Python,就有人或书告诫你务必在每段代码的开头都加上一句这个,但是很可惜地告诉你,这是在Linux/Unix环境下的代码,Windows环境下的代码应该为:(我一直找到了这个才恍然大悟https://stackoverflow.com/questions/6611311/running-a-py-file-in-browser 该楼主和我遇到了同样的问题,还好有好心人帮助了他,也帮助了我)

#!C:\Python27\python.exe

这里写图片描述

12、现在你应该可以用浏览器顺利打开你的CGI啦!:)


其他:

请一定利用好error.log,由于篇幅有限,我没有一一列举我遇到的问题时的log日志报错内容,但请你一定关注它,并积极利用网络寻找线索和答案!

祝各位有所收获,欢迎各位讨论!
谢谢!

  • 11
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 10
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值