python CGI MAC下的环境配置 之前查的资料都太老 Unix系统自带apache 配置CGI很好配 但是网上资料基本不符合要求坑了比较久,很坑
最后自己 仔细看了看 apache下 httpconf文件的内容来解决
一.环境 Unix系统自带apache2.4
二.去目录 /etc/apachectl2/ 找到 httpd.conf 配置服务器支持
打开 httpd.conf
1、找到 LoadModule cgi_module libexec/apache2/mod_cgi.so 去掉之前# 开放这个模块
2、 AddHandler cgi-script .cgi .py 加上.py
3、找到 <Directory "/Library/WebServer/CGI-Executables"> 修改如下
<Directory "/Library/WebServer/CGI-Executables">
AllowOverride None
Options ExecCGI
Order allow,deny
Allow from all
</Directory>
这个主要是 规定这个文件里面在服务器里 是否允许 访问 执行 修改等等
三、上面的配置就基本完成
接下来 只需要保存 并重启 apache sudo apachectl restart
将你自己的可执行 py文件 如 test.py 放到 /Library/WebServer/CGI-Executables 目录下 你就可以在浏览器 通过 localhost/cgi-bin/test.py 来访问了
Why?
1.为什么 test.py 要放到Library/WebServer/CGI-Executables 目录下
因为上面配置的 CGI生效文件夹的相关配置 是这个目录 与上面的< Directiory "/Library/WebServer/CGI-Executables">保持一致
当然可以放到其它目录 不过 文件夹配置要修改 下面的别名 以及 浏览器 访问的地址也要相应的修改
2.为什么是访问 localhost/cgi-bin/test.py 而不是访问 localhost/CGI-Executables/test.py
因为 httpconf 中给/Library/WebServer/CGI-Executables 取了个别名
默认配置 ScriptAliasMatch ^/cgi-bin/((?!(?i:webobjects)).*$) " /Library/WebServer/CGI-Executables/$1"
3.还有一些其它坑
比如文件访问权限 可以 通过修改 chmod 755 test.py
其它的访问localhost/cgi-bin/test.py 错误 可以在错误日志里面找
ErrorLog 文件位置 在 httpd.conf 文件中搜 ErrorLog 就能找到对应目录 一般是 /private/var/log/apache2/error_log,然后去对应目录下