在学习Python的CGI编程中,碰到了一些问题,在此处记录下来。地址:Python CGI编程
按照教程配置环境的过程中,首先报错命令不存在。
搜索后无果,未能解决没有这两个指令的问题,仅得知ScriptAlias和AddHandler 指令,是apache的指令。在《Apache服务器指令大全》中有这么一段:
3.6、ScriptAlias
该指令除了把目标目录标记为包含CGI脚本以外,和Alias功能相同。
3.7、ScriptAliasMatch
该指令出使用规则表达式以外,和ScriptAlias命令相似。
了解到这两个指令的作用应该是修改了某个配置文件的某些配置。
于是重新搜索Linux、Python、CGI、Apache指令、ScriptAlias等关键词,发现通过修改httpd.conf配置文件即可完成ScriptAlias、ScriptAliasMatch的配置。
第一步就发现,找不到#ScriptInterpreterSource Registry ,只好按照文中所言,自行添加。
添加完毕,完成步骤2、3后,尝试访问py文件:http://168.***.**.***/cgi-bin/hello2.py ,显示500错误。
想了下发现没有重启apache,执行service httpd restart ,成功关闭,但是启动却失败了。以为有点类似重启pptpd服务的时候,由于线程仍在运行而导致的。索性直接reboot了。结果reboot后依旧无法start ,找了好久原因,没找到。(现在反省发现,修改了配置文件后,无法启动服务,应该第一时间检查修改的配置文件。)
于是只好卸载阿帕奇后,重新安装。CentOS卸载Apache方法 ,安装使用yum源安装。
安装好后,搜索ScriptInterpreterSource 关键字发现,这个指令居然只在Windows环境下下有效...仔细一看上面的教程,是Windows的环境。
所以明显是参考了错误的教程,又重新查找教程,看到了这个贴:apache+cgi+python配置
照做之后,访问hello.py,依旧出现了500错误。
查看日志、搜索500错误后,怀疑是否py文件输出的内容不对,如没有输出空格隔开http头等,又怀疑是否python版本不对,print需要加() ,尝试数次后,终于成功啦。
环境搭建完成后的如果出现500错误,很可能是py文件本身有问题。
另外,在搜索500错误的关键词时,找到了这篇博客:Python + win10 +Apache CGI 错误500的方法
终于明白ScriptInterpreterSource 是干嘛的,以及为何只能在Windows环境中有效。