Windows下使用Apache运行本地Python脚本和访问html教程,apachepython


最近学习到Python的cgi编程,捣鼓了一番,把自己的学习经验放出来。

一、安装Apache2.4服务器

你需要去官网下载。

地址:https://www.apachehaus.com/cgi-bin/download.plx或者http://www.apachelounge.com/download/。这两个地址一般情况下都是可以的。如果第一个地址下载提示 403 Forbidden,那就换第二个地址一般没什么问题的。

下载ok后解压,我的安装解压目录是D:\Program Files\ApacheHttpdServer (目录随意请不要使用中文),使用cmd切换到Apache的bin目录下,使用httpd -k install安装服务。如果成功便会提示installed,如图:


当然一般刚下载的文件是无法安装成功的。因为我们需要修改httpd.conf文件。

二、修改httpd.conf文件

进入D:\Program Files\ApacheHttpdServer\Apache24\conf文件夹下,找到httpd.conf使用好一点的文本编辑器打开。凡是#开头的都是注释,所以请要么删除,要么无视。

我们需要修改几个关键的元素。

1.ServerRoot,这个必须是正确的目录,它是Apache2.4的主目录。Listen 指示服务器的端口号,默认80,如果你的程序会占用那就修改掉好了。我的修改方案如下:

ServerRoot "D:/Program Files/ApacheHttpdServer/Apache24"

Listen 80

2.DocumentRoot,这个必须是正确的文件夹目录,末尾不能带/。这个目录用来存放静态资源页面,我们要访问的html文件就放在这下面。我的修改方案如下:

DocumentRoot "D:/Program Files/ApacheHttpdServer/Apache24/htdocs"

3.<IfModule alias_module>标签元素,其内部ScriptAlias指令规定Apache2.4访问二进制脚本文件的目录,这个很重要,一定要修改,我的修改方案如下:

<IfModule alias_module>
    ScriptAlias /cgi-bin/ "D:/Program Files/ApacheHttpdServer/Apache24/cgi-bin/"
</IfModule>

4.Directory标签元素,约定脚本文件的访问目录和权限,这个也很重要,一定要修改。我的修改方案如下:

<Directory "D:/Program Files/ApacheHttpdServer/Apache24/cgi-bin/">
    AllowOverride None
    Options +ExecCGI
    Order allow,deny
    Allow from all
    Require all granted
</Directory>

注意,是Require all granted而非Require all denied,错误使用后者将可能导致访问被拒绝。且Directory的目录和ScriptAlias的目录一致。

5.<IfModule mime_module>标签元素,内部关键指令AddHandler用来预订Apache2.4可以访问哪些格式的脚本文件。因此我们要加上.py

<IfModule mime_module>
    TypesConfig conf/mime.types
    AddType application/x-compress .Z
    AddType application/x-gzip .gz .tgz
    AddHandler cgi-script .cgi .py
</IfModule>

其他没有提到的都可以无视掉。温馨提示,所有修改动作都是在conf文件已有的元素上进行的覆盖操作,你需要找到需要修改的元素然后覆盖。请不要直接将我的方案copy后追加到conf文件后面。

好了,如果第一步服务未安装成功,请再次尝试使用httpd -k install安装服务。然后打开ApacheMonitor.exe点击start就ok了,如果start仍然失败请依次检查我提到的5点看是否修改正确。

如果ok你将看到下图,它是绿色的。


此时浏览器直接输入localhost,将看到It works。代表服务启动ok



三、编写python文件和html文件

我的代码hello.py如下:

#!D:\Programs\Python\Python36\python.exe
#-*- coding:UTF-8 -*-
print ("Content-type:text/html")
print ()
print ('<html>')
print ('<head>')
print ('<meta charset="gb2312">')
print ('<title>Hello Word - 我的第一个 CGI 程序!</title>')
print ('</head>')
print ('<body>')
print ('<h2>Hello Word! 我是来自菜鸟教程的第一CGI程序</h2>')
print ('</body>')
print ('</html>')

注意前两段的两个#号可不是注释哦,第一段#指令用来指定使用哪个python解释器来运行脚本(如果你还没有安装python那肯定跑不了的哦)。第二段指定脚本的输出编码。

我的test.html文件代码如下:

<html><head><meta http-equiv="Content-Type" content="text/html; charset=GBK">
<title>Hello Word - 我的第一个 CGI 程序!</title>
</head>
<body>
<h2>Hello Word! 我是来自菜鸟教程的第一CGI程序</h2>
</body>
</html>

然后将hello.py丢进cgi-bin目录,将test.html丢进htdocs目录。如下




然后分别输入http://localhost/cgi-bin/hello.py 和 http://localhost/test.html将访问成功



完结,谢谢观看。

相关内容

    暂无相关文章