`
tcspecial
  • 浏览: 911684 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

windows apache+cgi 运行c/c++

阅读更多

     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"
'''

 

   run python

    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,少一个则报错

 

  • 大小: 12.7 KB
  • 大小: 21.2 KB
分享到:
评论

相关推荐

    Apache+SVN+Trac

    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....

    linux Apache CGI 安装配置

    在Apache中,CGI允许开发者使用各种编程语言(如Perl、Python、C++等)编写脚本,这些脚本可以处理用户请求,动态生成HTML或其他格式的响应。 在Linux系统上安装Apache并配置CGI的步骤如下: 1. **安装Apache**: ...

    我的CGI框架,基于apache的

    这个“我的CGI框架”是一个用C++编写的框架,旨在简化开发人员创建CGI应用的过程。框架的核心特性包括: 1. **配置文件管理**:基于minixml库,框架提供了格式化的配置文件读取和解析,使得配置更加直观和易于维护...

    cgi-test-test.rar_c cgi_c++ cgi_cgi_cgi c++_cgi-test.c

    在这个“cgi-test-test.rar”压缩包中,我们看到的主要是关于使用C语言和C++实现CGI功能的相关资源。 1. **CGI的基本原理**:CGI程序作为一个独立于Web服务器的可执行程序运行,它接收来自HTTP请求的数据,处理这些...

    【后记】win7下安装php+mysql+apache+phpMyadmin+wp+wiki.docx

    - 访问[Apache官网](https://httpd.apache.org/download.cgi)下载适用于Windows系统的二进制发布版。 - 解压下载的文件至`C:\Apache24`目录下(此处以Apache 2.4为例)。 - 修改`httpd.conf`文件,将`ServerName`...

    apache+mysql+php

    这个压缩包包含了在32位(x86)Windows系统上运行这些组件所需的所有文件。 Apache HTTP Server是世界上最流行的Web服务器软件,提供了一个强大、可定制且灵活的平台来托管静态HTML页面、动态内容和应用程序。在这...

    apache访问cgi文件时,显示的内容是以ELF开头的乱码文字,如何解决.zip

    在Linux环境下,这些外部程序通常是用C、C++等语言编译成ELF格式的二进制可执行文件。 2. "ELF"乱码原因: 当Apache看到CGI文件时,如果它不正确地配置为以CGI方式处理该文件,而是直接尝试将其作为文本内容发送到...

    C++制作CGI程序例子

    在运行CGI程序时,通常将其放在Web服务器的CGI目录下,并配置服务器以执行该程序。例如,在Apache服务器中,你可能需要在`.htaccess`文件或服务器配置中添加相应的CGI设置。 总结来说,C++制作CGI程序主要涉及以下...

    CentOS 6.3下源码安装LAMP(Linux+Apache+Mysql+Php)运行环境步骤

    在本文中,我们将详细介绍如何在CentOS 6.3操作系统上源码安装LAMP(Linux、Apache、MySQL、PHP)运行环境。LAMP是构建Web应用程序的流行平台,由Linux操作系统、Apache Web服务器、MySQL数据库管理系统和PHP编程...

    win7下的php7.0.2+apache2.4.18+mysql5.7.10搭建

    - **其他依赖**: Visual C++ 2015 64位运行库 **1.2 安装步骤** #### 二、Apache 安装与配置 **2.1 下载并解压** 首先需要下载 Apache 2.4.18 的 Windows 版本,并将其解压缩到指定目录。例如,可以将 Apache ...

    考勤的cgi 编写语言c++

    为了运行这个CGI程序,你需要将其部署到支持CGI的Web服务器上,如Apache或Nginx,并配置适当的路径设置。 总结,使用C++编写CGI程序来实现考勤系统涉及了网络编程、HTTP协议、数据库操作和安全性等多个方面。通过...

    apache xerces-c-3.0.1

    6. **可移植性**:由于是C++实现,Xerces-C++可以在多个平台上编译和运行,包括Windows、Linux、Mac OS X等。 7. **性能优化**:Xerces-C++经过精心设计和优化,可以在处理大量XML数据时保持高效。 通过Xerces-C++...

    Windows Server 2016 上配置 APACHE+SSL+PHP+perl的教程详解

    - **Microsoft Visual C++运行库**: VC14和VC11版本。 ### 安装Apache - Apache版本2.2不支持PHP 5.3以后的版本,因此应选择最新版本Apache/2.4。 - 需要安装适用于Windows 64位系统的VC2015运行库(VC14)。 - ...

    C_C++课程实践小组实验报告1

    项目结果表明,EGE图形库版本仅适用于Windows环境,而CGI网页版本则能跨平台运行,如在Windows + IIS以及Linux + Apache等环境中。游戏运行流畅,经过全面测试,未发现明显BUG。 在团队合作方面,组长王衔飞负责...

    web的cgi程序

    当用户通过浏览器访问一个CGI程序时,服务器接收到请求后会启动一个新的进程来运行这个程序。CGI程序处理完请求后,将结果返回给服务器,服务器再将这些内容发送给用户的浏览器显示。这种机制使得Web服务器能够处理...

    腾讯云部署网站py3.8+django2.2+apache2.4+mysql5.7).zip

    在这个场景中,GCC 8.3.0用于编译Python和其他依赖的C/C++源代码,确保所有软件在特定环境中正确运行。 **Python 3.8.2**:Python是一种广泛使用的高级编程语言,其3.8.x版本提供了诸多性能优化和新特性。在这个...

    精通CGI编程 CGI

    6. 部署和配置:了解如何在不同的Web服务器(如Apache、Nginx等)上配置CGI支持,以及如何设置权限和脚本路径。 在深入学习CGI编程的过程中,你将接触到许多实际应用案例,例如表单处理、登录验证、数据库交互等。...

Global site tag (gtag.js) - Google Analytics