httpd_-_Oracle_Http_Server
1. OHS와 Apache HTTPD의 차이점
OHS(Oracle HTTP Server)는 Oracle Fusion Middleware의 구성 요소로, Apache HTTPD를 기반으로 합니다. 기본적인 모듈 로딩 방식은 동일하므로, 일반 Apache HTTPD와 동일한 방법으로 설치할 수 있습니다.
| 항목 | 일반 Apache HTTPD | OHS (Oracle HTTP Server) |
|---|---|---|
| 기반 | Apache HTTPD | Apache 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 바이너리와 일치하지 않습니다.
해결:
- httpd 바이너리의 비트를 확인합니다
file $PRODUCT_HOME/bin/httpd
- SO 파일의 비트를 확인합니다
file /opt/imx/httpd-module/modules/imxmod_httpd_*.so
- 해당 내용을 토대로 문의
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 실행 사용자에게 쓰기 권한이 없습니다.
해결:
- 로그 경로 디렉토리 존재 여부를 확인합니다
ls -la /path/to/log/
- OHS 실행 사용자에게 쓰기 권한을 부여합니다
chown oracle:oinstall /path/to/log/
6.4 httpd.conf Include 경로 오류
OHS 시작 시 Include 파일을 찾을 수 없는 오류가 발생하는 경우:
원인: httpd.conf에 추가한 Include 경로가 잘못되었습니다.
해결:
- 설정 파일이 존재하는지 확인합니다
ls -la /path/to/httpd-module/conf/exem_httpd_mod.conf
- httpd.conf의 Include 경로와 실제 파일 경로가 일치하는지 확인합니다
7. 일반 HTTPD 설치와의 비교
| 항목 | 일반 HTTPD | OHS |
|---|---|---|
| 패키지 | 동일 | 동일 |
| 설치 방법 | install.sh 실행 | 동일 |
| 설치 디렉토리 | 별도 디렉토리 | 동일 (별도 디렉토리) |
| 적용 방법 | httpd.conf에 Include 추가 | OHS httpd.conf에 Include 추가 |
| httpd.conf 경로 | $HTTPD_HOME/conf/httpd.conf | $ORACLE_INSTANCE/.../instances/<컴포넌트명>/httpd.conf |
| 재시작 | apachectl graceful | wlst.sh 또는 opmnctl |
| 다중 인스턴스 | 해당 없음 | 각 인스턴스 httpd.conf에 동일한 Include 추가 |