新手学习【菜鸟教程】Python CGI编程的几个坑(Windows系统)

写在前面的话

作为新手,在window10系统中学习Python CGI编程,按照教程却发现无法运行,终于解决各种坑,记录在次供小白参考,也欢迎大神指正。

下面我分安装、配置和调试两部分来讲。

安装

第一次在Windows系统中运行CGI程序,首先需要安装Apache,在教程中并没有提及安装Apache方法,下面我详细介绍安装的具体步骤:

  1. 重点参考:这个安装链接;
  2. 下载:根据操作系统位数选择,具体见原文链接;
  3. 修改路径:具体见原文链接;
  4. 第1坑:以管理员身份 启动CMD,这里一定要注意,不是直接启动CMD,而是以管理员身份,其中区别以及具体启动方法请点击链接
  5. 继续参考安装链接:输入D: 然后回车(要注意根据自己文件的实际位置)→输入cd D:\WAMP\Apache24\bin 然后回车(要根据自己文件的实际位置)→ 输入httpd -k install然后回车; 安装完成
  6. 输入net start Apache2.4后回车开启Apache服务
  7. 第2坑 输入net start Apache2.4后出现 发生服务特定错误: 1。解决办法参考此链接:打开D:\apache\httpd-2.4.25-x64-vc14-r1\Apache24\conf目录下httpd.conf文件,(D:\apache\httpd-2.4.25-x64-vc14-r1\Apache24是我的Apache安装目录),打开httpd.conf文件之后,找到Define SRVROOT,修改为自己的安装路径;
  8. 重新输入net start Apache2.4后回车开启Apache服务。

配置

安装Apache2.4之后,按照教程进行Web服务器支持及配置,这是cgi程序能成功运行准备工作。第3坑 教程上的方法是linux环境配置方法,Windows系统可参考Windows环境配置方法:。

  1. 将:ScriptAlias /cgi-bin/ “/var/www/cgi-bin” 设置为实际的目录如:ScriptAlias /cgi-bin/ “D:/Apache/cgi-bin/”(https://zhuanlan.zhihu.com/p/33764804);

  2. 将:
    AllowOverride None
    Options None
    Order allow,deny
    Allow from all
    中的: 设置为实际目录,如:

  3. 找到:AddHandler cgi-script .cgi之后,去掉前面的#号,并且在后面添加.py,如:AddHandler cgi-script .cgi .py。

调试

配置之后,按照教程编写运行第一个CGI程序。

  1. 参照教程编写一个CGI程序,文件名为hello.py,文件放在Apache2.4的cgi-bin目录中,程序内容如下:
#!/usr/bin/python3

print ("Content-type:text/html")
print ()                             # 空行,告诉服务器结束头部
print ('')
print ('')
print ('')
print ('Hello Word - 我的第一个 CGI 程序!')
print ('')
print ('')
print ('

Hello Word! 我是来自菜鸟教程的第一CGI程序

'
) print ('') print ('')
  1. 第4坑文件保存后修改 hello.py的文件权限为 755,作为小白在Windows系统中怎么修改,不会啊,送上链接,这里是文件夹的权限修改方法,文件是一样的操作。
  2. 在浏览器输入 http://localhost/cgi-bin/hello.py,出现第5坑,报500错误,在Windows系统中,程序第一行“#!/usr/bin/python3”需要指向python解释器的位置,比如我的改成“#!C:\Users\fangy\AppData\Local\Programs\Python\Python37\python.exe”
  3. 修改后继续运行出现第6坑,运行结果出现乱码,在Windows系统中,print ('')这行代码需要注释掉
  4. 修改完成后终于可以在win系统中成功运行。最终代码
#!C:\Users\fangy\AppData\Local\Programs\Python\Python37\python.exe

print ("Content-type:text/html")
print ()                             # 空行,告诉服务器结束头部
print ('')
print ('')
#print ('')
print ('Hello Word - 我的第一个 CGI 程序!')
print ('')
print ('')
print ('

Hello Word! 我是来自菜鸟教程的第一CGI程序

'
) print ('') print ('')

你可能感兴趣的:(新手学习【菜鸟教程】Python CGI编程的几个坑(Windows系统))