apache 모듈 만들기 1탄.
정리하자.. 2007/05/19 17:47아파치 모듈을 자주 만드는 편이 아니어서 인지...가끔 만들때마다...어떻게 만들었었는지를 까먹게 된다..나는 내가 까먹기의 화신이 아닐까라는 생각을 가끔 할 때가 있다..ㅡㅡ; 여튼 다음에 또 까먹어도 쉽게 따라 할 수 있게 내용을 남겨보려한다.
아파치에서 모듈을 설치하는 방법은 apxs를 사용하는 것과 직접 소스트리에 집어넣는 방법이 있는데..여기서는 직접 소스트리에 집어넣는 방법에 대해서만 일단 기록하겠다.
기준이 되는 아파치 버전은 현재 최신버전인 2.2.4버전 이다. 먼저 컴파일을 하기위해서 여러 설정을 해야 하는데 그러기 위해 autoconf를 이용한다. 아파치에는 autoconf를위해 여러 함수들이 들어가있는데...그것까지 모두 다 알필요는 없다...물론 필요에 의해서 알고 싶다면..acinclude.m4 파일을 열어보거 어떤 펑션들이 정의 되어있는지 확인해볼 수 있다. 여기서는 그것에 대해 일일이 남기지 않고 간단하게 따라 할 수 있는정도만 남기겠다.
먼저 새로운 모듈을 만들려면 아파치디렉토리/modules/모듈명 디렉토리를 만든다. 쉽게 설명하기위해서 irdealtest라는 모듈을 만든다는 가정하에 설명을 하겠다. modules/irdealtest를 만들고 그안에 Makefile.in파일을 만든다. 이것은 Make파일을 만들때 사용하려는 것인데...간단하게 다음과 같이 작성해준다.
# a modules Makefile has no explicit targets -- they will be defined by
# whatever modules are enabled. just grab special.mk to deal with this.
include $(top_srcdir)/build/special.m
그리고 config.m4파일을 만들고 다음과 같은 내용을 집어 넣는다.
APACHE_MODPATH_INIT(irdealtest)
APACHE_MODULE(irdealtest, irdealtest module, , , no)
APACHE_MODPATH_FINISH
APACHE_MODPATH_INIT(irdealtest) 부분은 모듈의 패스를 설정하는 부분이고 APACHE_MODULE함수에서 첫번째 인자는 모듈의 이름 두번째 인자는 모듈에 대한 설명이고, 마지막 인자는 디폴트로 컴파일 되는 것이 아니라는 뜻이다. 마지막 인자는 다음과 같은 의미의 변수들이 올수 있다.
yes 는 디폴트로 컴파일이 된다는 것이고 사용안하려면 명시적으로 disable을 해주어야 한다.
no 는 디폴트로 컴파일 안한다는 것이고, 사용하려면 명시적으로 enable을 해주어야 한다.
most 는 디폴트로는 컴파일을 안하는데, 사용하려면 명시적으로 enable해주거나 most와 all을 했을 때도 사용하게된다.
static 은 기본적으로 static한 모듈이 된다.
"" 는 기본적으로 컴파일을 안하는데, 명시적으로 enable해주거나 all을 했을 때 사용하게된다.
이렇게 두개의 파일을 만든뒤 configure 파일을 백업해둔다. 그리고 새롭게 내가 만들 모듈을 포함하는 configure를 만들면되는데, 이때는 아파치 소스에서 제공되는 buildconf를 실행시키면 된다.
buildconf를 실행시키면 새로운 configure가 만들어지는데 이 파일을 읽고 irdealtest라는 문자열을 검색해 봐라. 그러면 새로운 configure에 내가 만든 모듈을 설정하는 부분이 들어갔는지를 알 수 있다.
오늘은 여기까지.....내용이 약간 부실해서...앞으로 조금씩 고쳐나가겠다...
Trackback Address :: http://irdeal.tistory.com/trackback/30
- Tracked from 엘레노아의 작업로그 2007/07/18 17:03 DELETE
Subject: apache 모듈 만들기
참고 사이트 : apache 모듈 만들기 1탄. 예전에 Apache로 작업할때 이 내용을 알았더라면 1/2는 덜 헤딩을 했으리라. 덧붙여서 공식 사이트의 apxs 관련 문서와 mod_so 관련 문서를 첨부한다. apxs는 Apache Extension 도구로써, Apache 서버의 확장 모듈을 컴파일하고 설치하기 위해 공식적으로 만들어진 도구이다. 이것을 이용하여 소스를 아파치의 소스트리에 집어넣어서 모듈로 만들지 않고, 독립적으로 컴파일 하여 모듈..

