Mac apache 配置python CGI

在mac上配置CGI:搞了两大天,遍寻个大论坛贴吧谷歌百度,教程倒是一大把,但都是这在之前几年的旧东西,现在的鬼技术蹭蹭蹭的升级,早已是面目全非,无奈只能自己摸索着尝试:

首先根据网上的教程打开你的 /private/etc/apache2/httpd.conf 配置文件,
这个文件里有三处 Directory :
在DocumentRoot下面的Directory不需要修改:

DocumentRoot "/Library/WebServer/Documents"

需要修改其他两个

在第一个 Directory中把内容改成如下:


     AllowOverride None
     Options ExecCGI
     Order allow,deny
     Allow from all

在第二个 Directory中把内容改成如下:


     Options All

因为看他们的配置教程都没有明确的说明具体改动的地方,导致我把两个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脚本的地方


Mac apache 配置python CGI_第1张图片
image.png

hello.py的内容:

#!/usr/bin/python
# -*- coding: UTF-8 -*-

print("Content-type:text/html")
print('')                      
print('')
print('')
print('Hello')
print('')
print('')
print('

hello CGI

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

这是目前最新python3.6的输出语法,之前2.x的版本的输出都没有小括号的。
注:
//头一行要加上这两句注释,不然会报语法错误
#!/usr/bin/python
#-*- coding: UTF-8 -*-

print("Content-type:text/html")
print('') //这里的输出空行必须要有,以便浏览器区分head,如果没有这句话;就会爆这个错:Internal Server Error


Mac apache 配置python CGI_第2张图片
image.png

一开始报这个错。我也不知道是语法错误,后来根据apache 的log才知道是语法错误!!

最后要给hello.py 设置权限:
在存放hello.py 的文件夹目录上执行如下命令:

$: chmod 755 hello.py

最后在浏览器里打开: localhost/cgi-bin/hello.py


Mac apache 配置python CGI_第3张图片
image.png

至此 完成,其实配置很简单,但是不知道的会绕很多弯路,希望对需要的人有帮助!

你可能感兴趣的:(Mac apache 配置python CGI)