리눅스에서 개발서버를 돌리지만, 로컬에서의 개발환경이 있어야 생산성을 확보할 수 있다.  


1. apmsetup 7 버전을 특정 위치에 설치한다.  (내 위치는 C:\APM_Setup)
http://www.apmsetup.com/

이 때 주의할 점은 잘 모르면, cubrid db를 반드시 설치해야 한다.
로컬 pc에 cubrid db를 설치안하면 cubrid 연동이 안되서 어제 고생좀 했는데. 그 이유는 바로 php_cubrid.dll 이 로딩되기 위해서는 의존하는 cubrid window version의 DB의 cascci.dll 파일이 있어야 한다. 이 파일은 cubrid db를 설치할 때 생성되는 거라, 인터넷에서는 다운받기 힘들다. 만약 cascci.dll 파일이 있으면 cubrid db를 설치안해도 된다. cascci.dll 파일을 apache가 설치된 경로의 bin 디렉토리나 window의 system32 디렉토리안에 두어야 한다. 

PHP Warning:  PHP Startup: Unable to load dynamic library 'c:\\APM_Setup\\Server\php5\\ext\\php_cubrid.dll' - %1\xc0\xba(\xb4\xc2) \xbf\xc3\xb9\xd9\xb8\xa5 Win32 \xc0\xc0\xbf\xeb \xc7\xc1\xb7\xce\xb1\xd7\xb7\xa5\xc0\xcc \xbe\xc6\xb4\xd5\xb4\xcf\xb4\xd9.\r\n in Unknown on line 0


http://www.cubrid.com/zbxe/56862
http://www.cubrid.com/zbxe/160377#comment_161268

그러면, apache-php  연동이 된다. apmsetup 모니터를 보고 mysql 데몬을 내린다.



C:\APM_Setup\php.ini 파일을 보면,  php cubrid interface dll 파일 (php_cubrid.dll
) 로딩에 대해서 주석이 되어 있다.

;extension=php_cubrid.dll

그리고,  C:\APM_Setup\Server\PHP5\ext 디렉토리에 dll 파일이 있는 지 확인한다.



2. php-cubird 연동

C:\APM_Setup\php.ini 파일을 보면,  php cubrid interface dll 파일(php_cubrid.dll
) 에 대한 주석을 해제한다.

extension=php_cubrid.dll


그리고, 아파치 재시작을 하고 나서, 다음 php 정보를 보는 화면에서 cubrid로 검색해본다.

http://127.0.0.1/?page=phpinfo



이러면 완전 ok


3. xe (express engine)를 설치한다.

http://www.xpressengine.com 에 접속해서 xe core를 다운받고 C:\APM_Setup 밑의 xe 디렉토리에 설치한다.

아파치 설정 파일 "C:\APM_Setup\Server\Apache\conf\httpd.conf" 파일에서

DocumentRoot "C:/APM_Setup/htdocs"  를

DocumentRoot "C:/APM_Setup/xe"  로 수정하고 아파치를 재시작한다.


4. xe를 설치한다.

http://localhost 에 접근한다.



cubrid db를 선택한다.



리눅스 서버에서 접속해서 db를 하나 생성한다.

/opt/cubrid/bin 디렉토리에서 cubrid createdb windowtest 하면 windowtest 라는 논리 db가 만들어진다.

그리고, vi /opt/cubrid/conf/cubrid.conf 파일에서 server=test,windowtest 를 수정하여 windowtest 라는 논리 db가 cubrid db가 런치될 때마다 접근할 수 있게 한다.

사용자를 추가한다.

$ csql -C -u dba test

csql> create user root password 'root'

csql> commit

csql> select * from db_user;
확인


새로만든 계정으로 접근해본다.

$ csql -C -u root

패스워드는 위에서 적은 root ...
이 정보를 가지고 xe 설정에 넣어주면 끝.


그리고, 다시 xe 설치 화면으로 돌아가서 진행하면 된다.






Posted by 김용환 '김용환'
TAG CUBRID, xe


블로그에 작성한 1.5.0.4-beta서버 설치 방법과 비슷하다.


XE 1.5.0 beta 버전의 UI는 아직 익숙치 않고, 어디에 무엇이 있는지 전혀 모르겠음.. 다시 UI를 1.4대로 바꾸는 게 나을 것 같아..

1.4.5.10으로 설치하는 것으로 하고, cubrid 연동하는 것에 대한 설치 문서이다.




ubuntu 에서 가장 먼저  큐브리드 8.4을 설치해야 하고, test 라는 DB를 만든다.
(큐브리드는 버전에 영향을 받으니. 늘 버젼을 기억해야 한다. 하위 호환성을 절대 생각하면 안됨.)

 

$  sudo add-apt-repository ppa:cubrid/cubrid-8.4.0

$  sudo apt-get update

$ sudo apt-get install cubrid


http://www.cubrid.com/zbxe/152840 에 보면. 그 다음 synaptic package manager를 실행하고 재설치하라고 해서.. 재설치해 본다.

 


cubrid를 검색한다.

 

 

다시 설치 표시를 하고 난다 . 또는 설치를 선택한다.


php5-cubrid를 설치하지 말자, 꼬일 수 있다.


툴 바에 있는 Apply를 선택을 하면 아래 창을 뜨면서  설치를 진행할 것인지 묻는다. 설치를 진행한다.

image007.png 


시냅틱 꾸러미 관리자를 사용하고 나면 반드시 종료해야한다. apt-get을 하려다가 시냅틱 꾸러미 관리자가 사용한 lock때문에 진행이 안될 수 있다.


$ vi /home/kimyonghwan/.bashrc

   .   /etc/profile.d/cubrid.sh  추가



$  source /home/kimyonghwan/.bashrc

$ cubrid createdb test
    512.0M 크기의 데이터베이스 생성 중.

     CUBRID 2008 R4.0

 
$ cubrid service start
@ cubrid master start
++ cubrid master (이)가 수행되고 있습니다.
@ cubrid broker start
++ cubrid broker (이)가 수행되고 있습니다.
@ cubrid manager server start
cubrid manager server is not installed.






데몬이 정상적인지 확인 한다. 잘 되고 있다.

 


   /opt/cubrid/bin 디렉토리에서 db를 생성한다.

$ cubrid createdb test




$ cubrid server start test
@ cubrid server start: test

This may take a long time depending on the amount of recovery works to do.

CUBRID 2008 R4.0

++ cubrid server start: success


$ cubrid server status
@ cubrid server status
 Server test (rel 8.4, pid 5606)


$ ps -ef | grep 5606
1000      5606     1  0 10:48 ?        00:00:00 cub_server test
1000      5829  1874  0 10:49 pts/0    00:00:00 grep --color=auto 5606



 

그 다음은 XE에서 cubrid를 쓸 수 있도록 php-cubrid integration library(so)가 필요하다.  (내용을 읽다보면, 이 방법이 안통할 수 있다. 따라서, apt-get 방식을 사용해야 한다. 아래 내용을 다볼 것!!!)

http://www.cubrid.org/php_api_for_cubrid 에 접속


이 중에서 CUBRID 8.4.0, PHP 5.3.x를 선택하고, CUBRID-PHP5-5.3-LINUX-X86-8.4.0.0003.bin.zip을 클릭

그러면, 다음 주소로 연결된다.

http://sourceforge.net/projects/cubridinterface/files/PHP/PHP%20Driver/CUBRID%208.4.0/Linux/CUBRID-PHP5-5.3-LINUX-X86-8.4.0.0003.bin.zip/download


zip 파일을 /var/www/에 설치후, php5 lib 폴더로 이동한다. php가 로딩하면서 so 파일을 읽어서 작동되게 하기 위함이다.

$ sudo mv /var/www/cubrid.so /usr/lib/php5/20090626+lfs/


 

그리고, php.ini 파일을 수정하고 아파치 서버를 재시작한다.

$ vi /etc/php5/apache2/php.ini

[CUBRID]
extension=cubrid.so



$ sudo service apache2 restart





그러나 에러로그 보니. cubrid 라이브러리 로딩 실패..

PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/lib/php5/20090626+lfs/cubrid.so' - /usr/lib/php5/20090626+lfs/cubrid.so: undefined symbol: executor_globals_id in Unknown on line 0

음. 이거 머냐.. so 파일에 심볼하나가 없다..ㅡ.ㅡ;;





그냥 cubrid 공식 페이지에 있는 apt-get을 이용해서 ubuntu php-cubrid 설치 방법 선택한다.


 

$ sudo rm /usr/lib/php5/20090626+lfs/cubrid.so

$ sudo apt-get install php5-dev
$ sudo apt-get install php-pear
$ sudo pecl install cubrid
$ sudo pecl install cubrid-8.4.0.0003

설치 위치를 물어볼 때. /opt/cubrid 로 선택



다음과 같은 내용이 나오고, cubrid.so파일을 잘 저장했다고 나온다.
 

Build process completed successfully
Installing '/usr/lib/php5/20090626+lfs/cubrid.so'
install ok: channel://pecl.php.net/CUBRID-8.4.0.0003
configuration option "php_ini" is not set to php.ini location
You should add "extension=cubrid.so" to php.ini


다시 한번 확인하고, 아파치 재실행

$ cat /etc/php5/apache2/php.ini

[CUBRID]
extension=cubrid.so


$ sudo service apache2 restart






아파치 에러 로그에 deprecated는 되지만.. 큰 문제는 없다. 그대로 진행

[

Thu Oct 13 11:44:32 2011] [error] [client 127.0.0.1] PHP Deprecated:  Call-time pass-by-reference has been deprecated in /var/www/xe/classes/db/DBCubrid.class.php on line 682, referer: http://localhost/xe/index.php?act=dispInstallCheckEnv
[Thu Oct 13 11:44:32 2011] [error] [client 127.0.0.1] PHP Deprecated:  Call-time pass-by-reference has been deprecated in /var/www/xe/classes/db/DBCubrid.class.php on line 735, referer: http://localhost/xe/index.php?act=dispInstallCheckEnv
[Thu Oct 13 11:44:32 2011] [error] [client 127.0.0.1] PHP Deprecated:  Call-time pass-by-reference has been deprecated in /var/www/xe/classes/db/DBFirebird.class.php on line 710, referer: http://localhost/xe/index.php?act=dispInstallCheckEnv
[Thu Oct 13 11:44:32 2011] [error] [client 127.0.0.1] PHP Deprecated:  Call-time pass-by-reference has been deprecated in /var/www/xe/classes/db/DBMssql.class.php on line 552, referer: http://localhost/xe/index.php?act=dispInstallCheckEnv
[Thu Oct 13 11:44:32 2011] [error] [client 127.0.0.1] PHP Deprecated:  Call-time pass-by-reference has been deprecated in /var/www/xe/classes/db/DBMssql.class.php on line 596, referer: http://localhost/xe/index.php?act=dispInstallCheckEnv
[Thu Oct 13 11:44:32 2011] [error] [client 127.0.0.1] PHP Deprecated:  Call-time pass-by-reference has been deprecated in /var/www/xe/classes/db/DBMysql.class.php on line 460, referer: http://localhost/xe/index.php?act=dispInstallCheckEnv
[Thu Oct 13 11:44:32 2011] [error] [client 127.0.0.1] PHP Deprecated:  Call-time pass-by-reference has been deprecated in /var/www/xe/classes/db/DBMysql.class.php on line 487, referer: http://localhost/xe/index.php?act=dispInstallCheckEnv
[Thu Oct 13 11:44:32 2011] [error] [client 127.0.0.1] PHP Deprecated:  Call-time pass-by-reference has been deprecated in /var/www/xe/classes/db/DBPostgresql.class.php on line 587, referer: http://localhost/xe/index.php?act=dispInstallCheckEnv
[Thu Oct 13 11:44:32 2011] [error] [client 127.0.0.1] PHP Deprecated:  Call-time pass-by-reference has been deprecated in /var/www/xe/classes/db/DBPostgresql.class.php on line 621, referer: http://localhost/xe/index.php?act=dispInstallCheckEnv
[Thu Oct 13 11:44:32 2011] [error] [client 127.0.0.1] PHP Deprecated:  Call-time pass-by-reference has been deprecated in /var/www/xe/classes/db/DBSqlite2.class.php on line 436, referer: http://localhost/xe/index.php?act=dispInstallCheckEnv
[Thu Oct 13 11:44:32 2011] [error] [client 127.0.0.1] PHP Deprecated:  Call-time pass-by-reference has been deprecated in /var/www/xe/classes/db/DBSqlite2.class.php on line 467, referer: http://localhost/xe/index.php?act=dispInstallCheckEnv
[Thu Oct 13 11:44:32 2011] [error] [client 127.0.0.1] PHP Deprecated:  Call-time pass-by-reference has been deprecated in /var/www/xe/classes/db/DBSqlite3_pdo.class.php on line 465, referer: http://localhost/xe/index.php?act=dispInstallCheckEnv
[Thu Oct 13 11:44:32 2011] [error] [client 127.0.0.1] PHP Deprecated:  Call-time pass-by-reference has been deprecated in /var/www/xe/classes/db/DBSqlite3_pdo.class.php on line 502, referer: http://localhost/xe/index.php?act=dispInstallCheckEnv
[Thu Oct 13 11:44:32 2011] [error] [client 127.0.0.1] File does not exist: /var/www/favicon.ico

 
phpinfo로 cubrid가 제대로 설치되었는지 확인한다.


이렇게만 따라오면, xe 설치에서 DB를 cubrid로 선택할 수 있다.


터미널에서 cubrid 의 db와 계정을 만들어야 한다.

cubrid 서버를 실행할때 함께 띄우는 db를 지정하고, cubrid 서버를 재시작한다.

$ vi /opt/cubrid/conf/cubrid.conf

# server=foo,bar

이렇게 되어 있는 설정을 아래와 같이 수정 (아까 위에서 test라는 db를 만들었었다.)

server=test

 

$ sudo cubrid server restart


kimyonghwan@kimyonghwan-desktop:~$ csql test

 CUBRID SQL 수행기


도움말 메시지를 보려면 ';help' 명령어를 입력하세요.

csql>




csql 이라는 명령어를 이용해서 test 라는 db에 잘 접근했다.


xe 설치화면에서 cubrid DB 설정에서 admin 계정으로 접근하면 그냥 더이상의 진전이 안된다.


그래서, 오류 메시지가 잘 나오는 큐브리드 쿼리 브라우져를 이용하였다. 윈도우에 설치하고, ubuntu에 설치된 cubrid db에 접근해보았다.





xe 설정에서 admin계정으로 접근하니. 165 에러 발생


검색해보니. 계정에러이다.

4, Error Code:-165
"User "aaa(user name)" is invalid
- 원인 및 확인 사항:
1) aaa(user name) user가 없는 경우

   

윈도우에 큐브리드 DB 를 설치할 때는 admin /admin 으로 접속 가능했지만, 리눅스는 따로 계정을 만들어야 한다.


$ csql -C -u dba test

 CUBRID SQL 수행기


도움말 메시지를 보려면 ';help' 명령어를 입력하세요.

csql> create user root password 'root';

csql> commit

csql> select * from db_user;

 
만들어진 root 계정으로 접속하면, 잘 접근이 된다.

$csql -C -u root test


 

사용자 등록을 마치고 나서 XE DB  &관리자 정보 입력 에 정보만 잘 지정하면 된다.



db : test
사용자 이름 : root
비밀번호 : root
ip : 192.168.56.102
port : 30000

이렇게 입력하고 등록 버튼을 누른다.



 

 







큐브리드 쿼리 브라우저를 통해서 보면.. 아래와 같이 잘 table이 만들어졌는지 확인가능하다.

Posted by 김용환 '김용환'
TAG CUBRID, php, ubuntu, xe