> For the complete documentation index, see [llms.txt](https://docs.tibero.com/tibero-manuals/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.tibero.com/tibero-manuals/tibero_7.2.5./7.2.5.manuals/tibero-development-guide/mod_tbpsm.md).

# mod\_tbPSM의 사용

Apache HTTP 웹 서버를 통하여 tbPSM 프러시저 호출 및 HTML 페이지를 가져올 수 있는 tbPSM을 사용하는 방법을 기술합니다.

## 개요

Tibero에서는 웹 브라우저 등을 이용하여 HTTP 페이지를 요청하는 경우 tbPSM으로 작성된 프러시저를 호출하여 전송할 수 있는 mod\_tbPSM이라는 Apache 모듈을 제공합니다. Apache HTTP 서버는 구동할 때 Apache 설정 파일에 지정된 모듈 라이브러리들을 동적으로 로딩합니다. mod\_tbPSM도 같은 원리로 Apache HTTP 서버로부터 로딩되어 기능을 수행합니다.

다음은 mod\_tbPSM 모듈을 사용하기 위한 과정입니다.

1. Apache HTTP 서버 설치
2. mod\_tbPSM 등록
3. 프러시저 작성 및 실행

각 과정에 대한 자세한 설명은 해당 절의 내용을 참고합니다.

## **Apache HTTP** 서버 설치

mod\_tbPSM에 최적화된 Apache HTTP 서버 버전은 UNIX 계열의 경우 2.2.31, Windows 계열의 경우 2.4.27입니다.

Apache HTTP 서버에 대한 내용은 아래 주소를 참고합니다.

```
UNIX: https://httpd.apache.org/download.cgi#apache22 
Windows 64bit: https://www.apachelounge.com/download
Windows 32bit: https://www.apachelounge.com/download
```

UNIX 계열은 소스 코드를 받아서 직접 빌드해야 하고, Windows 계열은 PC에 설치된 VC에 맞는 버전을 선택하여 다운로드 한 뒤, 포함된 ReadMe.txt 파일에서 Install을 참고하여 설치 및 실행합니다.

{% hint style="info" %}
**참고**

Tibero Windows 64bit를 사용할 경우 Apache HTTP도 64bit를 사용해야 합니다.
{% endhint %}

## mod\_tbPSM 등록

Apache HTTP 설치가 완료되면 설정 파일을 수정하여 mod\_tbPSM을 등록시켜야 합니다. Apache 설정 파일은 $(Apache 서버 설치 경로)/conf/httpd.conf 입니다.

* UNIX 계열

httpd.conf 파일에 아래와 같이 추가합니다.

```
LoadModule tbpsm_module     "${TB_HOME}/client/lib/libmod_tbpsm.so"
<Location /tbpsm>
    SetHandler tbpsm_handler
    AuthType Basic 
    AuthName "Tibero"
</Location>
```

* Windows 계열

Windows는 TB\_HOME 환경변수를 사용하지 않으므로, 절대 경로를 지정해주거나 Apache 설치 경로의 module 폴더에 dll 파일을 복사하고 아래와 같이 추가합니다.

```
LoadModule tbpsm_module         modules/libmod_tbpsm.dll
<Location /tbpsm>
    SetHandler tbpsm_handler 
    AuthType Basic
    AuthName "Tibero"
</Location>
```

**\[참고]**

경로를 입력하는 경우 Windows 계열은 원래 역슬래시(\로 디렉터리를 지정하지만, Apache에서는 슬래시(/)로 입력받습니다.

```
LoadModule tbpsm_module         c:/tibero/client/lib/libmod_tbpsm.dll
<Location /tbpsm>
    SetHandler tbpsm_handler
    AuthType Basic 
    AuthName "Tibero"
</Location>
```

{% hint style="info" %}
**참고**

Location 부분은 위의 예제와 똑같이 설정해야 합니다.
{% endhint %}

## 프러시저 작성 및 실행

본 절에서는 HTP 패키지를 이용하여 HTML 페이지를 리턴하는 프러시저를 작성하고 실행하는 방법을 설명합니다.

{% hint style="info" %}
**참고**

HTP 패키지 사용에 대한 자세한 내용은 "Tibero tbPSM 참조 안내서"를 참고합니다.
{% endhint %}

### 프러시저 생성

tbPSM 문법에 기반하여 HTP 패키지의 멤버 프러시저를 호출함으로써 HTML 소스 코드를 생성합니다.

**\[예 1] HTP 패키지를 사용한 tbPSM 프러시저 작성 예제**

```
CREATE OR REPLACE PROCEDURE hello (title in varchar2, text in varchar2) 
AS
BEGIN
    HTP.HTMLOPEN;
    
    HTP.HEADOPEN;
    HTP.TITLE(title);
    HTP.HEADCLOSE;
    
    HTP.BODYOPEN;
    HTP.PRINT(text);
    HTP.BODYCLOSE;
    
    HTP.HTMLCLOSE;
END;
/
```

다음은 예제 내용에 대한 간략한 설명입니다.

* HTML의 HEAD 영역에서는 웹 브라우저 제목 표시줄에 title 파라미터를 통해 받은 문자열이 표시됩니다. 예를 들어 hello 프러시저의 첫 번째 인자로 'abc'를 지정하면 제목 표시줄에는 abc가 표시됩니다.
* HTML의 BODY 영역에서는 웹 브라우저 메인 화면에 text 파라미터를 통해 받은 문자열이 표시됩니다. 예를 들어 hello 프러시저의 두 번째 인자로 'def'를 지정하면 메인 화면에 def가 표시됩니다.

### 실행

mod\_tbPSM 모듈을 통해 프러시저를 실행하기 위한 URL 주소 형식은 다음과 같습니다.

```
http://{http_server_ip}:{http_server_port}/tbpsm/{tibero_dsn}/
{package_name}.{procedure_name}?{parameter1}={value1}&{parameter2}={value2}&...
```

<table><thead><tr><th width="255">항목</th><th>설명</th></tr></thead><tbody><tr><td>http_server_ip</td><td>HTTP 서버의 IP 주소</td></tr><tr><td>http_server_port</td><td><ul><li>HTTP 서버의 포트 번호</li><li>설정되지 않으면, 기본값 80이 적용</li></ul></td></tr><tr><td>tbpsm</td><td>httpd.conf 파일에 지정한 경로처럼 mod_tbPSM과 연동되기 위해 반드시 넣어줘야 하는 상대 경로</td></tr><tr><td>tibero_dsn</td><td><ul><li>tbdsn.tbr 파일에 명시된 DSN 이름</li><li>프러시저가 저장되어 있는 Tibero DBMS 서버를 가리킴</li></ul></td></tr><tr><td>package_name</td><td>호출할 프러시저가 패키지의 멤버일 경우 패키지 이름 및 점(.)을 명시해야 함</td></tr><tr><td>procedure_name</td><td>호출할 프러시저의 이름</td></tr><tr><td><p>parameter1, parameter2, ... ,</p><p>parametern</p></td><td><ul><li>프러시저의 파라미터 이름</li><li>URL 주소 형식에서는 질의에 해당</li></ul></td></tr><tr><td>value1, value2, ... , valuen</td><td>프러시저 해당 파라미터에 들어가는 IN 값</td></tr></tbody></table>

예를 들어 "12.34.56.78" 주소를 가진 HTTP 서버에 접속하여 "test"라는 DSN을 가진 Tibero DBMS 서버에 있는 hello 프러시저(위에서 작성한 프러시저 예제 기반)를 호출하고 싶다면, 아래와 같이 URL 주소를 작성합니다.

```
http://12.34.56.78/tbpsm/test/hello?title=abc&text=def
```

웹 브라우저에서 위와 같이 입력하고 요청하면 로그인 화면이 나타납니다. 로그인 화면에 입력하는 아이디 및 비밀번호는 hello 프러시저 수행을 위해 로그인해야 하는 Tibero DBMS 계정의 아이디와 비밀번호와 동일합니다.

## 자동 로그인 기능 설정 방법

본 절에서는 URL 주소에 따라 자동 로그인할 수 있는 기능의 설정에 대해 설명합니다.

일반적으로 mod\_tbPSM와 연동되는 HTTP 서버에 웹 페이지 요청을 하면 로그인 화면이 나타나서 아이디 및 비밀번호를 직접 입력해야 합니다. 자동 로그인 기능을 설정하면 아이디와 비밀번호를 저장해서 자동 로그인합니다. 다만 모든 사용자가 해당 URL 주소로 접근이 가능해지기 때문에 보안상 주의가 필요합니다.

mod\_tbPSM에서는 mod.tbr 파일을 읽어들여 자동 로그인 기능을 지원합니다. mod.tbr 파일은 TB\_HOME/client/config 경로에 아래와 같은 형식으로 작성합니다.

**\[예 2] mod.tbr 작성 예제**

```
(LOCATION="/test")=(
    (USERNAME="tibero")
    (PASSWORD="tmax")
)

(LOCATION="/test2")=(
    (USERNAME="tibero") 
    (PASSWORD="tmax")
)

(LOCATION="/test3")=( (USERNAME="sys")
    (PASSWORD="tibero")
)
```

다음은 mod.tbr 예제의 내용에 대한 간략한 설명입니다.

<table><thead><tr><th width="238">항목</th><th>설명</th></tr></thead><tbody><tr><td>LOCATION</td><td>URL 주소의 상대 경로</td></tr><tr><td>USERNAME</td><td>접속할 DB 사용자 계정의 이름</td></tr><tr><td>PASSWORD</td><td>접속할 DB 사용자 계정의 비밀번호</td></tr></tbody></table>

'<http://12.34.56.78/tbpsm/test/hello?title=abc\\&text=def'와> 같이 접속한다고 했을 때, '<http://12.34.56.78/tbpsm>' 기준으로 상대 경로를 찾고, mod.tbr 파일에서 일치하는 LOCATION을 찾으면 설정된 'USERNAME'과 'PASSWORD'로 자동으로 로그인합니다.

위의 예제처럼 여러 개의 접속 정보를 사용할 경우 tbdsn.tbr 파일도 DSN 접속 정보를 수정해야 합니다.

**\[예 3] tbdsn.tbr 수정 예제**

```
test=(
    (INSTANCE=(HOST=localhost)
              (PORT=8629)
              (DB_NAME=tibero)
          )
)

test2=(
          (INSTANCE=(HOST=localhost)
                    (PORT=8629)
                    (DB_NAME=tibero)
          )
)

test3=(
          (INSTANCE=(HOST=localhost)
                    (PORT=8629)
                    (DB_NAME=tibero)
          )
)
```
