apache是运用比较广泛的web服务器,大多数是php应用,apache可以启动单独的c/c++进程,为web提供服务,这大大丰富的web内容,当然cgi这种方式不适用于大规模并发的场景. Ngix 据说比apache性能更高,可以考虑
1. apache安装
windows下直接下载二进制安装文件,下一步即可; Linux下直接下载源码安装
2. 配置
$APACHE/conf/httpd.conf
1. 将 LoadModule cgi_module modules/mod_cgi.so 前注释取消
2. cgi的执行权限
<Directory "D:/Apache2.2/cgi-bin">
AllowOverride None
Options Indexes ExecCGI # 添加ExecCGI,允许执行cgi程序
Order allow,deny
Allow from all
</Directory>
3. 添加文件映射
AddHandler cgi-script .cgi .pl .py
注: *.html文件默认放在$APACHE/htdocs下,cgi处理程序放在$APACHE_HOME/cgi/bin下; 修改配置文件后,apache服务需要重启; 部署cgi程序,直接拷贝至/cgi-bin,无需重启服务
3. 测试运行
3.1 安装成功后,直接运行键入http://localhost,会在浏览器在显示 It works! , 实际上执行的是 $APACHE/htdocs/index.html
3.2 运行python脚本
#!D:\Python27\python.exe #coding=UTF-8 print "Content-type: text/html;charset=utf-8" print "" print "<html><head></head><body>" print "<h2>Hello World | 显示中文</h2>" print "</body></html>" ''' print "Content-type: text/plain\r\n" print "hello World" '''
3.3 执行c/c++程序
/**
*@brief 以文本方式在网页上输出系统信息
*/
int main(int argc,char **argv)
{
// fprintf(stdout,"content-type:text/plain\r\n\r\n");
// 注意,此处必须添加两个\r\n,不然500错误,输出页面一定要指定 Content-type, 否则500错误; 常用的 text/plain,text/html,application/json ...
printf("content-type:text/plain\r\n\r\n");
char *pszMethod;
pszMethod =getenv("REQUEST_METHOD");
if(strcmp(pszMethod,"GET") == 0) // get
{
// 读取环境变量来获取数据
printf("This is GETMETHOD!\n");
printf("SERVER_NAME:%s\n",getenv("SERVER_NAME"));
printf("REMOTE_ADDR:%s\n",getenv("REMOTE_ADDR"));
fprintf(stdout,"input data is:%s\n",getenv("QUERY_STRING"));
}
else // post
{
// 读取STDIN来获取数据
int iLength=atoi(getenv("CONTENT_LENGTH"));
printf("This is POSTMETHOD!\n");
fprintf(stdout,"input data is:\n");
for(int i=0;i<iLength;i++)
{
char cGet=fgetc(stdin);
fputc(cGet,stdout);
}
}
return 0;
}
将代码编译成以*.cgi命名(不重命名也没影响)的二进制文件拷贝至/cgi-bin目录即可在浏览器中访问. SERVER_NAME,REMOTE_ADDR等都是系统环境变量,是web服务器传递数据给cgi程序的有效手段,详见 http://www.cfanz.cn/?c=article&a=read&id=39576
3.4 错误列表
搭建环境不是一帆风顺的,总是会出现一些错误,页面上经常会显示: 500 Internal Server Error ,别急,可通过 $APACHE/logs/error.log 分析错误
* /cgi-bin/hello.py is not executable; ensure interpreted scripts have "#!" or "'!" first line
上述错误描述比较详细,python脚本必须在第一行定义解释器的目录,以#!开头
* [error] [client 127.0.0.1] Premature end of script headers: cgi_test.cgi
这个错误比较常见,看描述相当于啥也没说,其实就是cgi程序没有正常运行起来,大致有如下原因:
(1) 配置没有打开, AddHandler cgi-script .cgi
(2) Linux 下 cgi_test 没有执行权限
(3) 程序无法运行,或缺少依赖库,依赖库放于PATH目录或/cgi-bin下
(4) 程序运行异常,中途退出,未正常返回. 一般都是该原因引起的
(5) 文档类型定义错误,必须是 Content-type: xxx\r\n\r\n,两个\r\n,少一个则报错
相关推荐
1. 下载Subversion的Windows版本,如svn-win32-1.4.6.zip,解压至Apache的安装目录。 2. 将必要的模块文件复制到Apache的modules和bin目录下,并在`httpd.conf`文件中加载mod_dav_svn.so和mod_authz_svn.so模块。 3....
在Apache中,CGI允许开发者使用各种编程语言(如Perl、Python、C++等)编写脚本,这些脚本可以处理用户请求,动态生成HTML或其他格式的响应。 在Linux系统上安装Apache并配置CGI的步骤如下: 1. **安装Apache**: ...
这个“我的CGI框架”是一个用C++编写的框架,旨在简化开发人员创建CGI应用的过程。框架的核心特性包括: 1. **配置文件管理**:基于minixml库,框架提供了格式化的配置文件读取和解析,使得配置更加直观和易于维护...
在这个“cgi-test-test.rar”压缩包中,我们看到的主要是关于使用C语言和C++实现CGI功能的相关资源。 1. **CGI的基本原理**:CGI程序作为一个独立于Web服务器的可执行程序运行,它接收来自HTTP请求的数据,处理这些...
- 访问[Apache官网](https://httpd.apache.org/download.cgi)下载适用于Windows系统的二进制发布版。 - 解压下载的文件至`C:\Apache24`目录下(此处以Apache 2.4为例)。 - 修改`httpd.conf`文件,将`ServerName`...
这个压缩包包含了在32位(x86)Windows系统上运行这些组件所需的所有文件。 Apache HTTP Server是世界上最流行的Web服务器软件,提供了一个强大、可定制且灵活的平台来托管静态HTML页面、动态内容和应用程序。在这...
在Linux环境下,这些外部程序通常是用C、C++等语言编译成ELF格式的二进制可执行文件。 2. "ELF"乱码原因: 当Apache看到CGI文件时,如果它不正确地配置为以CGI方式处理该文件,而是直接尝试将其作为文本内容发送到...
在运行CGI程序时,通常将其放在Web服务器的CGI目录下,并配置服务器以执行该程序。例如,在Apache服务器中,你可能需要在`.htaccess`文件或服务器配置中添加相应的CGI设置。 总结来说,C++制作CGI程序主要涉及以下...
在本文中,我们将详细介绍如何在CentOS 6.3操作系统上源码安装LAMP(Linux、Apache、MySQL、PHP)运行环境。LAMP是构建Web应用程序的流行平台,由Linux操作系统、Apache Web服务器、MySQL数据库管理系统和PHP编程...
- **其他依赖**: Visual C++ 2015 64位运行库 **1.2 安装步骤** #### 二、Apache 安装与配置 **2.1 下载并解压** 首先需要下载 Apache 2.4.18 的 Windows 版本,并将其解压缩到指定目录。例如,可以将 Apache ...
为了运行这个CGI程序,你需要将其部署到支持CGI的Web服务器上,如Apache或Nginx,并配置适当的路径设置。 总结,使用C++编写CGI程序来实现考勤系统涉及了网络编程、HTTP协议、数据库操作和安全性等多个方面。通过...
6. **可移植性**:由于是C++实现,Xerces-C++可以在多个平台上编译和运行,包括Windows、Linux、Mac OS X等。 7. **性能优化**:Xerces-C++经过精心设计和优化,可以在处理大量XML数据时保持高效。 通过Xerces-C++...
- **Microsoft Visual C++运行库**: VC14和VC11版本。 ### 安装Apache - Apache版本2.2不支持PHP 5.3以后的版本,因此应选择最新版本Apache/2.4。 - 需要安装适用于Windows 64位系统的VC2015运行库(VC14)。 - ...
项目结果表明,EGE图形库版本仅适用于Windows环境,而CGI网页版本则能跨平台运行,如在Windows + IIS以及Linux + Apache等环境中。游戏运行流畅,经过全面测试,未发现明显BUG。 在团队合作方面,组长王衔飞负责...
当用户通过浏览器访问一个CGI程序时,服务器接收到请求后会启动一个新的进程来运行这个程序。CGI程序处理完请求后,将结果返回给服务器,服务器再将这些内容发送给用户的浏览器显示。这种机制使得Web服务器能够处理...
在这个场景中,GCC 8.3.0用于编译Python和其他依赖的C/C++源代码,确保所有软件在特定环境中正确运行。 **Python 3.8.2**:Python是一种广泛使用的高级编程语言,其3.8.x版本提供了诸多性能优化和新特性。在这个...
6. 部署和配置:了解如何在不同的Web服务器(如Apache、Nginx等)上配置CGI支持,以及如何设置权限和脚本路径。 在深入学习CGI编程的过程中,你将接触到许多实际应用案例,例如表单处理、登录验证、数据库交互等。...