마크베이스(Machbase) 와 아파치 웹서버의 PHP 연동하기
시작
이 문서에는 PHP에서 마크베이스를 사용할 수 있도록 설치를 해 보는 것이다.
현재 마크베이스를 PHP에서 접속하기 위해서는 ODBC를 통해서 접근이 가능하므로, 아파치 웹서버 및 PHP 그리고, ODBC 설치를 통해 웹 환경에서 데이터베이스에 접근하는 과정을 설명하도록 하겠다.
운영체제 환경은 마크베이스의 리눅스 도커 이미지를 활용해서 설치했으며, 다른 환경에서도 유사하게 동작할 것으로 생각된다.
일단 마크베이스는 아래와 같이 도커에 설치된 환경인 것을 확인할 수 있다.
machbase@4bbdce10db9b:~$ echo $MACHBASE_HOME /home/machbase/machbase_home machbase@4bbdce10db9b:~$ cd $MACHBASE_HOME machbase@4bbdce10db9b:~/machbase_home$ ls 3rd-party collector dbs include lib meta trc webadmin bin conf doc install machbase-std-3.5.0.826b8f2.official-LINUX-X86-64-release.tgz sample tutorials machbase@4bbdce10db9b:~/machbase_home$
apache 및 php 설치 (우분투)
sudo apt-get install apache2 php5 unixodbc unixodbc-bin unixodb-dev php5-odbc sudo apache2ctl start
PHP 동작 확인
관리자 권한으로 /var/www/html/index.php 파일을 아래와 같이 만들고, 접속해 보자.
<?
echo "test";
?>
시스템 전체를 위한 ODBC 초기환경 설정 (/etc/odbc.ini)
아파치에서 PHP를 통해 ODBC를 사용하기 위해서는 시스템 전체에 적용이 가능한 DSN을 등록해 주어야 한다.
vi 를 통해 이 파일을 아래와 같이 생성하자.
sudo vi /etc/odbc.ini [machbase] Driver=/home/machbase/machbase_home/lib/libmachbaseodbc_dll.so DBNAME=mydb SERVER=127.0.0.1 PORT_NO=5656 UID=SYS PWD=MANAGER NLS_USE=UTF8
그리고, isql machbase 로 테스트해서 동작하면 일단 성공이다.
machbase@4bbdce10db9b:~$ isql machbase +---------------------------------------+ | Connected! | | | | sql-statement | | help [tablename] | | quit | | | +---------------------------------------+ SQL> machbase@4bbdce10db9b:~$
첫번째 단계인 시스템 레벨에서의 ODBC 설정이 끝났다.
혹시 마크베이스를 위한 ODBC 설치를 더 알고 싶으면, 다음의 링크를 참조하라.
PHP에서 ODBC 사용하기
우선 모든 모듈이 제대로 로딩되도록 하기 위해 아파치 서버를 재구동시킨다.
sudo apache2ctl restart
그리고, 아래와 같은 파일을 만들고, 웹 브라우저에서 로딩한다.
/var/www/html/odbc.php

m$table에서 데이터를 select 한 후에 출력하는 루틴이다.

위와 같이 출력되면 모든 설정이 완벽하게 된 것이다.
에러가 발생한다면?
아파치 웹서버의 PHP에서 ODBC를 통해서 마크베이스를 사용하는 것은 꽤 복잡한 과정이다.
왜냐하면, 모든 솔루션들이 서로 연관되어 있기 때문에 작은 실수도 에러를 만들어 내기 때문이다.
만일 에러가 발생하면, 아래의 질문에 대해 생각해 보도록 한다.
- 마크베이스 서버가 구동되어 있는가? 의외로 데이터베이스를 띄우지 않는 경우가 있다.
- ODBC의 odbc.ini 의 내용이 정확한가? 포트번호나 DSN의 이름이 틀리는 경우가 있다. PORT_NO로 해야 할 것을 PORT로 하는 경우가 있다.
- LD_LIBRARY_PATH에 모든 패스가 등록되어 있는가? 빠져 있으면, 라이브러리 로딩 에러가 발생한다.
이제까지 잘 설치되었다면, PHP 에서 마크베이스를 잘 활용할 수 있는 환경이 설정된 것이다.
Contact the Machbase team with your questions!
info@machbase.com