mid(windogs6392@hanmail.net / dog@dog.sarang.net) # iks22.sarang.net, hops.sarang.net, database.sarang.net 에 감사드립니다. 제목 : 솔라리스 7 에 postgreSQL 6.5 깔아서 아파치와 연동하기 먼저 준비해야 할 환경에 대한 글을 붙여 놓겠습니다.. 저와 같이 텅텅 빈 솔라리를 가지고 있다는 가정하에서 출발합니다 ##################################################################################### ======================================================= Frequently Asked Questions (FAQ) for PostgreSQL V6.5 Sun Solaris Specific TO BE READ IN CONJUNCTION WITH THE NORMAL FAQ ======================================================= last updated: Thu Sep 21 9:30:00 CET 1999 current maintainer: Marc Liyanage (liyanage@access.ch) original author: Marc Liyanage (liyanage@access.ch) 번역: mid (windogs6392@hanmail.net) # 주: 짧은 글이지만 제가 까막눈이라 거의 소설을 썼습니다. 중학생 이상이라면 차라리 원문을 보는것이 나을듯..(postgresql 홈에 가심 있습니다) 그리고 여기에 낄 얘긴지 모르겠는데,, 솔라리스2.6 gzip은 문제가 있다더군여 GNU gzip을 사용하라는 얘기가 있습니다. content: 1.1) 솔라리스용 포스트그래스의 인스톨과 빌드에 필요한 툴은 무엇인가? 1.2) 포스트그래스를 빌드하기 전에 필요한 사항은? 1.3) postmaster를 실행할 때 "IpcMemoryCreate" 에러가 나는 이유는? 1.4) initdb를 시도할 때 발생하는" Can't tell what username to use" 에러의 원인은? A) Contributors Notes: - 명령어는 bash 쉘을 기준으로 하였다. 만약 당신이 다른 쉘을 쓰고 있다면, 환경변수에 대한 특정 명령어의 수정이 필요하다 - 이 문서는 솔라리스 2.6에 대한 지침서이다. ----------------------------------------------------- Section 1: PostgreSQL 빌드와 인스톨 ----------------------------------------------------- 1.1) 솔라리스용 포스트그래스의 인스톨과 빌드에 필요한 툴은 무엇인가? - GNU flex 2.5.4 혹은 그 이후 버전 (lex는 솔라리스 2.6 작업 환경에 포함되어 있지 않다) - GNU bison (yacc는 솔라리스 2.6 작업 환경에 포함되어 있지 않다) - GNU zip (gzip 과 especially zcat 이 필요하다) - GNU make - GNU readline library 그리고 - GNU cc(gcc 2.8.1) 만약 당신이 솔라리스 패키지를 좋아한다면 당신은 아래에서 툴을 찾을 수 있다. http://www.sunfreeware.com 소스를 원한다면 아래에서 찾을 수 있다. http://www.gnu.org/order/ftp.html 1.2) 포스트그래스를 빌드하기 전에 필요한 사항은? 공유 라이브러리 --------------- 기본적으로 인스톨 작업은 "/usr/local/psql/lib" 에 공유 라이브러리를 넣게 되지만, dynamic loader 는 "/usr/lib" 나 셋팅된 LD_LIBRARY_PATH 에서 심볼릭 링크로 연결하여 사용자의 db 시스템 기동시 사용된다. 첫번째 기동시 당신은 "initdb" 실행 문제를 해결해야 한다. 그것은 때때로 아래와 같이 실패하기 쉽다. ld.so.1: pg_id: fatal: libpq.so: open failed: No such file or directory 우리는 당신이 빌드를 시작하기전 라이브러리를 포함하는 디렉토리 path에 환경변수 LD_RUN_PATH 를 지정할 것을 권고한다. 이것은 바이너리 path 를 링크해 주기 위함이다. Do this: # export LD_RUN_PATH=/usr/local/pgsql/lib (혹은 임의로 정한 라이브러리 공간을 선택) 아래는 이 사항에 대한 정보를 제공하는 사이트이다: http://www.visi.com/~barr/ldpath.html zcat ---- 만약 - 솔라리스 zcat 과 GNU zcat 이 둘다 시스템에 인스톨 되어 있다면 (e.g. 전자는 /usr/bin, 그리고 후자는 /usr/local/bin) - "configure"나 "which zcat"으로 가려낸다. configure는 GNU zcat을 찾아 주는데 필요하다. configure로 선별하는데 실패하여 "gmake install" 명령을 실행하지 못하는 이유는 솔라리스 zcat 이 .gz 압축 문서를 취급하지 못하기 때문이다. 해결책은 # export GCZAT=/usr/local/bin/zcat (혹은 어딘가에 있는 GNU zcat을 사용하는 것이다) 이것은 configure 실행 이전 작업이다. 1.3) postmaster를 실행할 때 "IpcMemoryCreate" 에러가 나는 이유는? (main FAQ file 3.4를 참고할 것) 솔라리스 2.6 이하에서는, 커널 파라메터에 디폴트 공유 메모리의 최대 세그먼트 크기가 너무 낮게 셋팅 되어 있다. 해결책은 /etc/system 에 아래와 같은 라인을 추가하고 리부팅 하는 것이다. set shmsys:shminfo_shmmax=0x7fffffff 솔라리스의 공유 메로리에 대한 훌륭한 제안을 다음 사이트에서 발견할 수 있다. http://www.sunworld.com/swol-09-1997/swol-09-insidesolaris.html 1.4) initdb를 시도할 때 발생하는" Can't tell what username to use" 에러의 원인은? postgres user의 .bash_profile 같은 스타트업 스크립트에 아래 구절을 추가한다. export USER=postgres ---------------------------------------------------------------------- Section A: Contributors ---------------------------------------------------------------------- - Jose Luis Rodriguez Garcia 1.3의 shmmax 파라메터를 0xffffffff 에서 0x7fffffff 로 바꿀것을 제안한다. 이유는 그 값이 솔라리스 2.6 이전 버전의 값이기 때문이다. ######################################################################################## 위의 글을 읽으셨으면 소스를 다운받아 아무데나 풉니다.. 위에서 말한대로 bison 하고 flex 가 있어야 합니다(flex 꾸진 버전은 안됩니다) www.sunfreeware.com 이란데 가심 있을겁니다... 그러나 저같이 솔라리 새삥을 가지고 게신 분들은 아마도 flex 설치가 잘 안될 겁니다.... 그럼 flex 만 붙들고 날 새느냐... 그냥 넘어가도 방법은 있습니다. 빌드는 postgres 계정으로 하는게 좋을듯 싶습니다. 저의 경우는 /usr/local/pgsql 을 postgres의 홈으로 만들었습니다. 먼저 포스트그래스 풀어논 디렉으로 가서 INSTALL 파일을 주의깊게(영어에 자신 있음) 읽어보구여 저같이 까막눈이면 그냥 소스 디렉으로 가서 ./configure flex 업그레이드 안하신 분들은 옵션이 필요합니다. --without-CXX 그럼 아마 순조롭게 컨피그 할껍니다..... 다음은 make make install 끝입니다... make 첨 하실때 무한루프 돌 수도 있습니다(저는 꼭 그러더군여) 그럴땐 기다리지 말고 끊었다 make 다시하세여.. 위의 과정에서 에러가 난다면 앞서 글의 문제일 것입니다. 위의 글과 여기 저기서 주워 모은 결과를 토대로 한 제 postgres 계정의 .profile 일부분입니다. PATH=/usr/bin:/usr/local/pgsql/bin:/usr/ucb:/etc:. PGLIB=/usr/local/pgsql/lib PGDATA=/usr/local/pgsql/data LD_LIBRARY_PATH=/usr/openwin/lib:/usr/local/pgsql/lib:/usr/lib USER=postgres export PATH USER PGDATA PGLIB LD_LIBRARY_PATH man 은 빼 먹은거 같은데 나중에 적당한 곳으로 써 주면 되겠죠 맨 마지막 export의 의미를 몰라 하루간 삽질했습니다....T.T 이렇게 해놓고 postgres로 빌드하면 initdb 까지는 잘 될겁니다. 그리고 나서 정상적이라면 바로 "IpcMemoryCreate" 에러랑 " Can't tell what username to use" 에러가 날 거구여 위의 글대로 손보면 됩니다.....(리부팅이 필요함다) 시스템 시작시 postgres의 구동은 저의 경우 /etc/rc2.d 에 S97postmastersh 라는 스크립트를 만들었습니다 #!/bin/sh echo "PostgreSQL Starting..." su postgres -c "/usr/local/pgsql/bin/postmaster -S -i -D /usr/local/pgsql/data" 옵션은 아파치와의 연동시 반드시 필요합니다. 다음은 아파치와의 연동이 문제군여... 여기서 많은 도움이 된 hops님의 글(리눅스서 mysql+php+apache)을 인용하겠습니다. ########################################################################################################### Apache1.3.9, PHP4 Beta3를 DSO방식으로 설치 이 문서는 GPL을 따르기에 자유로이 수정, 배포 가능합니다. 작 성 자 : hops(최 호필) 작 성 일 : 2000. 1. 14 아파치와 PHP4 Beta3(이하 PHP4)를 DSO방식과 DSO가 아닌 방식으로 설치를 해 보았다. 그 중 DSO방식으로 설치를 이 문서에 남긴다(DSO가 아닌 방식은 Apache_php4_jserv.txt를 참고하길 바란다.). 두가지 방법을 다 해본 결과 DSO방식이 더 쉽다는 것을 알 수 있었다. 또한 이 과정은 먼저 MySQL이 설치되어 있다는 전제하에 설명을 한다. 준비물 : apache_1.3.9.tar.gz(http://www.apache.org) php-4.0b3.tar.gz(http://www.phps.net) 전제사항 : MySQL 설치 위치 : /usr/local/mysql/ 주의사항 : System의 날짜가 제대로 셋팅되어 있는지 살펴본다.(전 이거 잘못해 놔서리.. 하루 허비했슴다.) * 소스 파일 다운받기 각 소스를 /usr/local/src/에 다운 받는다. * Apache 1.3.9 설치 1. 다운받은 디렉토리로 이동 #cd /usr/local/src/ 2. 압축을 푼다. src#tar xvzf apache_1.3.9.tar.gz 압축이 풀리는 과정이 잘 보인다. 3. 이제 하나씩 따라 가 보도록 하자. src#cd apache1.3.9(정확한 이름은 따라서 가보도록 하시길...) apache1.3.9#./configure --prefix=/usr/local/apache --enable-rule=SHARED_CORE --enable-module=so 쪼까 시간이 걸릴 것이다. 하나씩 설명을 해 보도록 하자. --prefix : 아파치가 설치될 디렉토리 --enable-rule=SHARED_CORE : DSO지원 --enable-moduel=so : DSO 모듈을 so형태로 함. 4. 이제 make를 하자. apache1.3.9#make 메이크하는 과정이 주르륵 나온다. 5. make install을 하자. apache1.3.9#make install 이제 아파치 설치는 모두 끝났다. 다음은 PHP4이다. * PHP4설치 1. 다운 받은 디렉토리로 이동 #cd /usr/local/src 2. 압축을 풀자. src#tar xvzf php-4.0b3.tar.gz 3. 이제 하나씩 따라서 하자. src#cd php-4.0b3 php-4.0b3#./configure --with-apxs=/usr/local/apache/bin/apxs --with-mysql=/usr/local/mysql --with-apache-install=/usr/local/apache --enable-modules=so 역시 한줄로 쫙 써야 한다. configure과정이 꽤 길다. 넘어가지 않는다고 다운된 것은 아니니 기둘려 보자.. 혹자는 configure과정만 30분이 걸렸다고 한다(믿거나 말거나). 4. make php-4.0b3#make 5. make install php-4.0b3#make install 6. 제대로 설치가 되었는지 확인해 보자. php-4.0b3#cd /usr/local/apache/libexec/ 여기에 libphp4.so가 있는지 확인해 본다. 이제 httpd.conf를 수정해 보자. vi로 /usr/local/apache/conf/httpd.conf를 열어서 다음을 수정한다.(수정하기 전에 다음을 확인하자. - LoadModule php4_module libexec/libphp4.so가 있는지 확인한다.) DirectotyIndex index.html부분에 index.php를 추가한다. 즉 DirectoryIndex index.html index.php 다음엔 AddType을 추가하자. 살펴보면 AddType application/x-httpd-php3 .php3라는 부분이 있다. 그 밑에 다음을 추가한다. AddType application/x-httpd-php .php 그리고 나서 apache를 실행 시켜 본다. 자신의 사이트를 방문해 보고 It worked가 뜨면 아파치는 성공... 이젠 php... /usr/local/apache/htdocs에 info.php 화일을 만든다. 위의 한줄만 쓴다. 그리고 나서 웹브라우져로 info.php를 요청하면 php가 성공적으로 설치가 되었다면 여러분들의 php정보가 보일 것이다. 그러면 성공한 것이다. 마지막으로 새로 설치한 아파치가 부팅시에 데몬이 실행될 수 있도록 설정하면 끝난다. 많은 도움이 되길 바란다... ############################################################################################################## 이 두번째 글에서 수정할 건 별로 없습니다... 아파치 설치는 똑같이 하시구여 php 설치에서 쫌만 신경쓰면 되겠네여 컨피그에서 옵션을 mysql 대신 pgsql 로 주심 되겠슴다(당근 둘 다 해도 됩니다) ./configure --with-apxs=/usr/local/apache/bin/apxs --with-pgsql=/usr/local/pgsql --with-apache-install=/usr/local/apache --enable-modules=so make install 에서 에러가 난다면 아마도 apxs 부분이 될 겁니다. apxs 가 분명 있는데 없다고 하거든여.. 저의 솔라리에 perl 이 없어서 발생한 문제였습니다...(apxs 소스 맨 윗대가리) 만약 솔라리에 perl 이 없으면 iks22.sarang.net 에 가셔서 솔라리 용으로 다운 받으시구여 그것도 풀으신 담에 ./Configure 해 주심 되겠슴다.. 잡다한 거 계속 물어보는데 다 디폴트로 하시구 그리 해서 기동 안됨 shere.. 인가 기억이 안나는데 하여튼 한 항목만 no 하세여 프롬프트에서 ./perl 해서 에러메세지 안보임 성공으로 생각하구 리부트 하시구여 얘기가 잠시 샜는데 아까 위치로 다시 돌아갑시당.. 이렇게 perl 이 있는데도 불구하고 에러가 난다면 에러 메세지를 잘 보시구여 apxs 소스를 손보세여 ("@sbindir@" ---> "/usr/local/apache/bin" 등으로..) 이렇게 make install 마치면 libphp4.so 가 제 위치에 있을 겁니다. httpd.conf 손보시고 나서 아파치를 시작해서 phpinfo 를 보면 postgres 는 mysql 이나 기타 다른 녀석들처럼 눈에 띄지 않더군여 리눅스서 rpm 으로 설치한 것처럼 맨 앞에 뜰 거라 생각해서 한참 찾았습니다.(안된줄 알고 지우길 수차례...) 구석에 조그맣게 postgreSQL 이라는 글자만 있습니다(다른 항목에 낑겨서) 미더우시면 한번 테스트를 해보심이... linux.sarang.net 에 가시면 설치가 쉬운 적수님 게시판이 있습니다. 웹과의 연동에서 에러가 발생한다면 pg_hda.conf 를 살펴보시기 바랍니다.