웹서버/Apache

[예제] 동적 모듈(Dynamic Module) 작성 - helloworld

투칼론 2016. 6. 20. 10:35
반응형

아파치 웹서버는 관리자가 모듈들을 선택하여 서버에 포함할 기능을 결정할 수 있는 모듈화된 프로그램이다. 뒷 단에 WebLogic, JBoss 등 WAS와 연계 시에 플러그인 모듈을 사용하는데, 이때 아파치 재 컴파일 없이 동적으로 설정하고, 설치하는 것을 경험해보았다면 그 방식이 아파치의 동적공유객체(Dynamic Shared Objects, DSO) 모듈로 구현한 것이다. DSO 모듈은 서버를 컴파일할때 컴파일하거나, Apache Extension Tool (apxs)을 사용한다.


아래와 같은 순서로 작성하여 테스트 하면 된다.



1. 소스 작성


별도로 작성하지 않고, 아래 파일을 활용하였다.


[소스 예제] http://apache.webthing.com/svn/apache/book/mod_helloworld.c




2. 컴파일


아래와 같이 Apache에서 제공하는 apxs라는 툴을 통해 동적 라이브러리 파일을 생성하고, $APACHE_HOME/modules에 생성된 동적 라이브러리 파일(예시, mod_helloworld.so)을 복사한다.


$APACHE_HOME/bin/apxs -i -a -c mod_helloworld.c


[참고] apxs 명령어 사용법




3. httpd.conf 파일에서 해당 모듈 설정


httpd.conf 파일에 아래 내용을 추가로 설정한다.


 ...

 LoadModule      helloworld_module     modules/mod_helloworld.so

 ...


 <Location /helloworld>

    SetHandler helloworld

 </Location>



4. 호출하여 테스트


위의 httpd.conf에서 Location에 설정한 /helloworld 룰에 의해 아래와 같이 호출하면, helloworld 모듈이 실행되어 결과를 리턴하게 된다. WebLogic, JBoss 등 WAS 플러그인 경우에는 플러그인 모듈에서 WAS가 처리하도록 로직이 구현되어 있다.

호출 테스트 : http://localhost/helloworld

호출 성공하면 아래와 같은 브라우저 화면이 디스플레이된다.