互联网科技女猿1024

从Python到Apache再到CGI

2019-08-27  本文已影响0人  代艳霞

三天学完Python的我,没有想到一个CGI让我研究了两天,没有大牛带路的日子,我是要记录一下自己成长的过程了。也最终明白了一个道理,坚持很重要。。。。虽然我是前端,可是知识没有边界。。。。

目录


内容


一、Apache安装和启动(windowS)

  1. 下载地址:Apache

  2. 根据自己的电脑系统安装相应的版本,如图:


    下载地址
  3. 修改配置文件httpd.conf,具体地址,在apache安装目录里面如下图:

    配置文件地址
    • 修改默认目录,将SRVROOT默认的c:/Apache24,修改为apache24的安装目录,以我自己的安装为例:
      修改根目录地址
      地址应该是:D:/httpd-2.4.41-win64-VS16/Apache24写法如下:
      SeverRoot
    • 修改端口号如下图:


      端口号1
      端口号2
  4. 启动服务,找到bin目录下的ApacheMonitor.exe,双击,如图:

    启动服务
  5. 打开浏览器,如果显示如下效果,证明服务启动成功,效果如图:


    服务启动成功

自己的测试文件应该如何启动:
文件存放位置为htdocs,建立自己的测试文件hello.py,如下图:

文件目录

至此,apache安装并启动成功。

二、CGI启动
CGI的文件存放目录为 apache24 下面的cgi-bin,如图所示:

CGI目录

在此目录下,我新建了dyx.cgi测试文件,文件内容如下:

CGI文件内容

之后我们按照配置的路径,在浏览器打开文件,效果如下:


CGI启动失败

然后我们去查看一下log日志:目录为apache24下面的logs文件夹,如图:

Logs路径

提示如下图:


日志提示

然后经过研究,得出:
该错误的原因是cgi文件写的内容有缺失,之后在文件头部增加一行代码,来告诉服务用什么来解析文件,也就是要把python.exe的安装路径写进去,路径查找如下图:

python路径

代码如下:

#!C:/Users/v_yanxdai/AppData/Local/Programs/Python/Python37

print("Content-type:text/html\r\n\r\n")
print('')
print('<b>Hello--我是CGI 文件</b>')

然后浏览器打开页面依然报错,查看log日志,报错如下:

Log拒绝访问

之后,查看了很多文档,毕竟身边都是前端,也没法找人探讨,只能自己摸索,查看了几种解决方案,大致如下:

然而这些方案还是没有解决我的问题,极尽放弃的边缘,又坚持看了一些文档,把第一行的代码#!C:/Users/v_yanxdai/AppData/Local/Programs/Python/Python37修改为:#!C:/Users/v_yanxdai/AppData/Local/Programs/Python/Python37/python.exe,打开浏览器页面显示如下:

CGI启动成功

原因:
我们脚本中的第一行文本有点儿神秘。它看起来应该是一条注释,因为它起始于一个符号,但是它看起来太有意义,以至于不仅仅是注释。事实上,这个是被用来告诉操作系统将执行此脚本所用的解释器的名字。 每个脚本都应该把这一文本行作为它的第一行。

至此, CGI 启动成功。

注意:

如果CGI返回的内容是html页面,有可能会出现页面乱码的情况,效果如下:


乱码

增加如下代码即可

import codecs, sys
# CGI处理模块
import cgi, cgitb
sys.stdout = codecs.getwriter('utf-8')(sys.stdout.buffer)

效果如下:


成功

至此2天的时间已经耗完,好在问题得到了解决,总结经验就是,第一要学会看Log日志,第二就是,多尝试。第三就是遇到问题,要耐心解决,能解决问题比没有遇到任何问题更能增加我们对新知识的理解。

上一篇下一篇

猜你喜欢

热点阅读