文章更新于:2020-03-05
本文默认你安装过 python 和 配置过 web 环境了
注1:安装 python 参见: python 的安装使用和基本语法
注2:配置 web 环境参见: Windows&linux使用集成环境搭建 web 服务器
注3:linux 配置 CGI参见:linux 配置 python3 CGI
注4:更多 CGI 配置参见:python CGI 编程实践
一、修改配置文件
学了 python 以后光想耍两招儿?各位煤老板,来吧!用 python 写个网页程序,炫酷!
1、修改 ScriptAlias
ScriptAlias /cgi-bin/ "${SRVROOT}/cgi-bin/"
ScriptAlias指令使Apache允许执行一个特定目录中的CGI程序。当客户端请求此特定目录中的资源时,Apache假定其中所有的文件都是CGI程序并试图运行它。
说白了就是这行代码指定了你网站 CGI 程序的存放位置。
#1、那什么是 CGI 程序?
CGI 程序就是说这玩意不是简单的 HTML 静态页面,而是将请求发送给这个程序,然后由这个程序处理之后再返回响应信息给服务器,服务器在将返回值作为 HTML 返回。
#2、那各位煤老板看到这就要问了,那为什么需要这玩意?
因为这玩意处理能力比较强大,就比如说今天我们配置的 python-cgi 环境就是其中一种。
#3、那煤老板又有疑问了,那服务器怎么知道哪些需要这样处理?
好办,上面那一行代码就是处理这个问题的。
上面代码定义了一个 /cgi-bin/ 目录,
也就是说,访问 x.x.x.x/cgi-bin/ 后面的所有页面都当成 CGI 程序进行处理。
而且这个 /cgi-bin/ 后面实际指向 “${SRVROOT}/cgi-bin/” 目录。
比如访问 localhost/cgi-bin/hello.py 实际访问的是 localhost 主机下的 ${SRVROO}/cgi-bin/hello.py 文件。
#4、${SRVROOT} 是什么东西?
${SRVROOT} 是 Apache 的安装路径,用到这个地址的时候写这个变量就可以了。如下图,这个在配置文件中定义着。
2、补充知识点!重要!
注1:修改过ScriptAlias
以后不需要其他处理,即可在该目录下运行CGI
程序。
注2:不但是这样此目录下的所有文件都会被当做CGI程序处理,如果你放一个HTML文件进去,访问的时候是会出错的。
注3:那有没有折中的办法呢?有。在主配置文件中建立对应的目录,并AddHandler如下图所示,即可只处理该目录下 .py
结尾的文件,而其他文件正常处理。
二、写 CGI 程序
1、尝试用 python 写一个 CGI 程序
#1、在我们设置到的 cgi-bin 目录下建立一个 .py 的文件,并写入内容。
其中第一行用来指定此文件的解释器,也就是 python.exe 的位置。
第二行输出空行告诉服务器头部信息结束,下面的是正文。
#2、浏览器尝试访问
#3、注意解析器必须指定到 /python.exe ,第二行必须输出空行,不然会出现如下错误:
2、尝试将 cgi-bin/ 换成其他字符
#1、修改配置文件,比如我们将 cgi-bin 换成 python ,并指定路径到 c: est
并在其目录下写一个 world.py 的CGI程序。
#2、访问一下~ ok,shit!居然没权限了!!
#3、原来是咱跑太远了,人家不认了。不过也好办,看
#4、重启服务,重新访问一下