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

news2025/1/15 8:34:11

在这里插入图片描述

配置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 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

并更新保存。

  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.coloradmin.cn/o/2214829.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【深度学习量化交易2】财务自由第一步,三个多月的尝试,找到了最合适我的量化交易路径

在上一篇文章中&#xff0c;我讲到了尝试开展量化交易的一些初步的想法&#xff1a;Mr.看海&#xff1a;【深度学习量化交易1】一个金融小白尝试量化交易的设想、畅享和遐想 一晃三个多月时间过去了&#xff0c;十一前后股市突然爆火&#xff0c;行情也像过山车一样&#xff0…

面对服务器掉包的时刻困扰,如何更好的解决

在数字化时代&#xff0c;服务器的稳定运行是企业业务连续性的基石。然而&#xff0c;服务器“掉包”现象&#xff0c;即数据包在传输过程中丢失或未能正确到达目的地的情况&#xff0c;却时常成为IT运维人员头疼的问题。它不仅影响用户体验&#xff0c;还可能导致数据不一致、…

spring boot热部署

使用热部署解决了每次都需要重新启动的问题&#xff0c;但不过热部署的在对于改动比较小时速度可能快一些&#xff0c;改动大的话尽量停止 1.使用热部署之前需要在pom.xml文件中导入依赖 <dependency><groupId>org.springframework.boot</groupId><artifa…

基于SpringBoot+vue学生成绩管理系统

作者&#xff1a;计算机学长阿伟 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、ElementUI等&#xff0c;“文末源码”。 系统展示 【2024最新】基于JavaSpringBootVueMySQL的学生成绩管理系统&#xff0c;前后端分离。 开发语言&#xff1a;Java数据库&#xff1a;MySQL…

网关Gateway作用介绍和快速入门

目前架构问题分析 这里有很多微服务&#xff0c;每个微服务都需要晚上访问数据库去完成各自的业务&#xff0c;并且需要在nacos进行注册和管理&#xff0c;每一个微服务之间需要相互调用的时候&#xff0c;可以用Feign进行调用&#xff0c;当外部需要访问的时候&#xff0c;就直…

Linux操作系统——外存的管理(实验报告)

实验 Linux系统外存管理 一、实验目的 熟练Linux系统外存管理的方法与命令。 二、实验环境 硬件&#xff1a;PC电脑一台&#xff0c;网络正常。 配置&#xff1a;win10系统&#xff0c;内存大于8G 硬盘500G及以上。 软件&#xff1a;VMware、Ubuntu16.04。 三、实验内容 …

Type-c取点诱骗方案

如今随着这几年的USB-C PD适配器的普及&#xff0c;消费者手上的PD协议适配器越来越普遍&#xff0c;如何让微软surface 充电器线支持使用PD适配器快充&#xff1f;加入一颗受电端PD协议取电芯片——LDR6328能够完美的兼容市面上的PD适配器&#xff0c;支持不同的电压输出。 1…

javaweb以html方式集成富文本编辑器TinyMce

前言&#xff1a; 单一的批量图片上传按钮&#xff0c;禁用tinymce编辑器&#xff0c;但是还可以操作图片编辑&#xff1b; 多元化格式的富文本编辑要求&#xff1b; 采用tinymce实现。 附&#xff1a; tinymce中文手册网站&#xff1a; http://tinymce.ax-z.cn/download-all.…

Jmeter监控服务器性能

目录 ServerAgent 安装 打开Jmeter ServerAgent 在Jmeter上监控服务器的性能比如CPU&#xff0c;内存等我们需要用到ServerAgent&#xff0c;这里可以下载我分享 ServerAgent-2.2.3.zip 链接: https://pan.baidu.com/s/1oZKsJGnrZx3iyt15DP1IYA?pwdedhs 提取码: edhs 安装…

考研C语言程序设计_编程题相关(持续更新)

目录 零、说明一、程序设计经典编程题(C语言实现)T1 求1~100的奇数T2 求n!T3 求1!2!3!...10!T4 在一个有序数组中查找具体的某个数字n(二分查找)T5 编写代码&#xff0c;演示多个字符从两端移动&#xff0c;向中间汇聚T6 模拟用户登录(三次机会)T7 输入三个数 并从大到小输出T8…

实战篇:(四)Vue2 + Three.js 创建可交互的360度全景视图,可控制旋转、缩放完整代码

Vue2 Three.js 创建可交互的360度全景视图&#xff0c;可控制旋转、缩放 引言 在现代网页开发中&#xff0c;三维图形技术已经成为提升用户体验的重要工具。本文将展示如何使用 Three.js 创建一个简单的可交互360度全景视图。通过这一项目&#xff0c;你将能够学习到基本的场…

使用 KVM 在 Xubuntu 上创建 Windows 10 虚拟机

目录 前言说明注意准备 iso官网思博主(嘻嘻)拖动到虚拟机里面启动 virt-manager创建虚拟机选择本地安装介质选择 iso配置 内存 和 CPU选择 创建的虚拟机 保存的位置启动虚拟机看到熟悉的 Win10界面点击现在安装点击我没有产品密钥选择 Win10 专业工作站版勾选接受许可条款选择自…

grafana 配置prometheus

安装prometheus 【linux】麒麟v10安装prometheus监控&#xff08;ARM架构&#xff09;-CSDN博客 登录grafana 访问地址&#xff1a;http://ip:port/login 可以进行 Grafana 相关设置&#xff08;默认账号密码均为 admin&#xff09;。 输入账户密码 添加 Prometheus 数据源…

文件上传漏洞-绕过js验证

1.漏洞原理&#xff1a; Web应用系统虽然对用户上传的文件进行了校验&#xff0c;但是校验是通过前端javascript代码完成的。由于恶意用户可以对前端javascript进行修改或者是通过抓包软件篡改上传的文件&#xff0c;就会导致基于js的校验很容易被绕过。 2.判断页面是否存在前…

SpringBoot下的智能健康推荐引擎

3系统分析 3.1可行性分析 通过对本基于智能推荐的卫生健康系统实行的目的初步调查和分析&#xff0c;提出可行性方案并对其一一进行论证。我们在这里主要从技术可行性、经济可行性、操作可行性等方面进行分析。 3.1.1技术可行性 本基于智能推荐的卫生健康系统采用SSM框架&#…

穷举vs暴搜vs深搜vs回溯vs剪枝(一)

文章目录 全排列子集找出所有子集的异或总和再求和全排列 II电话号码的字母组合 全排列 题目&#xff1a;全排列 思路 通过深度优先搜索的方式&#xff0c;不断枚举每个数在当前位置的可能性&#xff0c;然后回溯到上一个状态&#xff0c;直到枚举完所有可能性得到正确的结果 r…

FastApi SQLAlchemy SQLite

FastApi fastapi是一个用于构建API 的现代、快速&#xff08;高性能&#xff09;的web框架&#xff0c;它是建立在Starlette和Pydantic基础上的。 Pydantic是一个基于Python类型提示来定义数据验证、序列化和文档的库&#xff0c;Starlette是一种轻量级的ASGI框架/工具包&…

哪些因素会影响 FMEA 实施的效果?

在探讨哪些因素会影响FMEA&#xff08;潜在失效模式及后果分析&#xff09;实施效果的问题时&#xff0c;我们不得不深入剖析FMEA的核心理念、实施流程及其在企业质量管理中的应用实践。FMEA作为一种系统性的预防性工具&#xff0c;旨在识别产品或过程中潜在的失效模式及其影响…

C++,STL 030(24.10.14)

stack容器&#xff08;栈&#xff09;的基本概念&#xff1a; 1.stack容器是一种先进后出的数据结构&#xff0c;它只有一个出口。 2.图例&#xff1a; 注意&#xff1a; (1)进栈顺序&#xff1a;a1 -> a2 -> a3 -> a4 -> a5 (2)出栈顺序&#xff1a;a5 -> …

SVN——常见问题

基本操作 检出 提交 更新 显示日志 撤销本地修改 撤销已提交内容 恢复到指定版本 添加忽略 修改同一行 修改二进制文件