* 컴파일 순서 : 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를 다시 컴파일 하면 됩니다.
'리눅스 문서' 카테고리의 다른 글
CentOS - Apache + SVN + Trac 연동 (0) | 2014.11.25 |
---|---|
[리눅스/NGINX] CentOs 5.7 64bit 에서 NGINX + PHP + MYSQL + memcache 설치 하기 (0) | 2014.11.25 |
MySQL 로그파일 정리하기 (0) | 2014.11.25 |
Subversion/Trac 백업 및 복구 (0) | 2014.11.25 |
오라클 캐릭터 셋(CHARACTER SET) 변경하기(9i) (0) | 2014.11.25 |