안녕하세요?
또 질문을 드립니다.
일단 참고가 될것 같아서 일전에 질문 내용을 담아습니다.
(귀찮으시면 읽지 말아 주십시오.)
> 안녕하세요? 오늘도 좋은하루 되었겠지요...
> 제게는 아주 고민스러운 질문을 드립니다.
>
> 현재 Accel 6.0에 Apache와 PHP, mysql 3.22.27 rpm버젼을 설치
> 사용중이었으나 'MySql.host' 라는 파일이 사라져버려(그럴만한 이유가
있
> 었습니다.) MySql에 접속을 할수없습니다.
>
> 그래서 현재 사용중인 DB는 없어 사용자가 직접컴파일하는 소스버젼을
설
> 치할려고 'www.mysql.com -> download for 3.22' 에 접속하여
> Tarball을 다운 받았습니다.
> (질문답에서 rpm으로 검색하니까 php/apache환경하에서 mysql이 rpm버젼
으
> 로 설치되었더라도 mysql만 따로 tar.gz파일을 다운받아 개별적으로 컴
파일
> 해도 전혀문제가 없다는 고수님의 의견에 확신을가져....)
>
> 기존 mysql 3.22.27 rpm버젼은 삭제해야되겠죠? (rpm -e mysql)
>
> 그런데 mysql만따로 설치를 할때 이미 설치된 php와 apache의 설정부분
을
> 고쳐주어야 하는 부분이 있는지요?
> 있다면 어느파일을 어떻게 고쳐야 하는지 자세히 가르쳐 주시면 감사하
겠
> 습니다.
>
> 예를들자면 mysql+php+apache 일괄설치시 php의 ./setup부분에서
> ~~~~~~~~~~~~~~
> ~~~~~~~~~~~~~~
> MySQL support? ('yes','no' or dir) [no]:/usr/local/mysql
> ~~~~~~~~~~~~~~~
> 위와같이 mysql의 directory를 지정해주는 부분이 나온다고
> 하던데(책에) 그렇다면 이미 설치된 mysql rpm버젼을 지우고
> 사용자가 직접컴파일하는 소스버젼을 설치한다면 이미지정된
> 위의 부분은 어떻게 수정을 해야하는지요?
> (rpm설치때와 컴파일하는 소스버젼 설치때의 directory가
> 다른걸로 알고 있습니다.)
>
> 위와 같은 문제에 대해 초보자가 아는바가없어 직접컴파일하는 소스버
젼
> 을 설치할려고 하니까 불안하고 또 알고 싶습니다.
>
> 내용이 너무 길었다면 양해바랍니다.
> > 내용은 알겠습니다.
> > 일단 php 이 컴파일시 mysql 설치된 디렉토리를 원하는 것은 그것에
사
> 용된 library 를 이용하기 위한 것입니다. 그러니 설혹 mysql 을 컴파일
하
> 여 설치하더라도 shared library 만 memory 로딩 할 수 있는 조건이 된
다면
> 당연히 아무런 문제가 없습니다.
> >
> > 개인적으로도 현재 php-apache 는 일단 rpm 패키지를 설치했고, mysql
> 은 컴파일해서 이용중입니다. 그리고 mysql 의 라이브러리 디렉토리인 ~m
ysq
> l/lib 를 /etc/ld.so.conf 디렉토리에 등록해 두고서 사용중입니다. 전
혀
> 문제없이 잘 작동합니다.
> > 하지만 반드시 명심해야 할것은 php 에 사용된 mysql 라이브러리 버전
과
> 컴파일한 mysql 의 버전이 일치해야겠지요.
> >
>
>
> 답변 감사합니다.
> 그래도 의문점이 있어서.......
>
> 1. 위에서 말씀하신 ..SHARED LIBRARY 만 memory 로딩할수있는 조건....
.
>
> 에서 조건이란 어떤내용인지????
>
>
> 2. /etc/ld.so.conf 파일을 vi로 아래와 같이 삽입하면되는지????
>
> /usr/local/mysql/lib <--- 이렇게
>
> 3. 이미설치된 mysql-3.22.27-1.src.rpm 버젼이라면
> 컴파일버젼은 mysql-3.22.27.tar.gz 버젼으로 설치하라는 말씀이신
지??
> ???
>
> 정말 귀찮게해서 죄송합니다.
>1. 어떤 프로그램이 공유 라이브러리에 있는 routine 을 호출할 경우 OS
>일단 그 공유 라이브러리를 찾아서 메모리에 올립니다. 이때 공유 라이브러
>리가 어디에 위치하는지 미리 그 경로를 알고 있어야 하는데, 이 경로를 가
>르쳐 주는 방법이 하나는 /etc/ld.so.conf 에 그 패스를 명시해 주는 방법
>이고, 다른 하나는 LD_LIBRARY_PATH 라는 환경변수에 그 라이브러리가 위치
>한 패스를 명시해 주는 방법입니다.
>2. 그렇습니다. 그렇게 명시하고 나서 그냥 ldconfig 를 사정없이 실행시
>켜 주면 됩니다.
>3. src.rpm 은 source RPM package 로서 설치할 수 있는 rpm >package 가
>아닙니다. 어찌 되었던지 설치한 rpm 버전이 3.22.27 이라면 컴파일할 프로
>그램의 버전도 당연히 3.22.27 이어야만 합니다.
_________________________________________________________________
컴파일 버젼으로(3.22.27) 설치는 무사히 하였습니다.
마지믹에 safe_mysqld & 하니까 /tmp/mysql.sock= 이 뜨 있었습니다.
그후 웹상에서 PHP 프로그램을 실행시키니까 다음과 같은 에러가....
1.---- warning:Mysql connection failed: can't connect to local
mysql server through
socket '/var/lib/mysql/mysql.sock'(111) ~~ 접속
할수없습니다. ---------
2. 그래서 (아무 생각없이) # mysqladmin -u root -p shutdown 으로
demon ended를 시켜놓고 # vi safe_mysqld 로 아래부분을 수정후
--------- ~~
if test -z "$mysql_unix_port"
then
mysql_unix_port='/tmp/mysql.sock'
수정 -->>> '/var/lib/mysql/mysql.sock'
3.수정후 #safe_mysqld & 실행 시키니까 '/var/lib/mysql/mysql.sock=
이 뜨 있었습니다.
이후 웹상에서 PHP를 실행시키니까 sql서버에 접속이 되었습니다.
4.그러나!!!! 즐거움도 잠시. table을 수정할려고 local상으로
접속을 시도하니까 다음과 같은 에러가 발생했습니다.
mysql]# mysql -u root -p mysql
Enter -> ERROR 2002: can't connect to local mysql server through
socket '/tmp/mysql.sock'(111)
PHP실행시는 '/var/local/mysql/mysql.sock'
local접속시는 '/tmp/mysql.sock'
우짜면 될까요? 해결방법이 있으면 꼭좀 부탁드립니다.
좋은 꿈 꾸시기 바랍니다.
** 참고로 이전에는 sock이 '/var/local/mysql/' 에 있었습니다.
새로 설치한 dir은 '/usr/local/mysql' 입니다. **
|