
配置Apache支持CGI
根据以下步骤配置,实现Apache支持CGI
- 安装Apache:
 可参照文章: Ubuntu安装Apache教程。
- 执行以下命令,修改Apache2配置文件000-default.conf:
            
            
              powershell
              
              
            
          
          sudo vim /etc/apache2/sites-enabled/000-default.conf,
将标注行取消注释,并更新保存
- 执行以下命令,修改Apache2配置文件serve-cgi-bin.conf:
            
            
              powershell
              
              
            
          
          sudo vim /etc/apache2/conf-available/serve-cgi-bin.conf
            
            
              powershell
              
              
            
          
          <IfModule mod_alias.c>
        <IfModule mod_cgi.c>
                Define ENABLE_USR_LIB_CGI_BIN
        </IfModule>
        <IfModule mod_cgid.c>
                Define ENABLE_USR_LIB_CGI_BIN
        </IfModule>
        <IfDefine ENABLE_USR_LIB_CGI_BIN>
                ##ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/  (注释掉默认的)
                ScriptAlias /cgi-bin/ /var/www/html/cgi-bin/
                ##<Directory "/usr/lib/cgi-bin"> (注释掉默认的)
                <Directory "/var/www/html/cgi-bin/">
                        AllowOverride None
                        Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
                        Require all granted
                        AddHandler cgi-script cgi
                </Directory>
        </IfDefine>
</IfModule>将
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/替换成ScriptAlias /cgi-bin/ /var/www/html/cgi-bin/将
/usr/lib/cgi-bin替换成/var/www/html/cgi-bin/并在</Directory >中添加
AddHandler cgi-script cgi
并更新保存。
- 执行以下命令,修改Apache2配置文件cgid.load:
            
            
              powershell
              
              
            
          
          sudo vim /etc/apache2/mods-available/cgid.load
            
            
              powershell
              
              
            
          
          AddHandler cgi-script .cgi .pl .py .sh插入红色标注代码
AddHandler cgi-script .cgi .pl .py .sh。
并更新保存
- 执行以下命令,创建一个cgid.load的链接文件:
            
            
              powershell
              
              
            
          
          sudo ln -s /etc/apache2/mods-available/cgid.load /etc/apache2/mods-enabled/cgid.load- 执行以下命令,重启Apache服务:
            
            
              powershell
              
              
            
          
          sudo /etc/init.d/apache2 restart- 执行以下命令,新建cgi-bin文件夹:
            
            
              powershell
              
              
            
          
          sudo mkdir /var/www/html/cgi-bin/- 进行/var/www/html/cgi-bin/目录下 创建CGI测试程序,测试CGI程序运行环境:
 (1)新建一个文件 helloworld.c , 并输入下述内容
  
            
            
              powershell
              
              
            
          
          #include<stdio.h>
int main()
   {
	   printf("Content-Type: text/html\n\n");
	   printf("hello world");
	   printf("第一个apache2配置下的cgi运行程序");
	   return 0;
   }(2)执行以下命令,编译源文件:
            
            
              powershell
              
              
            
          
          sudo gcc /var/www/html/cgi-bin/helloworld.c -o /var/www/html/cgi-bin/hello2.cgi注意:执行这一步需要安装gcc依赖包。
执行成功后 在当前目录下生成一个hello2.cgi的目标文件。
/var/www/html/cgi-bin/hello2.cgi其中hello2.cgi为生产目标文件名,可以带后缀,可以不带后缀,带后缀作以提示功能,告诉使用者这是一个编译后的cgi文件。
(3)执行以下命令,修改文件权限:(如果可以直接执行第四步 并成功输出结果,可以说明文件权限是默认配置好的,可以不进行其他配置)(为什么设置文件权限,和Linux的权限管理有关,可查看下方链接)
            
            
              powershell
              
              
            
          
          sudo chmod 755 /var/www/html/cgi-bin/hello2.cgi(4)在/var/www/html/cgi-bin/目录下执行以下命令,编译源文件:
            
            
              powershell
              
              
            
          
          ./hello2.cgi终端输出打印结果

- 页面测试:
 浏览器输入网址:http://localhost/cgi-bin/hello2.cgi ,(localhost可替换成服务器的IP) 在页面可以看到如下内容,表明CGI环境配置成功。

因为字符集问题,所以中文变成了乱码,但是只要页面加载成功,说明我们CGI环境配置成功。
- 注意:如果通过非root用户启动apache2, 执行 /var/www/html/cgi-bin目录下的sh文件失败,则修改 envvars 文件,执行命令:sudo vim /etc/apache2/envvars, 将原标记处www-data修改为当前执行的用户及其对应的用户组,保存后,执行命令:/etc/init.d/apache2 restart, 重启apache2。重启成功后,再去浏览器输入地址访问即可。
  
envvars文件默认配置如上图所示,如果 1-9步骤 均无 报错。则可忽略第十步骤。
相关链接:
3.GCC编译器介绍