Macbook实现python CGI
CGI配置
这部分建议参考网址:Mac配置CGI,写的很好很详细。我在此稍加总结概括,便于大家操作使用。
1. 检查Apache是否配置好
在终端输入如下代码检验Apache是否装好及版本:
sudo apachectl start
sudo apachectl -v
注:sudo apachectl start
输入后会要求输入密码(即Mac密码),且不会显示,输入后直接回车即可。
启动后,浏览器访问http://127.0.0.1或http://localhost ,看到页面显示 “It Works!” 说明开启成功。
2. 配置Apache
在终端输入sudo vim /etc/apache2/httpd.conf
对配置文件进行修改。共4步。
- 把下图写有CGI的这行前边的“#”去掉,取消注释:
- 在下图处添加 .py(Mac终端对文件的修改按i即可进入编辑):
- 把下图这句句首的注释“#”去掉:
- 找到如下的,修改当中的内容配置CGI-Executables:
上述操作完成后,按esc键并输入:wq保存退出,并输入sudo apachectl restart
重启Apache。
CGI程序编写
1. 代码实现
第二部分是程序的编写。如果要实现cgi网页,需要将python文件建在/Library/WebServer/CGI-Executables
路径(文件夹)下。
重点来了!!!
对于python文件的内容,我认为是CGI最关键的部分——python的输出内容,即为你想要实现的网页的HTML代码!
这部分我在其他博客里暂时还没有看到,但我认为对于cgi的理解非常重要。
举个例子,如果我们想要在网站输出一个标题和一个内容,那么对应的HTML代码内容应该为:
<html>
<head>
<meta charset="utf-8">
<title>这是标题</title>
</head>
<body>
<h1>这是内容</h1>
<h2>Hello world!</h2>
</body>
</html>
对应的网页界面应该如下:
而对于cgi而言,上面的HTML代码,就应该作为python中print的内容。同时保证在代码的最上面加上print("Content-type:text/html")
来发送给浏览器告诉浏览器文件的内容类型(HTTP代码),并在下一行输入print("")
来将前一行代码和后面的HTML代码分隔开。接下来,后面的内容,即为输出HTML代码。假设我们创建的python文件名为test.py,其具体代码如下:
print("Content-type:text/html")
print('')
print('<html>')
print('<head>')
print('<meta charset="utf-8">')
print('<title>这是标题</title>')
print('</head>')
print('<body>')
print('<h1>这是内容</h1>')
print('<h2>Hello world!</h2>')
print('</body>')
print('</html>')
运行结果如下图:
看上图的输出结果,是不是完全是HTML代码?
大家明白了吗?换句话说,你运行这个python代码后看到的输出结果,即为cgi读取的HTML代码的全部内容,相当于把输出的内容在HTML的编译器里跑了一遍出来的网页结果(此处的“相当于”只是为了便于理解,具体工作原理没有细究是否真正相同)。
2. 网页验证
为了确保CGI正常运行,还需要在终端修改test.py文件权限为 755,打开终端输入cd /Library/WebServer/CGI-Executables
先进入到当前文件夹,再修改权限:
cd /Library/WebServer/CGI-Executables
chmod 755 test.py
由于文件名为test.py
,因此需要在浏览器中输入http://localhost/cgi-bin/test.py进入test.py(点击即可直接进入)。得到结果如下:
说明CGI成功根据代码生成了网页。初体验成功。