编写我的第一个CGI代码——python学习

Posted 避雨亭

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了编写我的第一个CGI代码——python学习相关的知识,希望对你有一定的参考价值。

在编程学习网站学习Python语言,学习到cgi编程章节遇到了一些小问题,课程介绍的为linux环境的Apache配置方法,具体如下:

【linux环境配置方法:】

在进行CGI编程前,确保您的Web服务器支持CGI及已经配置了CGI的处理程序。

Apache 支持CGI 配置:

设置好CGI目录:

ScriptAlias /cgi-bin/ /var/www/cgi-bin/

所有的HTTP服务器执行CGI程序都保存在一个预先配置的目录。这个目录被称为CGI目录,并按照惯例,它被命名为/var/www/cgi-bin目录。

CGI文件的扩展名为.cgi,python也可以使用.py扩展名。

默认情况下,Linux服务器配置运行的cgi-bin目录中为/var/www。

如果你想指定其他运行CGI脚本的目录,可以修改httpd.conf配置文件,如下所示:

<Directory "/var/www/cgi-bin">
   AllowOverride None
   Options +ExecCGI
   Order allow,deny
   Allow from all
</Directory>

在 AddHandler 中添加 .py 后缀,这样我们就可以访问 .py 结尾的 python 脚本文件:

AddHandler cgi-script .cgi .pl .py

其实稍微有一些编程基础的小伙伴,应该很快能根据这一段得知在Windows环境的配置方法,只有路径有一些些区别,具体如下:
[Windows环境配置方法:]

1、将:ScriptAlias /cgi-bin/ "
/var/www/cgi-bin" 设置为实际的目录如:ScriptAlias /cgi-bin/ "D:/Apache/cgi-bin/"
2、将:<Directory "/var/www/cgi-bin">  
    AllowOverride None  
    Options None  
    Order allow,deny  
    Allow from all  
</Directory>
中的:<Directory "
/var/www/cgi-bin"> 设置为实际目录,如:<Directory "D:/Apache/cgi-bin/">
3、找到:AddHandler cgi-script .cgi之后,去掉前面的#号,并且在后面添加.py,如:AddHandler cgi-script .cgi .py

经过以上配置之后,将编写的python脚本文件,放到Apache目录下的cgi-bin中

在python文件中第一行配置python.exe路径:#!C:\\Python3.5.2\\python.exe

还有最重要的一点,在所有输出之前,先输出一个头
print("Content-type:text/html\\n")
最终的代码如:
#!C:\\Python3.5.2\\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>\')
以上算是完成了这个程序的基本配置了,但是配置完成之后,可以会发现出现500错误,Apache的错误日志如:
couldn\'t spawn child process: C:/Apache/cgi-bin/CGI_1.py
出现这个错误之后,查找网上各种答案,基本上和以上的操作都很类似,查到有些文章中会写应该修改AllowOverride None、Options None为
AllowOverride all、Options all,但是都不能解决,最终才使用过程中,发现当前使用的Windows 10系统,发现,每次修改写入文件,都需要管理员权限,
于是,将Apache装载D盘下面,重新试了以上的步骤,就能访问了。访问的结果可能会乱码,但是,文件开头和HTML都已经设置了编码,于是改一下浏览的编码,
就能看到不乱码的CGI内容了。

 文章参考:http://www.runoob.com/python/python-cgi.html;http://www.zh30.com/windows-apache-cgi-python.html


 

 





以上是关于编写我的第一个CGI代码——python学习的主要内容,如果未能解决你的问题,请参考以下文章

Rails 框架上的 Ruby CGI 代码

shell脚本--编写CGI代码

编写你的第一个Django,第一部分

最小汉明距离

Python自动化开发学习的第十二周----WEB基础(JavaScript+Dom)

Mybatis框架学习——我的第一个Mybatis程序