http://www.ubuntu.com
4월이 지나고, 10월이 되어 벌써 우분투 9.10 의 출시일이 얼마남지 않았다.

코드명은 Karmic Koala   보통 우분투 버전을 풀네임으로 쓰지 않으면 앞글자를 썼는데.
이번 버전은 뒷글자가 많이 쓰일듯 하다. 코알라. ^^

난 주로 LTS 버전을 사용한다. 그렇다 보니 아직 Hardy 를 쓰고 있다.
다음 LTS 버전은 10.04 인 Lucid Lynx 라고 한다.

이번 버전은 부팅속도가 상당히 빨라졌다고 한다.
아직 베타버전이지만, 설치해서 테스트 해봐야 겠다.


코알라.
반응형

WRITTEN BY
1day1
하루하루 즐거운일 하나씩, 행복한일 하나씩 만들어 가요.

,
기존에 qmail + vpopmail 을 cdb 방식으로 사용하다가 mysql 방식으로 바꿔서 설치해봤다.
특별한 차이는 없고, 계정정보를 mysql db 에 저장하여 사용한다.

그런데, 기존의 계정정보를 mysql 으로 옮기는 방법을 설명한다.
vpopmail 에 관련 명령이 있다. vconvert

vconvert 는 /etc/passwd 의 계정정보(기존 sendmail 방식이나, qmail + checkpasswd 방식) 를 옮길 수도 있고, cdb 방식 , mysql 방식등 서로간의 계정정보를 옮길 수 있다.

-e 는 /etc/passwd  에 해당하는 옵션이다.
-c 는 cdb 방식 , -m 은 mysql 방식(정확히는 sql)이다.

그래서 변환 방식은
vconvert -c -m  또는  vconvert -c -m {도메인명}
방식으로 변환하면 된다. ( FROM -c TO -m 의 순서라고 생각하면 된다.)

이때 변환시 vconvert 가 참조하는 파일은 /var/qmail/users/ 의 cdb 파일을 참조한다.
계정을 옮길때  기존의  ~vpopmail/domains 폴더와  /var/qmail/users 폴더를 백업해놓는다.
이 데이터를 기준으로 변환된다. 새서버 세팅후에 해당 디렉토리를 교체해준다.
위 명령으로 옮기면 된다. 이때 vpopmail.mysql 세팅이 되어 있어야 한다.
바로 mysql 에 연결해서 vpopmail 테이블에 계정정보를 저장하기 때문이다.


한가지 주의할 사항이 있다.
/var/qmail/users 를 옮겨올때,  vpopmail/vchkpw 의 UID/GID 가 동일하다면 상관없지만, 다르다면 바꿔줘야 한다.
+mydomain.com-:mydomain.com:108:107:/home/vpopmail/domains/mydomain.com:-::
108:107 부분을 새 시스템에 맞게 바꿔준다.
바꿔준후에 적용하는 방법은  /var/qmail/bin/qmail-newu  를 실행시켜주면 cdb 파일이 재 설정된다.


주의사항 하나더.
vconvert 하면  control 의 rcpthosts , virtualdomains 등의 설정도 자동갱신해주는 줄 알았는데.
수동으로 넣어줘야 한다. /var/qmail/control 도 같이 백업해 주는 것이 좋겠다.

반응형

WRITTEN BY
1day1
하루하루 즐거운일 하나씩, 행복한일 하나씩 만들어 가요.

,
지난번 qmail + vpopmail 은 cdb 를 이용하는 방법이었다.(http://blog.1day1.org/329)
즉, 사용자 계정정보를 txt 형태로 저장하는 것이었다.

사용자 계정정보를 mysql 을 이용한  디비에 저장하는 방법을 사용해보자.

기존 cdb 방식에서 " --with cdb " 를 빼고 SRPM 빌드를 하면된다.
rpmbuild --rebuild knetqmail-0.0.3.src.rpm

빌드전에 mysql-devel 패키지를 설치해준다.

mysql 이 /usr/local/mysql 에 설치가 되어 있지 않다면..
yum install mysql-devel
그리고, /usr/local/mysql/include , /usr/local/mysql/lib 를 각각  심볼릭 링크해준다. (64bit 환경)
ln -s /usr/include /usr/local/mysql/include
ln -s /usr/lib64 /usr/local/mysql/lib

빌드하고 설치 후에 mysql DB 생성 해준다.
mysql> create databases vpopmail ;
mysql>  GRANT  ALL PRIVILEGES ON vpopmail.* TO 'vpopmail'@'localhost'  IDENTIFIED BY '계정암호' WITH GRANT OPTION ;
mysql> flush privileges;
vpopmail 이 mysql 계정에 접근할 수 있도록 설정을 바꿔준다.
/home/vpopmai/etc/vpopmail.mysql 을 편집한다.
아래와 같은 라인을 DB 명및 계정/암호 등을 맞게 수정한다.
# host|port|user|password|database
#
localhost|0|root|secret|vpopmail
기본값이 root 계정을 이용하는 것인데, vpopmail 계정을 생성해서 해당 계정으로 바꿔주어도 된다.
계정및 DB 는 자신이 원하는 값으로 바꾸면 된다.
localhost|0|vpopmail|계정암호|vpopmail


vadddomain 등 명령을 내렸을때 다음과 같은 에러가 난다면...
Error - no authentication database connection. Initial open
vpopmail 에서 mysql 으로 연결이 정상적으로 이뤄지지 않는다.
64bit 환경에서 빌드한 경우 위와 같은 에러가 날 수 있다.
strace vadddomain mydomain.com >& debug.txt  
등으로 체크해보면...

위와 비슷한 메세지를 볼 수 있다.(처음 부분)
open("/usr/local/mysql/lib/mysql/tls/x86_64/libmysqlclient.so.15", O_RDONLY) = -1 ENOENT (No such file or directory)
stat("/usr/local/mysql/lib/mysql/tls/x86_64", 0x7fff9dba66c0) = -1 ENOENT (No such file or directory)
open("/usr/local/mysql/lib/mysql/tls/libmysqlclient.so.15", O_RDONLY) = -1 ENOENT (No such file or directory)
stat("/usr/local/mysql/lib/mysql/tls", 0x7fff9dba66c0) = -1 ENOENT (No such file or directory)
open("/usr/local/mysql/lib/mysql/x86_64/libmysqlclient.so.15", O_RDONLY) = -1 ENOENT (No such file or directory)
stat("/usr/local/mysql/lib/mysql/x86_64", 0x7fff9dba66c0) = -1 ENOENT (No such file or directory)
open("/usr/local/mysql/lib/mysql/libmysqlclient.so.15", O_RDONLY) = 3
진한 부분이 mysql 라이브러리를 불러오는 부분인데, 좀 이상하다.
윗부분에서 x86_64 에서 불러오지 못한다.  해당 위치를 확인해보면.(/usr/local/mysql/lib/mysql)
-rw-r--r-- 1 root root  21408 Sep 22  2008 libdbug.a
-rw-r--r-- 1 root root  73040 Sep 22  2008 libheap.a
-rw-r--r-- 1 root root 465624 Sep 22  2008 libmyisam.a
-rw-r--r-- 1 root root  41978 Sep 22  2008 libmyisammrg.a
-rw-r--r-- 1 root root 872012 Sep 22  2008 libmysqlclient.a
-rwxr-xr-x 1 root root    879 Sep 22  2008 libmysqlclient.la
lrwxrwxrwx 1 root root     24 Sep 22  2008 libmysqlclient.so -> libmysqlclient.so.15.0.0
lrwxrwxrwx 1 root root     24 Sep 22  2008 libmysqlclient.so.15 -> libmysqlclient.so.15.0.0
-rwxr-xr-x 1 root root 640162 Sep 22  2008 libmysqlclient.so.15.0.0
-rw-r--r-- 1 root root 493164 Sep 22  2008 libmystrings.a
-rw-r--r-- 1 root root 448720 Sep 22  2008 libmysys.a
-rw-r--r-- 1 root root  11890 Sep 22  2008 libvio.a
이런식이다. x86_64 같은 경로는 없다.(위의 라이브러리는 rpm 설치시 복사되는 듯 하다. 혹은 rpmbuild 시)
즉, 64bit 환경에서는 x86_64 에서 불러와야 하는데, 아무도 32bit 라이브러리를 불러오기 때문인 듯 싶다.

/usr/local/mysql/lib 를 libx 로 이름을 바꿔보고 다시 테스트 해봤다.
open("/usr/local/mysql/lib/mysql/tls/x86_64/libmysqlclient.so.15", O_RDONLY) = -1 ENOENT (No such file or directory)
stat("/usr/local/mysql/lib/mysql/tls/x86_64", 0x7fffbebbde90) = -1 ENOENT (No such file or directory)
open("/usr/local/mysql/lib/mysql/tls/libmysqlclient.so.15", O_RDONLY) = -1 ENOENT (No such file or directory)
stat("/usr/local/mysql/lib/mysql/tls", 0x7fffbebbde90) = -1 ENOENT (No such file or directory)
open("/usr/local/mysql/lib/mysql/x86_64/libmysqlclient.so.15", O_RDONLY) = -1 ENOENT (No such file or directory)
stat("/usr/local/mysql/lib/mysql/x86_64", 0x7fffbebbde90) = -1 ENOENT (No such file or directory)
open("/usr/local/mysql/lib/mysql/libmysqlclient.so.15", O_RDONLY) = -1 ENOENT (No such file or directory)
stat("/usr/local/mysql/lib/mysql", 0x7fffbebbde90) = -1 ENOENT (No such file or directory)
open("/etc/ld.so.cache", O_RDONLY)      = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=84051, ...}) = 0
mmap(NULL, 84051, PROT_READ, MAP_PRIVATE, 3, 0) = 0x2b05b2aa7000
close(3)                                = 0
open("/usr/lib64/mysql/libmysqlclient.so.15", O_RDONLY) = 3
역시 마지막줄의  /usr/lilb64/mysql 에서 불러오는 것을 볼 수 있다.
이렇게 하면 정상적으로 에러없이 계정이 생성된다.

또는  /usr/local/mysql/lib/mysql/  에  심볼릭 링크를 걸어줘도 된다.
ln -s /usr/lib64/mysql  x86_64
아무튼 /usr/local/mysql/lib/mysql/libmysqlclient.so.15 을 불러오면 64bit 에서는 정상실행(연결)되지 않는다.

ps. 일반적으로  /usr/local/mysql 에는 아무것도 없을 것이다.
 (mysql 을 소스컴파일 해서 해당 위치를 지정하지 않는이상)
 가상머신에 깔려있는 VM 이미지가  mysql 이 설치되어 있는 것 같다.



근데 궁금한 것이 있다.
과연 vpopmail 을 mysql 연결이 어떤 이점이 있을까?
아무래도 파일보다는 DB 가 관리상 편하긴 할 것이다.
그런데, 메일의 잦은 접속때문에 DB connect 문제가 생기지 않을까?
계정확인을 위한 select 가 거의 대부분을 차지 하기 때문에 큰 문제가 아닐까?
메일서버가 DB서버도 겸하고 있을때는 한쪽의 부하가 다른 쪽에 영향을 주지 않을까?
아니면 vpopmail 의 컨넥션은 한번 이루어지고 계속 연결상태를 유지하나?(소스를 들여다 봐야 겠다)


반응형

WRITTEN BY
1day1
하루하루 즐거운일 하나씩, 행복한일 하나씩 만들어 가요.

,
큐브리드 를 설치하고, php 모듈을 올리기 위해 몇가지 주의할 사항이 있다.

참고로 http://blog.1day1.org/324  는 우분투64bit 환경에서 모듈컴파일 하는 방법이다.
우분투 64bit 의 php 는  Centos 의 php 모듈로도 쓸 수 있다.
다만 몇가지 환경이 맞아야 한다.

큐브리드 공식페이지에서는 현재 소스형태로 제공되고 있다.
이전에는 ( http://dev.naver.com/projects/cubrid-php/download )
Centos 5, php 5.1.6 을 기준으로 cubrid.so 를 배포했다. 같은 환경이라면 정상적으로 작동하지만, 다른 환경에서는 따로 소스를 컴파일해서 사용해야 한다.

1. php 버전이 맞아야 한다.
  centos 5.1.6 이 공식버전이고,  우분투는 5.2.x 버전이다.
  둘중 하나를 맞춰야 한다. ( 나는 centos 를 업그레이드 했다. )

2. 64bit(x64) , 32bit (i386) 가 맞아야 한다.
  당연하겠지만, 사용되는 라이브러리 등이 달라지기 때문에 아키텍트(?)를 맞춰야 한다.



기타 cubrid 설치위치도 영향을 주는가?
테스트를 해보니, 기본 /opt/cubrid 에 설치된다.(rpm 패키지 기준)
바이너리를 비교해보니, cubrid 설치위치가 다른 부분이 있다.
다른 환경들도 테스트 해보겠지만, cubrid 설치위치도 영향을 주는 듯 하다.
아직 정확한 테스트를 하지 않아서 어떤 영향을 주는지 혹은 영향이 없는지 확인하지 않았다.

직접 설치시 다른 경로로 지정하는 경우에는 php 모듈이 작동하지 않을 수 있다.
모듈이 정상적으로 올라오지 않으면 이 부분을 확인해 본다.


[추가]
3. cubrid 설치 위치도 어느정도 영향이 있다.
위 사항을 테스트 한 결과를 정리해본다.

모듈이 제대로 올라오지 않는 경우 아파치에러로그에 다음처럼 메시지가 나온다.
PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/lib/php/modules/cubrid.so' - libcascci.so.8: cannot open shared object file: No such file or directory in Unknown on line 0
cubrid.so 모듈이  libcascci.so.8 을 로드하는데 실패했기 때문이다.
공유라이브러리의 문제라면
/opt/cubrid/lib64 에서 해당 라이브러리 파일을 만들어 준다.
-rw-r--r-- 1 root root 586516 2009-09-20 18:41 libcascci.a
lrwxrwxrwx 1 root root     18 2009-09-23 18:34 libcascci.so -> libcascci.so.8.2.1
-rwxr-xr-x 1 root root 348625 2009-09-20 18:41 libcascci.so.8.2.1
이런식으로 libcascci.so 만 생성되어 있다.
ln -s libcascci.so.8.2.1 libcascci.so.8
이렇게 링크해서 만들어 준다.(설치시 왜 만들어 주지 않는지 모르겠다. (lib 쪽은 생성되어 있다.)



centos i386/x64 , ubuntu i386/x64  에서 테스트 중인데, 작동여부가 조금씩 차이가 있다.
결과가 뒤죽박죽이라 조금 혼란스럽다.(추후 다시 정리해야 겠다)

반응형

WRITTEN BY
1day1
하루하루 즐거운일 하나씩, 행복한일 하나씩 만들어 가요.

,
Centos 5 는 사용하기 편한 배포판중 하나다.(개인적으로 우분투가 좋다)
yum 으로 패키지 관리하는 것도 우분투(데비안)의 apt-get  부럽지 않을만큼 편하다.

그런데, centos5 가 나온지 꽤 되어서 인지 버전이 낮은 프로그램이 있다.
그중 하나가 php 인데, 공식지원은 5.1.6 버전이다.

5.2.x 버전을 사용하기 위해서는 비공식 저장소를 이용해야 한다.

http://wiki.centos.org/AdditionalResources/Repositories
를 보면 추가 가능한 저장소들이 있다. 이중 CentOS-Testing 를 이용하자.
# cd /etc/yum.repos.d
# wget http://dev.centos.org/centos/5/CentOS-Testing.repo
테스팅 저장소를 등록한다.

php 업데이트 방법은
# yum --enablerepo=c5-testing update php
혹시 php-mcrypt 같은 추가로 설치한 확장이 같이 업데이트 되지 않으면 별도로 업데이트해준다.
# yum --enablerepo=c5-testing update php-mcrypt


참조 : SRPM 으로 하는 방법
http://echodittolabs.org/blog/2009/05/all-i-want-php-52-centosrhel
반응형

WRITTEN BY
1day1
하루하루 즐거운일 하나씩, 행복한일 하나씩 만들어 가요.

,