본문 바로가기
Today I learned

2020 12 17 아파치 예제모듈 실행

by soheemon 2020. 12. 17.

1) apxs를 사용해서 컴파일

apxs -c -i mod_first_apache_module.c

2) apache2.conf에 url과 module 연결해주기

/etc/apache2/apache2.conf의 맨 밑에 아래와 같이 붙여넣어 준다.

/usr/lib/apache2/modules/mod_first_apache_module.so를 first_apache_module_module로 명명하고.

/first_apache_module로 접근하면, first_apache_module 핸들러를 태워준다는 얘기같다.

 

    LoadModule first_apache_module_module /usr/lib/apache2/modules/mod_first_apache_module.so
    <Location /first_apache_module>
    SetHandler first_apache_module
    </Location>

3) 아파치 서버 재시작

apachectl restart

apachectl restart

4) 아래 경로로 접근해서 모듈이 정상적으로 동작하는지 확인한다.

 http://localhost/first_apache_module 

 

쯔란!

 

# 견본 모듈파일소스코드 분석

동작을 확인했으니, 이제 견본 소스코드를 분석해보자.

/* 
**  mod_first_apache_module.c -- Apache sample first_apache_module module
**  [Autogenerated via ``apxs -n first_apache_module -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_first_apache_module.c
**
**  Then activate it in Apache's apache2.conf file for instance
**  for the URL /first_apache_module in as follows:
**
**    #   apache2.conf
**    LoadModule first_apache_module_module modules/mod_first_apache_module.so
**    <Location /first_apache_module>
**    SetHandler first_apache_module
**    </Location>
**
**  Then after restarting Apache via
**
**    $ apachectl restart
**
**  you immediately can request the URL /first_apache_module and watch for the
**  output of this module. This can be achieved for instance via:
**
**    $ lynx -mime_header http://localhost/first_apache_module 
**
**  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_first_apache_module.c
*/ 

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

/* The sample content handler */
static int first_apache_module_handler(request_rec *r)
{
    if (strcmp(r->handler, "first_apache_module")) {
        return DECLINED;
    }
    r->content_type = "text/html";      

    if (!r->header_only)
        ap_rputs("The sample page from mod_first_apache_module.c\n", r);
    return OK;
}

static void first_apache_module_register_hooks(apr_pool_t *p)
{
    ap_hook_handler(first_apache_module_handler, NULL, NULL, APR_HOOK_MIDDLE);
}

/* Dispatch list for API hooks */
module AP_MODULE_DECLARE_DATA first_apache_module_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       */
    first_apache_module_register_hooks  /* register hooks                      */
};

 

자 여기까지 정리를 한번 해보자면

 

한것, 할수 있는것

apache 웹서버 apache dev툴 설치

모듈 컴파일 및 올리기

예제를 참고해서 사용자의 request를 들여다 볼 수 있다.

 

할것, 결정해야 할것, 자료 찾을것

프록시 구조로 설치해야 한다.

악성코드 분석로직 설계

'Today I learned' 카테고리의 다른 글

2021 계획  (0) 2021.01.01
2020 12 20 - 악성코드 분석로직 설계  (0) 2020.12.20
2020 12 16 - 아파치 모듈 개발을 위해 개발환경 꾸리기  (0) 2020.12.16
2020 12 14  (0) 2020.12.14
2020 12 13  (0) 2020.12.13

댓글