본문으로 건너뛰기

httpd_-_Oracle_Http_Server

1. OHS와 Apache HTTPD의 차이점

OHS(Oracle HTTP Server)는 Oracle Fusion Middleware의 구성 요소로, Apache HTTPD를 기반으로 합니다. 기본적인 모듈 로딩 방식은 동일하므로, 일반 Apache HTTPD와 동일한 방법으로 설치할 수 있습니다.

항목일반 Apache HTTPDOHS (Oracle HTTP Server)
기반Apache HTTPDApache HTTPD (Oracle 커스텀)
설정 파일 위치$HTTPD_HOME/conf/httpd.conf$ORACLE_INSTANCE/config/fmwconfig/components/OHS/instances/<컴포넌트명>/httpd.conf
바이너리 경로$HTTPD_HOME/bin/httpd$PRODUCT_HOME/bin/httpd
인스턴스 관리단일 인스턴스도메인(Domain) 기반 다중 인스턴스

2. 설치 전 확인사항

2.1 OHS 버전 확인

OHS에 포함된 Apache HTTPD 버전을 확인합니다. OHS 12c는 Apache 2.4 기반이며, OHS 11g는 Apache 2.2 기반입니다.

$PRODUCT_HOME/bin/httpd -v

출력 예시:

Server version: Apache/2.4.x (Oracle)
Server built: ...
정보

OHS 환경에서는 httpd 바이너리가 시스템 PATH에 없을 수 있으므로 $PRODUCT_HOME/bin/httpd 전체 경로를 사용합니다.

2.2 OHS httpd.conf 경로 확인

OHS의 httpd.conf 경로는 일반 HTTPD와 다르다. 다음 경로에 위치합니다.

$ORACLE_INSTANCE/config/fmwconfig/components/OHS/instances/<컴포넌트명>/httpd.conf

컴포넌트명은 config.xml에서 확인할 수 있습니다.

cat $ORACLE_INSTANCE/config/config.xml

<system-component>
<name>ohs1</name>
<component-type>OHS</component-type>
</system-component>

3. 설치 방법

일반 Apache HTTPD와 동일한 패키지, 동일한 설치 방법을 사용합니다. 별도 디렉토리에 모듈을 설치하고, OHS의 httpd.conf에 Include 한 줄만 추가하면 됩니다.

  • 패키지 설치를 진행할 경로에서 설치파일을 실행하고 install을 선택합니다. (엔터 입력 시 install)
=====================================================
EXEM HTTPD Module Setup
=====================================================
choise work
1. unpack
2. install(default)
:
  • HTTPD 버전 입력
=====================================================
exem-httpd-module v3.0.11(478b714) Install on sunos 5.10
=====================================================
Install HTTPD Version(2.4):
  • OHS 12c: 2.4 입력

  • OHS 11g의 경우 2.2 버전으로 현 시점 exemONE에서 지원하지 않고 있습니다.

  • 모듈이 설치될 별도 디렉토리를 입력합니다.

Install Directory (/path/to/httpd-module):
정보

엔터 입력 시 현재 디렉토리에 httpd-module로 설치. OHS 디렉토리 외부의 독립된 경로를 권장합니다.

  • 통신할 exem-webserver-agent의 IP를 입력합니다. (엔터 입력 시 기본 값 127.0.0.1 적용)
ExEm Connect IP(127.0.0.1)
  • 통신할 exem-webserver-agent의 Port를 입력합니다. (엔터 입력 시 기본 값 10848 적용)
ExEm Connect Port(12848):
  • 모듈의 Group ID를 등록합니다. (엔터 입력 시 기본 값 default 적용)
Group ID to register(default):
  • 모듈의 로그 이름을 입력합니다. (엔터 입력 시 기본 값 서버의 HostName 적용)
(optional)Module Name to register(t41a):
  • exem-host-agent와 맵핑할 BID를 입력합니다. (엔터 입력 시 기본 값 서버의 HostName 적용)
EXEM BID with host agent(t41a)
  • 모듈이 사용할 설정 파일 이름을 입력합니다. (엔터 입력 시 기본 값 exem_httpd_mod.conf 적용)
httpd module config filename(exem_httpd_mod.conf):
  • 모듈에게 부여되는 Unique ID를 자동으로 생성합니다. (엔터 입력 시 기본 값 yes 적용)
Do you want to fix the 'unique id'?[yes(default)/no]: 
  • 설치 완료 문구 확인 (설정 적용 값)
Install Directory [/path/to/httpd-module] 
Connect IP to Agent [127.0.0.1]
Connect Port to Agent [no input]
Group ID [default]
Module Name [no input]
Generated Unique ID [e619ae08-test-test-test-9c048e02a63f]
=====================================================
Copy tools from tools/mdl-ver_sunos_64
Copy tools from tools/xm-uuidgen_sunos_64

+--> Add the following line to 'httpd.conf' >--+
# exem module
Include /path/to/httpd-module/conf/exem_httpd_mod.conf

Add the following line to 'httpd.conf' 이후에 나온 내용을 아래 내용 참고하여 httpd.conf 에 추가

4. OHS httpd.conf에 Include 추가

설치 완료 시 출력된 Include 설정을 OHS의 httpd.conf에 추가합니다.

4.1 httpd.conf 경로

$ORACLE_INSTANCE/config/fmwconfig/components/OHS/instances/<컴포넌트명>/httpd.conf

예시:

/oracle/user_projects/domains/ohs_domain/config/fmwconfig/components/OHS/instances/ohs1/httpd.conf

4.2 Include 추가

httpd.conf 파일을 열어서 다음 내용을 추가합니다.

# exem module
Include /path/to/httpd-module/conf/exem_httpd_mod.conf
정보

exem_httpd_mod.conf 내부에 LoadModule 지시자가 포함되어 있으므로, Include 한 줄만 추가하면 됩니다.

4.3 다중 인스턴스 환경

여러 OHS 인스턴스가 있는 경우, 각 인스턴스의 httpd.conf에 동일한 Include 설정을 추가합니다. 모듈은 하나의 디렉토리에 설치되어 있으므로 모든 인스턴스가 동일한 경로를 참조하면 됩니다.

# 예: ohs1, ohs2 인스턴스 모두에 추가
vi $ORACLE_INSTANCE/config/fmwconfig/components/OHS/instances/ohs1/httpd.conf
vi $ORACLE_INSTANCE/config/fmwconfig/components/OHS/instances/ohs2/httpd.conf

5. 설정 파일 (exem_httpd_mod.conf)

설치 시 자동 생성되는 설정 파일의 구조는 다음과 같습니다. 일반 HTTPD와 동일합니다.

############################################
### EXEM Httpd Module Configuration File ###

LoadModule exem_module /path/to/httpd-module/modules/mod_exem_24_{OSNAME}_64.so

<IfModule exem_module>

ExEmGroupID default
ExEmUniqueID {UUID}

# module name(defult: hostname)
#ExEmModuleName <input module_name>

# EXEMBID with host agent
ExEmBID {HOSTNAME}

# Send data(packet) logging
ExEmDump false

# default ip:127.0.0.1, port:12848
ExEmConnectIP 127.0.0.1
#ExEmConnectPort <input port>

# default 5 sec
ExEmConnectReconnectSec 5

# do not use 0(zero)
ExEmLogPath /path/to/httpd-module/log/mod_exem.log
ExEmLogLevel info

# default 10 Megabyte
ExEmLogMaxSize 10

# metrics configuration (default: 127.0.0.1:12849/exem/v1/metrics)
#ExEmMetricAddr 127.0.0.1:12849
#ExEmMetricLocation /exem/v1/metrics

# config for httpd
#Listen 12849
#<VirtualHost *:12849>
#<Location /exem/v1/metrics>
# SetHandler exem-metrics
#</Location>
#</VirtualHost>

</IfModule>

6. 트러블슈팅

6.1 모듈 로드 오류

OHS 시작 시 다음과 같은 오류가 발생하는 경우:

Cannot load /path/to/httpd-module/modules/mod_httpd_24_sunos_64.so into server: ...

원인: SO 파일의 비트(32/64)가 OHS httpd 바이너리와 일치하지 않습니다.

해결:

  1. httpd 바이너리의 비트를 확인합니다
file $PRODUCT_HOME/bin/httpd
  1. SO 파일의 비트를 확인합니다
file /opt/imx/httpd-module/modules/imxmod_httpd_*.so
  1. 해당 내용을 토대로 문의

6.2 라이브러리 경로 오류 (SunOS)

OHS 시작 시 공유 라이브러리를 찾을 수 없는 오류가 발생하는 경우: SunOS:

export LD_LIBRARY_PATH=$PRODUCT_HOME/lib:$ORACLE_HOME/oracle_common/lib:$ORACLE_HOME/lib:$LD_LIBRARY_PATH

6.3 로그 파일 생성 오류

모듈은 시작되지만 로그 파일이 생성되지 않는 경우:

원인: 로그 경로 디렉토리가 존재하지 않거나 OHS 실행 사용자에게 쓰기 권한이 없습니다.

해결:

  1. 로그 경로 디렉토리 존재 여부를 확인합니다
ls -la /path/to/log/
  1. OHS 실행 사용자에게 쓰기 권한을 부여합니다
chown oracle:oinstall /path/to/log/

6.4 httpd.conf Include 경로 오류

OHS 시작 시 Include 파일을 찾을 수 없는 오류가 발생하는 경우:

원인: httpd.conf에 추가한 Include 경로가 잘못되었습니다.

해결:

  1. 설정 파일이 존재하는지 확인합니다
ls -la /path/to/httpd-module/conf/exem_httpd_mod.conf
  1. httpd.conf의 Include 경로와 실제 파일 경로가 일치하는지 확인합니다

7. 일반 HTTPD 설치와의 비교

항목일반 HTTPDOHS
패키지동일동일
설치 방법install.sh 실행동일
설치 디렉토리별도 디렉토리동일 (별도 디렉토리)
적용 방법httpd.conf에 Include 추가OHS httpd.conf에 Include 추가
httpd.conf 경로$HTTPD_HOME/conf/httpd.conf$ORACLE_INSTANCE/.../instances/<컴포넌트명>/httpd.conf
재시작apachectl gracefulwlst.sh 또는 opmnctl
다중 인스턴스해당 없음각 인스턴스 httpd.conf에 동일한 Include 추가