· KLDP.org · KLDP.net · KLDP Wiki · KLDP BBS ·
Linuxdoc Sgml/Zend_pgsql-KLDP

<!doctype linuxdoc system>

<article>

<title>PostgreSQL + Apache + Zend 설치하기
<author>정원영 <htmlurl url="mailto:suni00@kernel.pe.kr"
name="suni00@kernel.pe.kr">
<date>v0.3, 2000년 2월 16일

<abstract>
DB로 PostgreSQL을 사용하며 Apache 웹서버에 PHP Zend를 모듈로
컴파일 하는 방법을 간략히 설명한다.
</abstract>

<toc>

<sect> 설치하기 전<p>
<itemize>
<item>설치환경은 RedHat 6.0 이상 버전으로 하겠다.
<item>설치할 각각의 버전은 다음과 같다.
	
<itemize>
<item> PostgreSQL : 6.5.3
<item> Apache     : 1.3.11
<item> PHP  	  : Zend beta 3
</itemize>	
	
<item>각각 원하는 버전으로 다음 사이트에서 구한다.
<itemize>
<item><url url="http://www.postgresql.org">
<item><url url="http://www.apache.org">
<item><url url="http://www.php.net">
</itemize>
</itemize>

<sect> PostgreSQL 설치하기<p>

<sect1> postgres 계정 만들기 <p>
<itemize>
<item>postgres라는 계정과 그룹을 만든다. 기본적으로 RedHat 패키지는
useradd란 명령으로 그룹과 계정을 같이 만들어 준다.
<verb>
	# useradd postgres
	# passwd postgres
</verb>
</itemize>
<sect1> 백업 하기 <p>
<itemize>
<item>처음 설치하는 경우는 <bf>'2.3 컴파일및 설치'</bf>로 넘어간다.
백업은 postgres 계정으로 작업한다.

<verb>
	$ pg_dumpall -z > db.out
</verb> 
</itemize>

<sect1> 컴파일및 설치  <p>
<enum>
<item>컴파일 하기전 postmaster 데몬을 죽인다.
<verb>
	# ps -aux | grep postmaster
	# kill PID (위에서 찾은 pid 번호)
</verb>
<item>PostgreSQL 소스를 /usr/local 방에서 푼다.
<item>풀면 postgresql-6.5.3이란 디렉토리가 생기는데 이름을 pgsql로 바꿔준다.
(기존의 pgsql 디렉토리는 버전을 명시하며 이름을 바꿔준다.)
<verb>
	# 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                        (컴파일)
</verb>

<item>'All of PostgreSQL is successfully made. Ready to install' 란 메세지가
보이면 성공.

<verb>
	# su postgres                     (postgres 계정으로 작업하기위해)
	$ make install                    (설치)
</verb>
</enum>
<sect1> 설치후 작업  <p>
<enum>
<item>라이브러리 추가
<verb>
	# vi /etc/ld.so.conf             
	  /usr/local/pgsql/lib
	# /sbin/ldconfig
</verb>
<item>환경변수 추가
<verb>
각 개인의 환경변수를 설정하기위해 개인의 .bash_profile에 다음을 추가한다.
(DB를 사용할 계정의 환경변수를 설정 - postgres 계정에도 적용시킨다.)

	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
</verb>

<item>환경 변수 적용
<verb>	                                  
각 계정에서 실행해서 환경변수를 적용시킨다.
	$ source .bash_profile            
</verb>

<item>데이터베이스 초기화 하기 
<verb>
postgres계정으로 작업해야한다.
	$ initdb -e EUC_KR
</verb>
</enum>

<sect1> postmaster 데몬 뛰우기 <p>
<itemize>
<item>postgres 계정으로 뛰워야 한다.
</itemize>
<verb>	
	$ postmaster -i -S -D /usr/local/pgsql/data
</verb>
<sect1> 백업 데이터 복구 <p>
<itemize>
<item>백업된 파일 db.out을 복구하기 위해 다음과 같이 postgres 계정으로 작업한다.
</itemize>

<verb>
	$ psql -e template1 < db.out
</verb>



<sect> Apache + PHP 설치하기 <p>
<enum>
<item>환경설정및 컴파일
<verb>
아파치와 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 
	              --enable-track-vars 
	            (아파치와 postgres의 경로인데 한줄에 이어 써야한다)
	# make
	# make install                    (php 설치)

	# cp php.ini-dist /usr/local/lib/php.ini (php 옵션들)
				

	# cd /usr/local/apache_1.3.11     (아파치 디렉토리로 이동)
	# ./configure --prefix=/etc/httpd
	              --activate-module=src/modules/php4/libphp4.a 
                (php를 모듈로 포함시킴, 역시 한줄로 이어 써야한다)
	# make
	# make install                    (아파치 설치)
</verb>
<item>설치 후
<verb>
설치후 아파치 환경설정 파일인 /etc/httpd/conf/httpd.conf 파일을 열어
다음과 같이 되어있는지 확인하고 주석을 풀어준다.

	AddType application/x-httpd-php .php
	AddType application/x-httpd-php-source .phps
</verb>
</enum>
<sect> 설치 테스트 하기 <p>
지금부터 쿠키를 이용한 PHP + PostgreSQL용 간단한 카운터를 만들어보며
설치가 제대로 되었는지 확인해 보자.
사용자 계정은 suni00으로 가정하겠다.
<sect1> 일반 사용자에게 DB 권한주기 <p>
<itemize>
<item>postgres 계정으로 일반 사용자에게 DB 권한을 주어야지 DB를 생성할 수
있다.
<verb>
	$ su - postgres                   (사용자를 postgres로 바꾼다)
	$ createuser suni00               (권한을 주고픈 계정을 적는다) 
</verb>
DB 생성 권한은 꼭 주어야 한다.
</itemize>

<sect1> DB 생성및 테이블 만들기 <p>
<itemize>
<item>postgres가 준 권한으로 일반사용자가 다음과 같은 DB및 테이블을 생성한다.
	
<verb>
	$ 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 빠져나감)
</verb>
</itemize>

<sect1> PHP 프로그래밍 하기 <p>
<itemize>
<item>다음과 같은 내용의 count.php 파일을 만든다.
<verb>
<?
	$connect=pg_connect("dbname=test user=suni00");
	$result=pg_exec($connect,"select * from counter");

	$count_num = pg_result($result,0,"count");

	if (!$counted) {
		$count_num++;
		pg_exec($connect,"update counter set count=$count_num");
	}

	echo $count_num;
?>
</verb>
이제 웹에서 이 파일을 읽어보면 reload 할 때마다 하나씩 카운트가
증가하는걸 알 수 있다.
</itemize>
<sect1> 쿠키 사용하기 <p>
<itemize>
<item>앞에서 만든 카운터는 reload 할때마다 증가하므로 그리 정확하지 않은
단점이 있다. 그래서 다음과 같이 쿠키를 이용하여 약간이나마 신뢰할 수
있게 해보자.
쿠키는 모든 태그보다 위에있어야 하기 때문에 < html > 시작 태그보다
윗줄에 다음과 같이 넣어준다.
<verb>
	<? if (!$counted) { setcookie("counted",1,time()+3600); } ?>
</verb>
위 내용을 대충 설명하면 3600초(1시간)동안 $counted 값을 1로 만들어
준다. 그러므로 한번 접속한후 1시간 뒤에 접속해야지만 카운터는
증가한다. 
</itemize>

</article>




sponsored by andamiro
sponsored by cdnetworks
sponsored by HP

Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2003-11-27 13:14:12
Processing time 0.0082 sec