본문으로 건너뛰기

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 추가