当前位置: 首页 > news >正文

Linux系统:配置Apache支持CGI(Ubuntu)

在这里插入图片描述

配置Apache支持CGI

根据以下步骤配置,实现Apache支持CGI

  1. 安装Apache:
    可参照文章: Ubuntu安装Apache教程。
  2. 执行以下命令,修改Apache2配置文件000-default.conf:
sudo vim /etc/apache2/sites-enabled/000-default.conf,

在这里插入图片描述
将标注行取消注释,并更新保存

  1. 执行以下命令,修改Apache2配置文件serve-cgi-bin.conf:
sudo vim /etc/apache2/conf-available/serve-cgi-bin.conf

在这里插入图片描述

<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 NoneOptions +ExecCGI -MultiViews +SymLinksIfOwnerMatchRequire all grantedAddHandler 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

并更新保存。

  1. 执行以下命令,修改Apache2配置文件cgid.load:
sudo vim /etc/apache2/mods-available/cgid.load

在这里插入图片描述

AddHandler cgi-script .cgi .pl .py .sh

插入红色标注代码 AddHandler cgi-script .cgi .pl .py .sh

并更新保存

  1. 执行以下命令,创建一个cgid.load的链接文件:
sudo ln -s /etc/apache2/mods-available/cgid.load /etc/apache2/mods-enabled/cgid.load
  1. 执行以下命令,重启Apache服务:
sudo /etc/init.d/apache2 restart
  1. 执行以下命令,新建cgi-bin文件夹:
sudo mkdir /var/www/html/cgi-bin/
  1. 进行/var/www/html/cgi-bin/ 目录下 创建CGI测试程序,测试CGI程序运行环境:
    (1)新建一个文件 helloworld.c , 并输入下述内容
    在这里插入图片描述
#include<stdio.h>
int main(){printf("Content-Type: text/html\n\n");printf("hello world");printf("第一个apache2配置下的cgi运行程序");return 0;}

(2)执行以下命令,编译源文件:

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的权限管理有关,可查看下方链接)

sudo chmod 755 /var/www/html/cgi-bin/hello2.cgi

(4)在/var/www/html/cgi-bin/目录下执行以下命令,编译源文件:

./hello2.cgi

终端输出打印结果
在这里插入图片描述

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

在这里插入图片描述

因为字符集问题,所以中文变成了乱码,但是只要页面加载成功,说明我们CGI环境配置成功。

  1. 注意:如果通过非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步骤 均无 报错。则可忽略第十步骤。

相关链接:

1.Linux系统:Linux中ln命令用法
2.Ubuntu安装Apache教程
3.GCC编译器介绍
4.为什么CGI程序的权限必须是755

http://www.lryc.cn/news/465373.html

相关文章:

  • qt 序列化和反序列化
  • java实现文件变动监听
  • Maven的使用
  • C++开发进阶1:C++编程命名规范
  • Android 图片相识度比较(pHash)
  • Gitlab 完全卸载–亲测可行
  • gitlab操作和管理
  • ctfshow-web入门-反序列化(web254-web258)
  • repo 命令大全详解(第十一篇 repo init)
  • ComfyUI | 全新ComfyUI前端操作指南:提升你的工作速度!
  • nginx解决非人类使用http打开的443,解决网安漏扫时误扫443端口带来的问题
  • 黑马 | Reids | 基础篇
  • SAP-换登录界面图片
  • 移动 Web核心笔记(二)
  • MySQL创建和管理表
  • 【从零开始的LeetCode-算法】910. 最小差值 II
  • 周报 | 24.10.14-24.10.20文章汇总
  • Codeforce 980 Div2 A-D 题解
  • 一次代码优化的过程
  • 多线程的学习(1)
  • PyCharm借助MobaXterm跳板机连接服务器
  • 计算机毕业论文基于Android 的签到系统设计与实现
  • 量化学习-02
  • SAP_MM模块-设置业务合作伙伴类型字段必输(多种方案)
  • STM32平台上实现串口接收不定长数据-实际项目中应用
  • AWD入门
  • T3矩阵看功率
  • VLMEvalKit多模态大模型评测工具源码解析
  • 将 Docker 安装到指定目录
  • 哪些企业需要部署SD-WAN?