블로그 이미지
BJcomm
bjcomm

공지사항

최근에 받은 트랙백

글 보관함

calendar

1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31        
05-27 05:14

* 컴파일 순서 : mysql -> apache -> php
------------------------------------------------
mysql과 apache는 올바르게 컴파일되어 서비스가 제공 되었으나 php 컴파일이 올바르게 되지 않았습니다.
(중략)
configure: error: Cannot find libmysqlclient_r under /usr/local/mysql
Note that the MySQL client library is not bundled anymore!

[root@client2 mysql]# pwd
/usr/local/mysql/lib/mysql

[root@client2 mysql]# ls
libdbug.a libmyisammrg.a libmysqlclient.so.15 libmysys.a libheap.a
libmysqlclient.a libmysqlclient.so.15.0.0 libvio.a libmyisam.a libmysqlclient.la
libmysqlclient_r.so libmysqlclient.so libmystrings.a

원인)
libmysqlclient_r 이 mysql을 컴파일 할 때 생성되지 않아서 생기는 문제입니다.
Apache 가 Thread 모드로 설치되어있으나, MySQL 은 Thread Safe 옵션을 주지 않았기 때문입니다.
맨 처음 Apache 를 컴파일 할 때 --with-mpm=worker 옵션으로 MPM 방식을 Worker 로 지정하였습니다. Worker 방식의 경우 Thread 단위로 요청을 처리하지만 mysql 은 Thread 처리를 하도록 컴파일 되지 않았기 때문에 PHP 컴파일을 하면서 오류가 발생한 것입니다. 물론 Apache 컴파일시 prefork (기본값)으로 설치시에는 이런 문제가 발생하지 않습니다.

해결방안)
mysql 컴파일 시 다음 옵션을 추가해 봅니다.
--enable-thread-safe-client

# ./configure --prefix=/usr/local/mysql --with-charset=euckr --enable-thread-safe-client && make &&make install

[root@client2 mysql]# pwd
/usr/local/mysql/lib/mysql

[root@client2 mysql]# ls
libdbug.a libmyisammrg.a libmysqlclient_r.a libmysqlclient_r.so.15 libmysqlclient.so.15 libmysys.a
libheap.a libmysqlclient.a libmysqlclient_r.la libmysqlclient_r.so.15.0.0 libmysqlclient.so.15.0.0 libvio.a
libmyisam.a libmysqlclient.la libmysqlclient_r.so libmysqlclient.so libmystrings.a

mysql library 디렉토리에 libmysqlclient_r 가 올바르게 생성되었습니다.

이제 php를 다시 컴파일 하면 됩니다.

Comment