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/python3print ("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日志报错内容,但请你一定关注它,并积极利用网络寻找线索和答案!
祝各位有所收获,欢迎各位讨论!
谢谢!
Apache+Python+Windows进行CGI编程新手上路时的各种坑相关推荐
- python cgi库_《Python 数据库 GUI CGI编程》
1. 上次写在前面,我们介绍了一篇关于开始使用Python.今天我们将介绍Python数据库,GUI, CGI编程和Python和Python的区别.2.连接到数据库标准Python数据库接口是Pyt ...
- [转载] 第一个Python CGI编程和配置
参考链接: Python中的CGI编程 1.什么是CGI CGI(Common Gateway Interface),通用网关接口,它是一段运行在服务器上的程序.CGI程序可以是Python脚本.PE ...
- 新手上路注意事项及驾车技巧
新手上路总则 其实,每一个新手都曾经历过上路的窘迫,如果能够顺利度过最初实习期的话,将会受益终生.每一位驾驶员都经历过初次上路的忐忑不安,眼盯前方,双手紧握转向盘,身体僵直前倾,远离前车,缓慢前行,起 ...
- 新手学习【菜鸟教程】Python CGI编程的几个坑(Windows系统)
写在前面的话 作为新手,在window10系统中学习Python CGI编程,按照教程却发现无法运行,终于解决各种坑,记录在次供小白参考,也欢迎大神指正. 下面我分安装.配置和调试两部分来讲. 安装 ...
- python必备基础代码-新手上路必学的Python函数基础知识,全在这里了(多段代码举例)...
原标题:新手上路必学的Python函数基础知识,全在这里了(多段代码举例) 导读:函数是Python中最重要.最基础的代码组织和代码复用方式.根据经验,如果你需要多次重复相同或类似的代码,就非常值得写 ...
- python cgitb_python CGI 编程实践
文章更新于:2020-03-05 一.Web服务器的支持与配置 在进行CGI编程之前,请确保Web服务器支持CGI,它被配置为处理CGI程序.所有对由HTTP服务器执行的CGI程序保存在一个预先配置的 ...
- Windows内核新手上路2——挂钩shadow SSDT
Windows内核新手上路2--挂钩shadow SSDT 文章核心内容:安全软件窗口保护.安全输入.截屏保护的一些思路.挂钩NtUserFindWindowEx.NtUserGetForegroun ...
- Python基础教程(十):CGI编程、MySQL数据库
Python CGI编程 什么是CGI CGI 目前由NCSA维护,NCSA定义CGI如下: CGI(Common Gateway Interface),通用网关接口,它是一段程序,运行在服务器上如: ...
- python Web 之基石 - - CGI 编程 (基于python3)
一 CGI 编程之前缀篇 1CGI 入门简介 2Apache2 的安装以及配置运行环境搭建 二 开始 CGI programming 之旅 HTTP相关知识讲述 - - - first demo 随后 ...
最新文章
- 浏览器渲染阻塞与优化-详解推迟加载、异步加载。
- qt 手动设置控件的位置
- 大牛推荐的15本学习数据分析挖掘的好书
- Java Socket编程 文件传输(客户端从服务器下载一个文件)
- Linux使用locate命令查找,Linux如何使用locate命令查找数据(2)
- 独辟蹊径,Python打造新型基于图像隐写术的C2通道
- cisco packet tracer实验案例-重置路由器ENABLE特权密码
- python中pd是什么意思_python怎么用pd导入xlsx
- java catch用法_java – 如何避免使用try … catch块
- windows安装python3_windows下同时安装python2和python3
- 时间序列分析:使用Pandas探索能源数据集
- c语言 众数,C语言实现查找一组数中的众数
- 服务器网卡光模块位置,收藏:详解服务器、磁盘和网卡知识
- 【定位原理揭秘第三期】室内定位技术原理揭秘
- 第14届军警狙击手世界杯:中国队包揽全部冠军
- Sansen精粹阅读笔记(1)OTA和OCA (电流放大器)
- Centos8 磁力链BT地址
- 函数模板的特例化(专用化)以及类型含有const的特殊情况
- 源码编译安装git过程记录
- 0111总结-函数与极限-高等数学
热门文章
- 用Pytest+Allure生成漂亮的HTML图形化测试报告
- XMind Zen 2020 10.3.1注册使用
- 《算法图解》学习笔记(十):K 最近邻算法(附代码)
- 阿里云mysql主从有延迟怎么办_MySQL主从数据库同步延迟问题解决
- 线程学习基础(1):单线程爬虫和多线程爬虫的效率比照
- 数字人民币跟第三方支付的区别
- 华为车BU机器学习算法工程师面试经验
- 2.淘宝购买行为分析项目——Hive查询、Sqoop的介绍与使用、SQLyog的安装与使用、Superset的概述与安装使用
- vscode下载很慢的解决办法
- 5G NR - 38.101-1协议笔记(一)