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

Apache 설치하기

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! 가 표시되면 정상적으로 설치된 것이다.

1386332_image1.png

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 구동

정상적으로 설치가 완료되었으면, 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 정보가 보이면 정상적으로 설치된 것이다.

1386346_image2.png1386348_image3.png

만약 정상적으로 보이지 않는다면 Apache web server 의 에러 로그(, /home/web/apache2/logs/error_log)를 참조하여 원인을 해결한다.

Apache web server 종료

Apache web server 를 종료하기 위해서는 아래와 같이 하면 된다.

% cd /home/web/apache2/bin

% ./apachectl stop

CUBRID 구동

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”를 선택하여 설치하면 된다.

1386330_image4.png

·      자신의 PC에서 CUBRID Manager Client 수행할 경우에는 windows system tray CUBRID icon 을 우클릭하여 보이는 메뉴에서 선택하여 수행시킨다. CUBRID Client 만 설치한 경우는 시작메뉴àCUBRID 아래 CUBRID Manager Client 를 선택하여 수행시킨다.

1386342_image5.png1386324_image6.png

·      localhost 를 선택하여 로그인 한다. 처음 설치시라면 그냥 연결을 클릭하면 된다.

1386326_image7.png

·      만약 자신의 PC 에서 LINUX 서버로 연결하는 경우에는 새사이트를 클릭하여 새사이트를 등록한다. 사이트명에 적당한 이름(, web server)을 주고, LINUX 서버의 IP address 를 주소란에 기입한 후, “연결을 클릭하면 등록내용이 저장되면서 연결이 된다. 이후로는 사이트명에서 등록한 이름(, web server)를 선택하면 된다.

1386350_image8.png

·      화면 오른쪽에 데이터베이스를 선택하면, 데이터베이스에 대한 로그인 화면이 보이고, 초기 설치시에는 데이터베이스 사용자 암호가 설정되어 있지 않으므로 여기서는 그냥 확인을 선택하면 된다.

1386352_image9.png1386336_image10.png

·      데이터베이스에 로그인후, 데이터베이스를 우클릭하여 보이는 메뉴 중 데이터베이스 서버 가동을 선택하여, 데이터베이스를 구동시킨다.

1386328_image11.png

간단 예제

다음은 실제 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 와 같은 형식으로 테스트하면 된다

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>

1386340_image12.png

insert.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 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>

1386338_image13.png