PostgreSQL + Apache + PHP Zend 설치하기 정원영 suni00@kernel.pe.kr v, 2000년 2월 3일 DB로 PostgreSQL을 사용하며 Apache 웹서버에 PHP Zend를 모듈로 컴파일 하는 방법을 간략히 설명하고자 한다. HOW-TO라고 보기보단 나의 설치기라고 보면 되겠다. ______________________________________________________________________ 목차 1. 설치하기 전 2. PostgreSQL 설치하기 2.1 postgres 계정 만들기 2.2 백업 하기 2.3 컴파일및 설치 2.4 설치후 작업 2.5 postmaster 데몬 뛰우기 2.6 백업 데이터 복구 3. Apache + PHP 설치하기 4. 설치 테스트 하기 4.1 일반 사용자에게 DB 권한주기 4.2 DB 생성및 테이블 만들기 4.3 PHP 프로그래밍 하기 4.4 쿠키 사용하기 ______________________________________________________________________ 1. 설치하기 전 설치환경은 RedHat 6.0 이상 버전으로 하겠다. 설치할 각각의 버전은 다음과 같다. o PostgreSQL : 6.5.3 o Apache : 1.3.11 o PHP : Zend beta 3 각각 원하는 버전으로 다음 사이트에서 구한다. 2. PostgreSQL 설치하기 2.1. postgres 계정 만들기 postgres라는 계정과 그룹을 만든다. 기본적으로 RedHat 패키지는 useradd란 명령으로 그룹과 계정을 같이 만들어 준다. # useradd postgres 2.2. 백업 하기 처음 설치하는 경우는 2.3 컴파일 하기로 넘어간다. 백업은 postgres 계정으로 작업한다. $ pg_dumpall -z > db.out 2.3. 컴파일및 설치 컴파일 하기전 postmaster 데몬을 죽인다. # ps -aux | grep postmaster # kill PID (위에서 찾은 pid 번호) PostgreSQL 소스를 /usr/local 방에서 푼다. 풀면 postgresql-6.5.3이란 디렉토리가 생기는데 이름을 pgsql로 바꿔준다. (기존의 pgsql 디렉토리는 버전을 명시하며 이름을 바꿔준다.) # mv postgresql-6.5.3 pgsql (이름을 pgsql로 바꾼다) # chown -R postgres.postgres pgsql (user와 group을 바꾼다) # cd /usr/local/pgsql/src # vi Makefile.custom (Pentitum pro급 이상에서 최적화를 CFLAG+= -m486 위해 생성한다) # ./configure --with-mb=EUC_KR (한글 사용을 위해) # cd /usr/local/pgsql/doc # make install (맨 페이지, HTML 문서파일 설치) # cd /usr/local/pgsql/src # make all (컴파일) 보이면 성공. # su postgres (postgres 계정으로 작업하기위해) $ make install (설치) 2.4. 설치후 작업 # vi /etc/ld.so.conf (라이브러리를 찾기위해 추가) /usr/local/pgsql/lib # /sbin/ldconfig 각 개인의 환경변수를 설정하기위해 개인의 .bash_profile에 다음을 추가한다. PATH=$PATH:/usr/local/pgsql/bin MANPATH=$MANPATH:/usr/local/pgsql/man PGLIB=/usr/local/pgsql/lib PGDATA=/usr/local/pgsql/data export PATH MANPATH PGLIB PGDATA 환경 변수 적용을 위해 다음과 같이 한다. $ source .bash_profile (환경변수 적용-각개인이 실행) 데이터베이스 초기화 하기 ( postgres계정으로 작업해야한다 ) $ initdb -e EUC_KR 2.5. postmaster 데몬 뛰우기 postgres 계정으로 뛰워야 한다. $ postmaster -i -S -D /usr/local/pgsql/data 2.6. 백업 데이터 복구 백업된 파일 db.out을 복구하기 위해 다음과 같이 postgres 계정으로 작업한다. $ psql -e template1 < db.out 3. Apache + PHP 설치하기 아파치와 PHP모두 /usr/local 디렉토리에 풀었으며 아파치의 소스 디렉토리는 /usr/local/apache_1.3.11 이며 php의 소스 디렉토리는 /usr/local/php-4.0b3 이다. 모든건 root 계정으로 작업한다. # cd /usr/local/apache_1.3.11 (아파치 소스 디렉토리로 이동) # ./configure --prefix=/etc/httpd (컴파일후 생성 파일의 경로는 /etc/httpd 이다) # cd /usr/local/php-4.0b3 (php 소스 디렉토리로 이동) # ./configure --with-apache=/usr/local/apache_1.3.11 --with-pgsql=/usr/local/pgsql (아파치와 php의 소스경로인데 한줄에 이어 써야한다) # make # make install (php 설치) # cd /usr/local/apache_1.3.11 (아파치 디렉토리로 이동) # ./configure --prefix=/etc/httpd --activate-module=src/modules/php4/libphp4.a (php를 모듈로 포함시킴, 역시 한줄로 이어 써야한다) # make # make install (아파치 설치) 설치후 아파치 환경설정 파일인 /etc/httpd/conf/httpd.conf 파일을 열어 다음과 같이 되어있는지 확인하고 주석을 풀어준다. AddType application/x-httpd-php .php AddType application/x-httpd-php-source .phps 4. 설치 테스트 하기 지금부터 쿠키를 이용한 PHP + PostgreSQL용 간단한 카운터를 만들어보며 설치가 제대로 되었는지 확인해 보자. 사용자 계정은 suni00으로 가정하겠다. 4.1. 일반 사용자에게 DB 권한주기 postgres 계정으로 일반 사용자에게 DB 권한을 주어야지 DB를 생성할 수 있다. $ su - postgres (사용자를 postgres로 바꾼다) $ createuser suni00 (권한을 주고픈 계정을 적는다) DB 생성 권한은 꼭 주어야 한다. 4.2. DB 생성및 테이블 만들기 postgres가 준 권한으로 일반사용자가 다음과 같은 DB및 테이블을 생성한다. $ su - suni00 (일반계정 사용자로 바꾼다) $ createdb test (test란 DB를 만든다) $ psql test (test DB에 연결) test=> create table counter ( count int ); (table 생성) test=> insert into counter values ( 0 ); (0을 입력) test=> \q (DB 빠져나감) 4.3. PHP 프로그래밍 하기 다음과 같은 내용의 count.php 파일을 만든다. 이제 웹에서 이 파일을 읽어보면 reload 할 때마다 하나씩 카운트가 증가하는걸 알 수 있다. 4.4. 쿠키 사용하기 앞에서 만든 카운터는 reload 할때마다 증가하므로 그리 정확하지 않은 단점이 있다. 그래서 다음과 같이 쿠키를 이용하여 약간이나마 신뢰할 수 있게 해보자. 쿠키는 모든 태그보다 위에있어야 하기 때문에 < html > 시작 태그보다 윗줄에 다음과 같이 넣어준다. 위 내용을 대충 설명하면 3600초(1시간)동안 $counted 값을 1로 만들어 준다. 그러므로 한번 접속한후 1시간 뒤에 접속해야지만 카운터는 증가한다. --------------------------------------------------------------------- 폐인 http://kernel.pe.kr/~suni00