CGI(Common Gateway Interface),通用网关接口,它是一段程序,运行在服务器上如:HTTP服务器,提供同客户端HTML页面的接口

Mac上是自带CGI运行程序的,但是直接是不可以用,需要进行相应的修改才可以正常运行。

1、打开httpd.conf文件,直接打开是编辑不了的,需要用root权限,具体操作为:sudo vim /etc/apache2/httpd.conf打开文件。找到

LoadModule cgi_module libexec/apache2/mod_cgi.so并取消注释。

Web 服务器支持及配置

在你进行 CGI 编程前,确保您的 Web 服务器支持 CGI 及已经配置了 CGI 的处理程序。

Apache 支持 CGI 配置:

设置好CGI目录:

ScriptAlias /cgi-bin/ /var/www/cgi-bin/

所有的HTTP服务器执行 CGI 程序都保存在一个预先配置的目录。这个目录被称为 CGI 目录,并按照惯例,它被命名为 /var/www/cgi-bin 目录。

CGI 文件的扩展名为 .cgi,python 也可以使用 .py 扩展名。

默认情况下,Linux 服务器配置运行的 cgi-bin 目录中为 /var/www。

如果你想指定其他运行 CGI 脚本的目录,可以修改 httpd.conf 配置文件,如下所示:

<Directory "/var/www/cgi-bin">
AllowOverride None
Options +ExecCGI
Order allow,deny
Allow from all
</Directory>

在 AddHandler 中添加 .py 后缀,这样我们就可以访问 .py 结尾的 python 脚本文件:

AddHandler cgi-script .cgi .pl .py

2、在AddHandler cgi-script .cgi后面增加.py,表示可以访问.py结尾的python脚本文件,也可以增加.php,表示可以访问.php结尾的脚本文件。(我自己的理解)

3、配置完成后在/Library/WebServer/CGI-Executables下创建hello.py文件,内容如下:

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

print "Content-type:text/html"
print
print '<html>'
print '<head>'
print '<meta charset="utf-8">'
print '<title>Hello World - 这是一个测试程序!</title>'
print '</head>'
print '<body>'
print '<h2>Hello World! 我是用来测试cgi的</h2>'
print '</body>'
print '</html>'
4、文件创建好后修改权限 ,同样需要root权限用户。

sudo chomd 755 hello.py

5、重启appachectl服务

sudo apachectl restart

6、效果如下所示

2.打开apache

  1. apachectl start

3.在浏览器输入

  1. localhost:8080
如果得到 It’works,说明apache运行成功

brew安装的apache默认端口是8080,mac自带的apache默认端口是80

 
4.用sublime打开httpd.conf文件,当然用任意一个文本编辑器打开都行

  1. subl /usr/local/etc/apache2/2.4/httpd.conf
  2. 当然没有sublime的话,可以用图形化界面打开
  3. open /usr/local/etc/apache2/2.4/
  4. 在Finder中用一个文本编辑器打开httpd.conf

5.修改httpd.conf文件

  1. 修改成:
  2. DocumentRoot "/Users/deng/Sites”
  3. <Directory "/Users/deng/Sites">
  4. ScriptAlias /cgi-bin/ "/Users/deng/Sites/cgi/"    //放在Directory外
  5. 如果注释了下面三句,就取消注释
  6. LoadModule cgi_module libexec/apache2/mod_cgi.so

  7. AddType text/html .shtml
  8. AddOutputFilter INCLUDES .shtml
  9. 在文件最后加上以下内容
  10. AddHandler cgi-script .cgi .sh .pl
  11. <Directory "/Users/deng/Sites/cgi/">
  12. Options ExecCGI
  13. AllowOverride None
  14. Order deny,allow
  15. Allow from all
  16. </Directory>

6.给Sites和Sites/cgi权限

  1. chmod +x /Users/deng/Sites
  2. chmod +x /Users/deng/Sites/cgi

7.重启Apache

  1. apachectl restart
8.在/Users/deng/Sites/cgi放入测试文件

文件名: first.pl

  1. #!/usr/bin/perl
  2. =head1 DESCRIPTION
  3. printenv — a CGI program that just prints its environment
  4. =cut
  5. print "Content-type: text/html\n\n";
  6. for my $var ( sort keys %ENV ) {
  7. printf "<h2>%s = \"%s\"<h2>\n", $var, $ENV{$var};
  8. }

需要给 first.pl权限

  1. chmod +x /Users/deng/Sites/cgi/first.pl

9.尝试在终端运行first.pl

  1. /Users/deng/Sites/cgi/first.pl

如果有输出,说明可以运行。

10.在浏览器中打开

  1. localhost:8080/cgi-bin/first.pl
注意:
1.404 not fount
可能是DocumentRoot没有设置对,或者ScriptAlias /cgi-bin/ 没设置对,或者没有对应的文件
 
2.403 forbidden
我遇到这个问题是因为 /cgi-bin/ 不在 DocumentRoot的子目录下。
还有一个可能是 没有给 /cgi-bin/还有里面的脚本执行权限
 
3.500 Internal Server Error
是脚本输出的格式不符合http1.1协议格式
  1. Content-Type:text/html
  2. body
头和主体之间有一个空行
 
apache输出的日志信息
  1. /usr/local/var/log/apache2/access_log    访问apache的请求在这个文件都可找到
  2. /usr/local/var/log/apache2/error_log     所有非200 OK的错误信息都会在这个文件找到

Mac配置apache cgi服务的更多相关文章

  1. Mac配置apache,mysql

    ===========Apache=============================== 1. 启动关闭Apache MAC系统已经预装了apache,启动.关闭.查看版本等命令如下: 启动a ...

  2. Windows 配置Apache+CGI

    首先还是先在官网下载Apache,版本为Apache 2.4.26 x64,下载64位的地址为:http://www.apachehaus.com/cgi-bin/download.plx 下载完成后 ...

  3. 安装配置apache sentry服务

    环境 系统环境:Centos6.7 Hadoop版本:CDH5.10 jdk版本:jdk7 注:本文并未集成kerberos组件 安装Sentry Server 选择安装hive的节点进行安装测试: ...

  4. mac配置apache

    http://www.cnblogs.com/snandy/archive/2012/11/13/2765381.html 用自带的 sudo apachectl -v sudo apachectl ...

  5. mac 配置apache

    Apache配置 对httpd.conf文件的配置.首先打开 /etc/apache2/httpd.conf文件,也就是Apache2.4的相关配置文件. 连接php 首先我们将相应的PHP版本配置进 ...

  6. Mac 配置Apache Php编译ssl错误解决

    终端 Php编译错误解决 //错误信息 unable to connect to ssl://gateway.sandbox.push.apple.com:2195 (Unknown error) i ...

  7. 配置Apache服务器 数据库mySQL

    Mac 配置  apache   php 详细解说 一.开启apache 并切改变引导 1.打开终端  输入:sudo apachectl start    回车,关闭终端 2.打开浏览器,地址栏输入 ...

  8. Mac下配置Apache服务

    这篇文章主要是针对Mac用户,第一次搭建本地开发环境的同学,已经搭建过的同学可以忽略. Mac自带的Apache还是XAMPP? That is a question. 其实自带的apache也够用了 ...

  9. Mac下配置apache

    一.前言 今天遇到问题,怎么配置apache在Mac上,原来Mac自带apache,只需要自己开启配置一下就行了. 二.步骤: 1.修改apache的http_conf文件 打开finder前往/pr ...

  10. 在Mac OS X中配置Apache + PHP + MySQL

    在Mac OS X中配置Apache + PHP + MySQL Mac OS X 内置Apache 和 PHP,使用起来非常方便.本文以Mac OS X 10.6.3和为例.主要内容包括: 启动Ap ...

随机推荐

  1. Linux 日志管理基础

    目录 基本介绍 日志的存放 存放目录与存放内容 举例说明 日志管理服务: rsyslogd 功能与配置 检查自启动 配置文件 /etc/rsyslog.conf 修改配置文件 基本介绍 日志文件是重要 ...

  2. kubernetes组件大全

    master节点组件 控制平面的组件我们会找一台单独的机器来部署,我们习惯上把部署控制平面组件的机器称为master节点,以下都会用master节点来代替控制平面这个概念,master节点的组件能够对 ...

  3. 痞子衡嵌入式:我在华邦电子&恩智浦2024联合技术论坛继续担任演讲嘉宾

    「华邦电子(Winbond)」是国际领先的存储器厂商,其串行 NOR Flash 产品在全球市场占有率稳居前列. 继去年华邦联合恩智浦成功搞了第一次技术论坛之后,今年华邦又联合意法半导体,恩智浦.莱迪 ...

  4. callable结合FutureTask的多线程使用(免打扰模式)

    import java.util.concurrent.Callable; import java.util.concurrent.ExecutionException; import java.ut ...

  5. .NET9 EFcore支持早期MSSQL数据库 ROW_NUMBER()分页

    前言 NET程序员是很幸福的,MS在上个月发布了NET9.0RTM,带来了不少的新特性,但是呢,我们是不是还有很多同学软硬件都还没更上,比如,自己的电脑还在跑Win7,公司服务器还在跑MSSQL200 ...

  6. redis教程(Mac)

    1.首先,检查是否已经安装Homebrew,如果没有安装Homebrew,请先安装 2.使用Homebrew安装命令,在终端输入以下命令 brew install redis 当前默认安装5.0.8版 ...

  7. Mybatis 实现多字段动态排序

    背景 在项目的开发过程中,可能会遇到对数据表多个字段进行排序的需求(第一句话就这么难懂,不要害怕,万事开头难,结尾更难,开玩笑哒),结合需求轻松易懂. 需求 现在有一张User表 男同学先按 age ...

  8. HarmonyOS Next 入门实战 - 导航框架:页面路由、组件导航(Navigation)

    页面路由 官方不推荐使用页面路由,这里仅做简单介绍. 页面路由用于标识 @Entry 注解的页面间的跳转. 包引入 import { router } from'@kit.ArkUI'; 页面跳转 r ...

  9. ecognition server注意事项

    1.4002端口是节点管理界面,默认密码admin. 2.8184端口是任务管理界面. 3.节点在线状态下,查看提交的影像矢量路径是否正确. 4.看服务器读取各个文件是否有误. 5.用develope ...

  10. Windows的树形目录结构

    一.文件.文件夹(目录).逻辑盘.路径的概念 · 文件:是操作系统用来存储和管理信息的基本单位.每个文件都有一个名称,叫文件名.文件名通常由‌基本文件名和‌扩展名两部分组成,其中基本文件名用于说明文件 ...