Apache에서는 "mod_info"모듈 "server-info"라고 핸들러가 제공된다.

"server-info" 핸들러를 호출하여 Apache 구성 정보을 확인할 수 있다. 그럼 브라우저에서 "server-info" 핸들러를 호출하여 동작 상황을 볼 수 있도록 해보자.

mod_info 모듈 로드

먼저 "mod_info"모듈을 이용할 수 있도록 "LoadModule"에서 모듈을 로드한다. "httpd.conf" 파일에서 "mod_info"로 검색하면, 다음과 같은 내용을 찾을 수 있을 것이다.

#LoadModule info_module modules/mod_info.so

"LoadModule" 앞부분에 "#"이 있다면 "#"을 제거한다.

LoadModule info_module modules/mod_info.so

다음은 "server-info"핸들러를 호출 설정을 한다. "Include"을 사용하여 "httpd-info.conf"파일을 로드한다. "httpd.conf"파일에서 "httpd-info.conf"로 검색하면, 다음과 같은 내용을 찾을 수 있을 것이다.

# Real-time info on requests and configuration
#Include conf/extra/httpd-info.conf

"Include" 앞부분에 "#"이 있다면 "#"을 제거한다.

# Real-time info on requests and configuration
Include conf/extra/httpd-info.conf

httpd-info.conf 파일 확인

다음은 "httpd-info.conf" 파일에서 "/server-info"로 검색하면, 다음과 같은 내용을 찾을 수 있을 것이다.

<Location /server-info>
    SetHandler server-info
    Require host .example.com
    Require ip 127
</Location>

"Location"을 사용하여 URL 경로를 "/server-info"로 설정되었고, "/ server-info" 라고 URL 경로로 호출 하면 "server-info" 핸들러를 호출되어 실행되도록 "SetHandler" 설정이 되어 있다.

이와 같이 작성되면 브라우저에서 "http://localhost/server-info"라고 요청하게 되면 "server-info" 핸들러를 실행하고 결과를 돌려준다. 또한 서버의 작동 상황은 누구에게나 공개하는 것은 아니기에 로컬 호스트에서만 액세스를 허용된다.

실행 확인

로컬에서 브라우저로 "http://127.0.0.1/server-info"에 액세스한다.


정상적으로 액세스가 되었다면, 위와 같이 Apache의 각종 설정 정보에 대한 링크가 화면에 표시된다. 각 링크를 클릭하시면 자세한 정보가 표시된다.



"server-status" 핸들러를 실행할 때 "ExtendedStatus"에 "On"을 설정하면, 현재 처리하고 있는 URL 및 자원에 대한 정보도 함께 확인할 수 있다.

"httpd-info.conf" 파일에서 "ExtendedStatus"로 검색하면, 다음과 같은 내용을 찾을 수 있을 것이다.

#
# ExtendedStatus controls whether Apache will generate "full" status
# information (ExtendedStatus On) or just basic information (ExtendedStatus
# Off) when the "server-status" handler is called. The default is Off.
#
#ExtendedStatus On

기본으로 Off라고 설명이 되어 있다. "ExtendedStatus On"의 "#"을 제거하여 확장 상태를 "On"으로 설정하면 상세 접보를 확인 할 수 있게 된다.

그럼 "On"으로 설정하겨 "http://localhost/server-status"에 액세스한다.

화면의 맨 마지막보다 자세한 정보가 표시된 것을 볼 수 있다.

Apache에서는 "mod_status" 모듈에 "server-status"라는 핸들러를 제공한다. (핸들러는 있는 동작을 시키는 함수 같은 것이다. 프로그램의 모임이라고 생각하면 된다.)

"server-status" 핸들러를 호출하여 Apache의 동작 상황을 확인할 수 있다. 그럼 브라우저에서 "server-status" 핸들러를 호출하여 동작 상황을 볼 수 있도록 해보자.

mod_status 모듈 로드

먼저 "mod_status"모듈을 이용할 수 있도록 "LoadModule"에서 모듈을 로드한다. "httpd.conf" 파일에서 "mod_status"로 검색하면, 다음과 같은 내용을 찾을 수 있을 것이다.

#LoadModule status_module modules/mod_status.so

"LoadModule" 앞부분에 "#"이 있다면 "#"을 제거한다.

LoadModule status_module modules/mod_status.so

다음은 "server-status" 핸들러를 호출하는 설정을 한다. "Include"을 사용하여 "httpd-info.conf" 파일을 로드한다. "httpd.conf" 파일에서 "httpd-info.conf"로 검색하면, 다음과 같은 내용을 찾을 수 있을 것이다.

# Real-time info on requests and configuration
#Include conf/extra/httpd-info.conf

"Include" 앞부분에 "#"이 있다면 "#"을 제거한다.

# Real-time info on requests and configuration
Include conf/extra/httpd-info.conf

httpd-info.conf 파일 확인

다음은 "httpd-info.conf" 파일에서 "/server-status"로 검색하면, 다음과 같은 내용을 찾을 수 있을 것이다.

<Location /server-status>
    SetHandler server-status
    Require host .example.com
    Require ip 127
</Location>

"Location"을 사용하여 URL 경로를 "/server-status"으로 설정되었고, "/ server-status" 라고 URL 경로로 호출 할때 "server-status" 핸들러를 호출하여 실행 설정을 "SetHandler"가 지정되어 있다.

이와 같이 작성되면 브라우저에서 "http://localhost/server-status"라고 요청하게 되면 "server-status" 핸들러를 실행하고 결과를 돌려준다. 또한 서버의 작동 상황은 누구에게나 공개하는 것은 아니다. 그래서 로컬 호스트에서만 액세스를 허용한다.

실행 확인

로컬에서 "http://127.0.0.1/server-status"에 액세스하십시오.

이 처럼 URL에 접근할 수 있다면 위와 같이 Apache의 작동 상태를 모니터링 할 수 있다.

지정된 시간에 자동 업데이트

로컬 호스트에서 접속할 때 URL에 페라미터로 "?refresh=초"와 같이 넣으면, 지정한 초마다 최신 정보를 다시 받아오게 된다.

그럼 5초 단위로 자동 업데이트하도록 "http://127.0.0.1/server-status?refresh=5"라고 URL 입력한다.

위와 같이 5초 단위로 자동으로 최신의 정보를 얻을 다시 받아와 표시하는 것을 확인할 수 있다.

이제 Apache 설정만 하면 된다. 연동을 하기 위해서는 "mod_proxy_ajp"을 사용하므로 먼저 'mod_proxy'과 'mod_proxy_ajp "모듈을 로드하도록 변경합니다.

"httpd.conf"파일에서 "mod_proxy_ajp"로 검색하면, 다음과 같은 내용을 찾을 수 있을 것이다.

#LoadModule proxy_module modules/mod_proxy.so
#LoadModule proxy_ajp_module modules/mod_proxy_ajp.so

주석 처리가 되어 있다면 앞에 "#"를 제거합한다.

LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_ajp_module modules/mod_proxy_ajp.so

이로써 'mod_proxy'과 'mod_proxy_ajp "모듈이 로드되도록 변경되었다.

다음 톰켓에 대한 요청이 있을 경우 설정한다. "http://localhost/hello/"로 시작하는 URL으로 액세스가 되면 Tomcat의 파일을 호출하도록 할 것이다. 그러기 위해 먼저 섹션 컨테이너로 "Location"을 사용하여 다음과 같이 작성한다.

<Location /hello/>

</Location>

※ 섹션 컨테이너에 대해서는 "접근 허용 범위 설정 (섹션 컨테이너)"를 참조한다.

Tomcat에 액세스를 하도록 하는 설정을 <Location> 안에 작성한다. Tomcat는 AJP/1.3 프로토콜으로 8009 포트를 사용하여 연결을 하기에 다음과 같이 작성한다.

<Location /hello/>
    ProxyPass ajp://localhost:8009/hello/
</Location>

이것으로 "httpd.conf" 파일에 작성하면 완료되었다.

위와 같이 표시되면 Apache 통한 Tomcat 호출을 성공하였다.

Apache를 통해 액세스로 변경하기 위해 현재 8080 포트에서 실행하고 있는 Tomcat에 직접 연결을 못하게 한다.

설정을 위해 "{Tomcat 설치 디렉토리}/conf"에 있는 "server.xml"를 텍스트 편집기로 연다. 그리고 "8080" 로 검색하면, 다음과 같은 내용을 찾을 수 있을 것이다.

    <Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />

이 부분 전체를 주석 처리하도록 한다.

<!--
    <Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />
-->

이제 8080 포트에서 Tomcat에 연결하려고 하면 연결할 수 없게 되었다.

설정이 완료되면 Tomcat을 다시 시작하여 "http:// localhost:8080/hello/helloworld"브라우저에서 액세스 해본다.


그러고"server.xml"파일에 다음과 같은 내용이 있는지 검색한다. "AJP"로 검색하면 나올 것이다.

    <!-- Define an AJP 1.3 Connector on port 8009 -->
    <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />

Apache에서 Tomcat에 연결을 "AJP/1.3"라고 프로토콜을 사용하여 8009 포트로 접속하게 될 것이다.

+ Recent posts