`
cywhoyi
  • 浏览: 420170 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

apache模块开发

 
阅读更多

解决公司jboss集群的问题,开始学习apache模块开发,开发的平台采用windows平台,是希望大家更加容易能够进入开发阶段,公司大部分都有vs2008.

1.安装apache 安装包 httpd-2.2.21-win32-x86-no_ssl.msi
   
一定要custom全部安装,否则就不会有includelib目录

2.配置apxs
  1)
安装apxs            安装包apxs_win32
  2)
安装Strawberry Perl 安装包strawberry-perl-5.16.3.1-32bit.msi
  3)
进入dos命令提示符,转到apxs安装目录下,输入perl Configure.pl,按要求填写apache的安装目录...\apache2.2和命令名称“httpd.exe”
  4)
通过上一步,就会在apache2.2\bin下生成apxs命令,并且在apache2.2目录下生成了build目录
  5)
修改在apache2.2build目录中的config_vars.mk文件
    
CC = gcc gcc改为cl.exe LD = g++g++改为link.exeCPP = gcc-Egcc-E删掉
  6)
设置apache下的bin的命令apxs的路径为环境变量,以放便在不进入具体安装目录下运行apxs

3.编译apache模块
   1)
运行Visual Studio 2008 命令提示(在开始的Microsoft Visual Studio 2008下可以找到)
   2)
运行apxs -g -n helloworld(helloworld为模块名),会生成一个叫helloworld的目录和模板代码
   3)
进入helloworld目录,编辑mod_helloworld.c
   4)
运行apxs -c -i -a mod_helloworld.c libapr-1.lib libaprutil-1.lib libapriconv-1.lib libhttpd.lib,生成mod_helloworld.so
   5)
mod_helloworld.so拷贝到Apache2.2\modules
   6)
修改Apache2.2\conf\httpd.conf,在末尾加上
     LoadModule helloworld_module \modules\mod_helloworld.so 
    <Location /helloworld>
  setHandler helloworld
    </Location>
    
   7)
启动apache,在IE里输入http://loacalhost/helloworld

 

/* 
**  mod_helloworld.c -- Apache sample helloworld module
**  [Autogenerated via ``apxs -n helloworld -g'']
**
**  To play with this sample module first compile it into a
**  DSO file and install it into Apache's modules directory 
**  by running:
**
**    $ apxs -c -i mod_helloworld.c
**
**  Then activate it in Apache's httpd.conf file for instance
**  for the URL /helloworld in as follows:
**
**    #   httpd.conf
**    LoadModule helloworld_module modules/mod_helloworld.so
**    <Location /helloworld>
**    SetHandler helloworld
**    </Location>
**
**  Then after restarting Apache via
**
**    $ apachectl restart
**
**  you immediately can request the URL /helloworld and watch for the
**  output of this module. This can be achieved for instance via:
**
**    $ lynx -mime_header http://localhost/helloworld 
**
**  The output should be similar to the following one:
**
**    HTTP/1.1 200 OK
**    Date: Tue, 31 Mar 1998 14:42:22 GMT
**    Server: Apache/1.3.4 (Unix)
**    Connection: close
**    Content-Type: text/html
**  
**    The sample page from mod_helloworld.c
*/ 

#include "httpd.h"
#include "http_config.h"
#include "http_protocol.h"
#include "ap_config.h"


static int printitem(void *rec,const char *key,const char *value)
{
	request_rec *r = rec;
	ap_rprintf(r,"<tr><th scope=\"row\">%s</th><td>%s</td></tr>\n",ap_escape_html(r->pool,key),ap_escape_html(r->pool,value));

	return 1;
	

}

static void printtable(request_rec *r,apr_table_t *t,const char *caption,const char *keyhead,const char *valhead)
{

	ap_rprintf(r,"<table><caption>%s</caption></table><thead><tr><th scope=\"col\">%s</th><th scope=\"col\">%s</th></tr></thead><tbody>",caption,keyhead,valhead);
	apr_table_do(printitem,r,t,NULL);
	ap_rputs("</tbody></table>\n",r);

}
/* The sample content handler */
static int helloworld_handler(request_rec *r)
{
	ap_set_content_type(r,"text/html;charset=ascii");
	ap_rputs("<!DOCUMENT HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\">\n"
		"<html><head><title>Apache module devlop</title></head><body><h1>apache is back</h1>",r);
	
	printtable(r,r->headers_in,"request headers","header","value");
	printtable(r,r->headers_out,"response headers","header","value");

	ap_rputs("apache module develop from ibyoung.c\n", r);

    if (strcmp(r->handler, "helloworld")) {
        return DECLINED;
    }
    r->content_type = "text/html";      

    if (!r->header_only)
        ap_rputs("run success.c\n", r);


	ap_rputs("</body></html>",r);
    return OK;
}

static void helloworld_register_hooks(apr_pool_t *p)
{
    ap_hook_handler(helloworld_handler, NULL, NULL, APR_HOOK_MIDDLE);
}

/* Dispatch list for API hooks */
module AP_MODULE_DECLARE_DATA helloworld_module = {
    STANDARD20_MODULE_STUFF, 
    NULL,                  /* create per-dir    config structures */
    NULL,                  /* merge  per-dir    config structures */
    NULL,                  /* create per-server config structures */
    NULL,                  /* merge  per-server config structures */
    NULL,                  /* table of config file commands       */
    helloworld_register_hooks  /* register hooks                      */
};

 

分享到:
评论

相关推荐

    Apache模块开发

    Apache模块开发指南

    apache 模块开发的例子

    本篇文章将深入探讨Apache模块开发的基本概念、流程以及一个名为"adservice"的示例模块。 一、Apache模块开发基础 1. 模块结构:Apache模块通常由一组函数组成,这些函数在特定的Apache钩子(hooks)上执行,以...

    window环境下apache模块开发工具apxs及安装使用详细说明

    本文将详细介绍apxs的安装和使用方法,以及在Windows环境中进行Apache模块开发的相关知识点。 **apxs的介绍** apxs是Apache HTTP Server的命令行工具,主要负责模块的编译、链接和安装。在Unix/Linux系统中,apxs...

    APACHE模块开发指南

    apache模块开发指南,汉语版,很辛苦找到的。

    Apache模块开发指南

    《LAMP技术精品书廊•Apache模块开发指南》主要介绍了Apache模块开发的全过程。全面细致、深入浅出,主要内容包括Apache相关背景、APR的基础知识,以及利用Apache模块开发的全过程,适合广大在Apache环境下的模块...

    apache模块开发入门级资料

    Apache模块开发是构建高效Web服务器的关键技术之一,它允许开发者根据特定需求定制和扩展Apache的功能。这份入门级资料集合提供了丰富的资源,涵盖了从基础到进阶的多个方面,旨在帮助初学者快速掌握Apache模块开发...

    apache模块开发指南(中文版)

    Apache的开发人员认识到Apache 最初的架构具有局限性,比较粗糙,于是在2000年开始建立新的代码仓库(codebase)主分支,并在此代码仓库的基础上于2002年4月创建了Apache2.0的第一个发布版本。Apache 2包括以下优良...

    C语言-apache mod(模块开发)-采用VS2017开发范例

    首先,理解Apache模块开发的基础知识是至关重要的。Apache模块分为核心模块、标准模块和第三方模块,它们在Apache启动时被加载,提供各种功能,如URL处理、身份验证、日志记录等。模块通常通过Apache的API接口与...

    C语言-apache mod(模块开发)-采用centos7.2 apxs的开发范例

    以上就是使用CentOS 7.2和apxs进行Apache模块开发的基本流程。理解Apache模块的工作原理以及如何利用apxs工具能够帮助开发者更有效地扩展和定制Apache服务器的功能。在实际开发过程中,还需要熟悉Apache的API,学习...

    apache 相关工具模块

    标题中的“apache 相关工具模块”指的是与Apache HTTP服务器相关的模块或工具,这通常涉及到服务器性能优化、功能扩展或特定需求的...对于想要学习或提升Apache模块开发技能的IT从业者来说,这是一个非常宝贵的资源。

    The Apache Modules Book Application Development with Apache

    记得刚开始的时候想进行apache模块开发的时候找了好多资料,不过大都是英文文档,几乎没有做系统讲解的。国内的图书更是没有这方面的,在Amozon搜索了下,找到了《Writing Apache Modules with Perl and C》和《The ...

    Tha Apache Modules book

    Apache模块开发是构建高效、可扩展Web服务的关键技术之一。通过阅读这本书,读者可以了解到如何设计和实现Apache模块,从而增强Web服务器的功能,如处理动态内容、执行脚本语言、提供安全控制等。作者Nick Kew在书中...

    write apache module

    **Apache模块开发详解** 在Web服务器领域,Apache HTTP Server(简称Apache)因其开源、稳定、高效的特点,一直是全球最广泛使用的HTTP服务器。为了扩展其功能,开发者可以通过编写Apache模块来实现自定义的需求。...

    APACHE2.0_MOD_模块开发(C语言)

    ### Apache 2.0 MOD 模块开发:处理 .hello 请求 #### 一、概述 本文将详细介绍如何为Apache 2.0开发一个名为 `mod_hello` 的自定义模块,该模块的功能是读取配置文件中的特定设置,并针对URL路径中以 `.hello` ...

    Writing Apache Modules with Perl and C

    本书不仅是一本技术指南,更是一本实践手册,它不仅提供了丰富的理论知识,还通过大量的示例代码和实践案例帮助读者深入理解Apache模块开发的核心概念和技术细节。无论是对于初学者还是有一定经验的开发者来说,这...

    apache模块化体系结构简析

    总结来说,Apache模块化体系结构的核心在于其灵活的挂钩机制,允许开发人员通过创建和注册模块来扩展服务器的功能。这种设计使得Apache不仅能够满足基本的HTTP服务需求,还能适应各种复杂的Web应用程序和服务,成为...

Global site tag (gtag.js) - Google Analytics