LINUX 에서 Apache, PHP 를 이용하여 CUBRID 사용하기
소개: LINUX환경에서 Apache 웹서버와 PHP 를 이용하여 CUBRID 를 사용하기 위하여 PHP CUBRID module 를
설치하는 방법 및 간단한 CUBRID 연동방법을 소개한다.
연동에 대한 상세한 방법은 매뉴얼 상의 PHP API 부분을 참고하기 바란다
2008-10-03 기술컨설팅팀 남재우,
CUBRID
적용 대상: LINUX, CUBRID2008, Apache2.2.10, PHP5.2
LINUX 환경에서Apache web server 를 설치하는 방법을 소개한다. Apache web server 는 Apache download 로부터 내려받을 수 있다. 보통 Apache HTTP Server 2.2.10 is the best available version 아래 Unix Source 를 내려받은 후, 내려받은 파일(예, httpd-2.2.10.tar.gz) 의 압축을 풀고 설치를 하면 된다.
설치는 일반 계정에서 자신의 계정아래에 설치하는 것으로 예를 들었다. 만약 root 계정에서 설치한다면 디폴트 설치 위치(--prefix 를 사용하지 않으면 되며, 설치 위치는 보통 /usr/local/apache2 임)를 그대로 이용하여도 된다.
#
설치를
위해 download 받은 파일은 사용자 계정 홈디렉토리로 옮긴다.
작업을 위한 것이며, 사용자가 편리한 디렉토리에 파일을 두면 된다. 사용자의 홈디렉토리는 /home/web 으로 간주한다.
# download 받은 파일의 이름은 httpd-2.2.10.tar.gz 로 간주한다.
# 압축을 푼후 tar 를 풀어준다.
% tar xvfz httpd-2.2.10.tar.gz
또는 % gzip –d httpd-2.2.10.tar.gz; tar xvf httpd-2.2.10.tar
# tar 를 풀게되면 httpd-2.2.10 이라는 디렉토리가 생기며 그 아래에 설치에 관련된 파일들이 존재한다.
% cd httpd-2.2.10
# 설치를 위하여 complie 을 해야 하며 compile 을 하기전에 여러 모듈을 동적 로드를 지원하기 위한 형태로 설정하여 준다.
% ./configure --enable-mods-shared=most --enable-modules=so --with-mpm=worker --enable-so --prefix=/home/web/apache2
# 에러없이 수행이 되었으면 compile 을 수행한다.
% make
# 정상적으로 수행되었으면, 설치한다.
% make install
# 설치완료후 아래 관리자메일계정과 서버이름을 설정화일에 등록하여 준다.
% vi /home/web/apache2/conf/httpd.conf
# ServerAdmin web_admin@cubrid.com (web server 관리자 e-mail 주소)과 같이 설정하고,
# ServerName my_hostname(서버이름 또는 IP address) 로 등록하여 준다.
# Listen 8000 (설치한 사용자 계정이 root가 아닌 경우, 설치한 apache web server 의 기본 포트인 80 은 사용할 수 없으므로 포트 번호를 변경한다. 일반적으로 8000 번을 많이 사용한다.)
★ 만약 80 포트를 그냥 사용하고 싶다면 웹 서버가 root 계정으로 구동되도록 변경하여 주어야 한다. 물론 구동은 현재 사용자 계정으로 하면 되고, 아래의 설정을 통해 일반 계정으로 구동하여도 root 계정으로 구동되게 된다.
% cd /home/web/apache2/bin
% chown root httpd
% chmod +s httpd
설치가 완료되면 정상적으로 설치가 되었는지 확인하기 위하여 apache web server 를 구동시킨다.
cd /home/web/apache2/bin
apachectl start
웹 브라우져를 구동시킨후 주소창에 http://localhost:8000 (LINUX에서 브라우져를 수행시킨 경우) 혹은 http://192.168.2.1:8000 (PC에서 브라우져를 구동시킨 경우, LINUX 서버의 IP(192.168.2.1로 간주함)) 을 입력한다. 아래와 같이 It works! 가 표시되면 정상적으로 설치된 것이다.
PHP 및 CUBRID module 설치
PHP 를 설치하기 위해서는 우선 Apache web server 를 종료시킨다.
cd /home/web/apache2/bin
apachectl stop
PHP 설치시 CUBRID module 을 같이 설치하며, PHP download 를 통하여 내려받을 수 있다. 보통 가장 최신 버전이 보이고, Complete Source Code 아래의 것(예, PHP 5.2.6 (tar.gz))을 내려받으면 된다.
다음으로 CUBRID PHP module 을 CUBRID download 아래 “PHP 모듈 다운로드”에서 Unix/Linux 용(예, cubrid_php_src_8.1.0.1177.tar.gz)을 내려받는다.
아래의 방법대로 내려받은 파일의 압축을 풀어주고, 설치를 진행한다.
#
설치를
위해 내려받은 파일들은 사용자 계정의 홈 디렉토리에 있는 것으로 간주한다.
# download 받은 파일의 이름은 php-5.2.6.tar.gz, cubrid_php_src_8.1.0.1177.tar.gz 으로 간주한다.
# 압축을 푼후 tar 를 풀어준다.
% tar xvfz cubrid_php_src_8.1.0.1177.tar.gz
% 또는 gzip -d cubrid_php_src_8.1.0.1177.tar.gz ; tar xvf cubrid_php_src_8.1.0.1177.tar
# tar 를 풀게되면 cubrid_phpext 라는 디렉토리가 생기며 그 아래에 설치에 관련된 파일들이 존재한다.
% cd cubrid_phpext
# cci 디렉토리를 만들고, 그 디렉토리 안에 CUBRID BROKER cci library 를 복사한다. 만약 다른 머신에 CUBRID 가 설치되어있다면 필요한 파일들만 가져오면 된다. 또한 CUBRID 는 다른 계정에 설치되어있을 것이므로 해당 계정에서 $CUBRID(CUBRID의 설치 위치)를 확인한다
% mkdir cci
% cp $CUBRID/include/cas_cci.h cci
% cp $CUBRID/lib/libcascci.a cci
# 만약 OS 가 64bit 라면 위의 라이브러리 대신 64bit 용 라이브러리를 복사한다.
% cp $CUBRID/lib64/libcascci.a cci
# PHP 설치 모듈의 압축을 푼후 tar 를 풀어준다.
% cd ..
% cd cubrid_phpext
% tar xvfz ../php-5.2.6.tar.gz
# CUBRID BROKER 와 연동을 위한 설정을 한다.
% cd php-5.2.6/ext
% mkdir cubrid
% cd cubrid
% ln -s ../../../src/* .
# PHP 설치 모듈의 configure file 에 CUBRID BROKER 설정 내용을 등록한다.
% cd ../..
% ./buildconf --force
# configure 를 실행한다. (PHP4.3, 4.4 의 경우 --enable-zmaintainer-zts 대신 --enable-experimental-zts)
% ./configure --prefix=/home/web/php --with-cubrid=shared --enable-zmaintainer-zts --with-apxs2=/home/web/apache2/bin/apxs
# 에러없이 수행이 되었으면 compile 을 수행한다.
% make
# 정상적으로 수행되었으면, 설치한다.
% make install
# cubrid error message file 을 복사한다.
% cp ../src/cubrid_err.msg /home/web/php/lib/php/extensions/no-debug-zts-xxxxxxxx
# 설치완료후 php.ini-dist 를 /home/web/php/lib 디렉토리에 복사한 후 편집기로 열어 CUBRID 관련 설정 사항을 추가한다. 주의할 것은 기존의 extension_dir 을 변경하거나 ; 로 막은 후 재정의 하여야 한다.
% cp php.ini-dist /home/web/php/lib/php.ini
% vi /home/web/php/lib/php.ini
extension_dir = "/home/web/php/lib/php/extensions/no-debug-zts-xxxxxxxx"
extension=cubrid.so
cubrid.err_path="/home/web/php/lib/php/extensions/no-debug-zts-xxxxxxxx"
# 저장후 apache 에 PHP 확장자를 등록한다
% vi /home/web/apache2/conf/httpd.conf
AddType application/x-httpd-php .php .phtm
정상적으로 설치가 완료되었으면, Apache web server 를 아래와 같이 구동한다.
% cd /home/web/apache2/bin
% ./apachectl start
PHP 및 CUBRID PHP module 동작 여부 확인
Apache web server 의 documents root (예, /home/web/apache2/htdocs) 에 아래의 내용으로 phpinfo.php 를 생성한다.
<? phpinfo.php ?>
웹 브라우져를 구동시킨후 주소창에 http://localhost:8000/phpinfo.php (LINUX에서 브라우져를 수행시킨 경우) 혹은 http://192.168.2.1:8000/phpinfo.php (PC에서 브라우져를 구동시킨 경우, LINUX 서버의 IP(192.168.2.1로 간주함)) 을 입력한다. 아래와 같이 PHP 가 표시되고, CUBRID 정보가 보이면 정상적으로 설치된 것이다.
만약 정상적으로 보이지 않는다면 Apache web server 의 에러 로그(예, /home/web/apache2/logs/error_log)를 참조하여 원인을 해결한다.
Apache web server 를 종료하기 위해서는 아래와 같이 하면 된다.
% cd /home/web/apache2/bin
% ./apachectl stop
CUBRID 와 연동을 하기위해서는 CUBRID service 가 구동되어있어야 하며, LINUX 의 경우 CUBRID 관리 계정으로 로그인하여 구동시켜준다.
% cubrid service start
다음으로 데이터베이스를 CUBRID Manager Client 를 이용하여 구동시켜주면 되며, 사용법은 다음과 같다. 참고로 CUBRID Manager Client 는 JAVA 로 개발되어 수행시키기 위해서는 JAVA RunTime 환경이 필요하다. JAVA RunTime 은 JAVA download 에서 내려받을 수 있으며, Java SE Runtime Environment (JRE) 을 내려받으면 된다.
· CUBRID Manager Client 는 LINUX 의 GUI 환경에서도 수행이 가능하므로, $CUBRID/cubridmanager/cmclient 를 실행시키면 된다.
· 자신의 PC에 설치하여 사용하기를 원하면, CUBRID 홈페이지에서 windows 용 제품을 내려받아 설치하면 되며, 설치시 CUBRID Manager Client 만을 설치하고자 한다면 설치 옵션에서 “CLIENT_ONLY”를 선택하여 설치하면 된다.
· 자신의 PC에서 CUBRID Manager Client 수행할 경우에는 windows system tray 의 CUBRID icon 을 우클릭하여 보이는 메뉴에서 선택하여 수행시킨다. CUBRID Client 만 설치한 경우는 시작메뉴àCUBRID 아래 CUBRID Manager Client 를 선택하여 수행시킨다.
· localhost 를 선택하여 로그인 한다. 처음 설치시라면 그냥 “연결”을 클릭하면 된다.
·
만약 자신의 PC
에서 LINUX 서버로 연결하는 경우에는 “새사이트”를 클릭하여 새사이트를 등록한다. 사이트명에 적당한 이름(예, web
server)을 주고, LINUX 서버의 IP
address 를 주소란에 기입한 후, “연결”을 클릭하면 등록내용이 저장되면서 연결이 된다. 이후로는
사이트명에서 등록한 이름(예, web server)를
선택하면 된다.
·
화면 오른쪽에 데이터베이스를 선택하면,
데이터베이스에 대한 로그인 화면이 보이고, 초기 설치시에는 데이터베이스 사용자 암호가
설정되어 있지 않으므로 여기서는 그냥 “확인”을 선택하면
된다.
·
데이터베이스에 로그인후,
데이터베이스를 우클릭하여 보이는 메뉴 중 “데이터베이스 서버 가동”을 선택하여, 데이터베이스를 구동시킨다.
다음은 실제 PHP 와 CUBRID를 연동하는 것을 간단하게 구성한 예제다. 가장 기본적인 기능과 특별히 주의해야 할 내용만을 다룬다.
이 예제를 수행하기 위해서는 먼저 접속하고자 하는 DB와 CUBRID BROKER가 구동 돼있어야 한다. 여기서는 설치 시에 자동 생성되는 “demodb” DB를 사용한다.
아래 소스들을 DOCUMENT_ROOT(예, /home/web/apache2/htdocs) 에 작성한다.
예제에서 사용된 LINUX서버의 IP address 는 192.168.2.1로 가정하였으며, 실제 사용하는 IP address 를 적어주면 된다. 웹 브라우져에서 http://192.168.2.1/select.php 와 같은 형식으로 테스트하면 된다
<html><head><meta http-equiv='content-type' content='text/html; charset=euc-kr'></head>
<body>
<center>
<table border=2>
<?
// .CUBRID 에 접속하기 위한 서버 정보를 설정한다. IP address 는 CUBRID(CUBRID BROKER) 서버가 설치되어있는 곳의 IP address(여기서는 localhost) 이며, port 는 CUBRID(CUBRID BROKER) 서버로 접속하기 위한 port 번호이다. port 번호는 설치시의 default 값이며 정확한 의미등을 알기위해서는 CUBRID 관리자안내서 를 참고하기 바람.
$host_ip = "192.168.2.1";
$host_port = 33000;
$db_name = "demodb";
// CUBRID 서버에 접속한다
$cubrid_con = @cubrid_connect($host_ip, $host_port, $db_name);
if (!$cubrid_con) {
echo "DB 접속 오류: " . cubrid_error_msg();
exit;
}
?>
<?
$sql = "select code, name, players from event";
// SQL 문장에 대하여 CUBRID 서버로 결과를 요청한다.
$result = cubrid_execute($cubrid_con, $sql);
if ($result) {
// SQL 처리 결과로 만들어진 결과셋에 대하여 column 이름들을 얻어온다.
$columns = cubrid_column_names($result);
// SQL 처리 결과로 만들어진 결과셋에 대하여 column 개수를 얻어온다.
$num_fields = cubrid_num_cols($result);
// 화면에 결과셋의 각 column 이름을 보여준다.
echo("<tr>");
while (list($key, $colname) = each($columns)) {
echo("<td align=center>$colname</td>");
}
echo("</tr>");
// 결과셋에서 결과 row 를 가져온다.
while ($row = cubrid_fetch($result)) {
echo("<tr>");
for ($i = 0; $i < $num_fields; $i++) {
echo("<td align=center>");
echo($row[$i]);
echo("</td>");
}
echo("</tr>");
}
}
// CUBRID 는 3-tier 구조로 동작이 되며, transaction 처리를 위하여 select 를 하더라도 transaction 의 일부로 처리를 한다. 따라서 원활한 동작과 성능을 위하여 select 처리를 하였더라도 commit(또는 rollback) 처리를 하여 transaction 을 정리해 주어야 만 한다. 자세한 사항은 CUBRID admin guide 를 참고하기 바람
cubrid_commit($cubrid_con);
cubrid_disconnect($cubrid_con);
?>
</body></html>
<html><head><meta http-equiv='content-type' content='text/html; charset=euc-kr'></head>
<body>
<center>
<table border=2>
<?
// .CUBRID 에 접속하기 위한 서버 정보를 설정한다. IP address 는 CUBRID(CUBRID BROKER) 서버가 설치되어있는 곳의 IP address(여기서는 localhost) 이며, port 는 CUBRID(CUBRID CAS) 서버로 접속하기 위한 port 번호이다. port 번호는 설치시의 default 값이며 정확한 의미등을 알기위해서는 CUBIRD admin guide 를 참고하기 바람.
$host_ip = "192.168.2.1";
$host_port = 33000;
$db_name = "demodb";
// CUBRID 서버에 접속한다.
$cubrid_con = @cubrid_connect($host_ip, $host_port, $db_name);
if (!$cubrid_con) {
echo "DB 접속 오류";
exit;
}
?>
<?
$sql = "insert into event(code, sports, name, gender, players) values(10000, '태권도','무한체급', 'M', 2)";
// SQL 문장에 대하여 CUBRID 서버로 처리를 요청한다.
$result = @cubrid_execute($cubrid_con, $sql);
if ($result == true) {
// 정상적으로 처리되었으므로 commit 처리한다.
cubrid_commit($cubrid_con);
echo("성공적으로 입력되었읍니다");
} else {
// 에러가 발생하였으므로 에러메세지를 보여준후, rollback 처리한다.
echo(cubrid_error_msg());
cubrid_rollback($cubrid_con);
}
cubrid_disconnect($cubrid_con);
?>
</body></html>