在mac上配置CGI:搞了两大天,遍寻个大论坛贴吧谷歌百度,教程倒是一大把,但都是这在之前几年的旧东西,现在的鬼技术蹭蹭蹭的升级,早已是面目全非,无奈只能自己摸索着尝试:
首先根据网上的教程打开你的 /private/etc/apache2/httpd.conf 配置文件,
这个文件里有三处 Directory :
在DocumentRoot下面的Directory不需要修改:
DocumentRoot "/Library/WebServer/Documents"
<Directory "/Library/WebServer/Documents">
需要修改其他两个<Directory >:
在第一个 Directory中把内容改成如下:
<Directory "/Library/WebServer/CGI-Executables">
AllowOverride None
Options ExecCGI
Order allow,deny
Allow from all
</Directory>
在第二个 Directory中把内容改成如下:
<Directory "/Library/WebServer/CGI-Executables">
Options All
</Directory>
因为看他们的配置教程都没有明确的说明具体改动的地方,导致我把两个Directory中的内容都改成了这个
AllowOverride None
Options ExecCGI
Order allow,deny
Allow from all
结果最后运行起来死都不知道啥问题!
然后 再修改 #LoadModule cgi_module libexec/apache2/mod_cgi.so,前面有#注释,把#去掉就可以了
LoadModule cgi_module libexec/apache2/mod_cgi.so
然后修改ScriptAliasMatch,他也是被注释上的,直接把前面的#去掉就好:
image.png
接着修改#AddHandler cgi-script .cgi,也是直接把前面的#去掉,然后在后面加上 .py,以便让服务器能解析.py文件:
image.png
完成以上配置后重启apache:
sudo apachectl restart
最后在 /Library/WebServer/CGI-Executables 的文件夹里新建一个hello.py的文件:
CGI-Executables 这个文件夹是CGI脚本的根目录,专门存放CGI脚本的地方
image.png
hello.py的内容:
#!/usr/bin/python
# -*- coding: UTF-8 -*-
print("Content-type:text/html")
print('')
print('<html>')
print('<head>')
print('<title>Hello</title>')
print('</head>')
print('<body>')
print('<h2>hello CGI</h2>')
print('</body>')
print('</html>')
这是目前最新python3.6的输出语法,之前2.x的版本的输出都没有小括号的。
注:
//头一行要加上这两句注释,不然会报语法错误
#!/usr/bin/python
#-*- coding: UTF-8 -*-
print("Content-type:text/html")
print('') //这里的输出空行必须要有,以便浏览器区分head,如果没有这句话;就会爆这个错:Internal Server Error
image.png
一开始报这个错。我也不知道是语法错误,后来根据apache 的log才知道是语法错误!!
最后要给hello.py 设置权限:
在存放hello.py 的文件夹目录上执行如下命令:
$: chmod 755 hello.py
最后在浏览器里打开: localhost/cgi-bin/hello.py
image.png
至此 完成,其实配置很简单,但是不知道的会绕很多弯路,希望对需要的人有帮助!
网友评论