编写我的第一个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


 


时间: 2024-10-13 23:55:13

编写我的第一个CGI代码——python学习的相关文章

python学习笔记(SMTP邮件发送)

想着给框架添加邮件发送功能.所以整理下python下邮件发送功能 首先python是支持邮件的发送.内置smtp库.支持发送纯文本.HTML及添加附件的邮件 之后是邮箱.像163.qq.新浪等邮箱默认关闭SMTP服务,需要我们手动打开 打开后通过发件人邮箱.授权密码 通过发件人的SMTP服务发送 代码如下: 1 #!/usr/bin/env python 2 # -*- coding: utf_8 -*- 3 4 from email.mime.text import MIMEText 5 fr

[读书]Python学习手册--属性管理1

属性管理-特性 一般开发这不必关心属性的实现,对工具的构建这来说,了解这一块对API的灵活性有帮助. 大多数情况下,属性位于对象自身之中,或者继承自对象所派生自的一个类. ----python学习手册 property property(fget=None, fset=None, fdel=None, doc=None) -> property attribute fget is a function to be used for getting an attribute value, and

Python学习第二天数组

1:Python定义数组:a=[0,1,2,3,4] ;   打印数组list(a); 这时:a[0]=0, a[1]=1, a[[2]=2...... 1.1:如果想定义一个很长的数组可以用到python函数range a=range(1000)生成1000个元素的一维数组, list(a) 打印数组显示 1.2:给生成的数组赋初始值:a = [0 for x in range(0, 1000)] 0表示初始值  x表示数组中的元素 range(995,1000)表示从995开始生成到1000

在ubuntu linux 中编写一个自己的python脚本

在ubuntu linux 中编写一个自己的简单的bash脚本. 实现功能:终端中输入简单的命令(以pmpy为例(play music python),为了区别之前说的bash脚本添加了py后缀),来实现音乐的播放.注:本人ununut中安装了audacious,所以就以audacious为例,来实现音乐的播放. 第一步:进入一个目录,最好是自己特别选定的,如果用文件浏览器可以新建一个名为pmpy空白文档文件:如果是用终端可以输入命令:vi pmpy(可能会因为位置问题,需要添加sudo) 第二

最全Pycharm教程(9)——创建并运行一个基本的Python测试程序

最全Pycharm教程(1)——定制外观 最全Pycharm教程(2)——代码风格 最全Pycharm教程(3)——代码的调试.运行 最全Pycharm教程(4)——有关Python解释器的相关配置 最全Pycharm教程(5)——Python快捷键相关设置 最全Pycharm教程(6)——将Pycharm作为Vim编辑器使用 最全Pycharm教程(7)——虚拟机VM的配置 最全Pycharm教程(8)——Django工程的创建和管理 1.主题 这里我们着重介绍Pycharm如何帮助我们创建并

Python学习(三):入门篇:Python中怎么编写类

Python中怎么编写类 Last Edit 2013/5/2 先看一个例子: #person.py class person: """class to representaion a person""" def __init__(self,name,age): self.name=name if 0<age<=150: self.age=age else: print 'age is no valid!' def display(s

Python学习(二):入门篇:python中流程控制与函数编写

python中流程控制与函数编写 Last Eidt 2014/5/2 转载请注明出处http://blog.csdn.net/jxlijunhao 一,流程控制 1)布尔逻辑 Python中利用True来表示逻辑真,False来逻辑假 not :非 and:与 or   :或 ==  :逻辑等 >>> False==True False >>> False==False True >>> not False True >>> Fal

【转】一个简单的python socket编程

原文链接:转载:一个简单的python socket编程 python 编写server的步骤: 1. 第一步是创建socket对象.调用socket构造函数.如: socket = socket.socket( family, type ) family参数代表地址家族,可为AF_INET或AF_UNIX.AF_INET家族包括Internet地址,AF_UNIX家族用于同一台机器上的进程间通信.      type参数代表套接字类型,可为SOCK_STREAM(流套接字)和SOCK_DGRA

Python学习教程:用Cython加速Python代码,快到你想不到

如果你曾经用Python编写过代码,那么等待某些代码块执行的时间可能比您希望的要长.虽然有一些方法可以提高代码的效率,但它很可能仍然比C代码慢.这主要归结为一个事实:Python是一种动态编程语言,它将许多东西移动到C在编译期间负责的运行时. 不过,如果您像我一样喜欢用Python编写代码,并且仍然希望加快代码的速度,那么您可以考虑使用Cython.虽然Cython本身是一种独立的编程语言,但是很容易将其融入到您的工作流程中,例如Jupyter Notebook.在执行时,Cython将您的Py