푸른청년 푸르게 살고있나?  
home | 살아가기 | news | 세상보기 | tip&tech | 방명록 |  
   전체
   asp
   php
   jsp
   mssql
   mysql
   informix
   linux
   unix
   win2000
   javascript
   html
   oracle
   java
   etc
    
:: Tip&Tech > php
PHP 5.0 기반의「최신 LAMP 환경」구축하기
PHP 5.0 기반의「최신 LAMP 환경」구축하기 

Builder.com (ZDNet Korea)
2004/08/31
원문보기

수개월동안 기다린 끝에 마침내 PHP 5.0이 공개됐다. 매 버전마다 완전한 기능(full-featured)의 스크립트 언어로 각광받았던 PHP의 최신 업데이트에는 초보자와 오랜 경력의 개발자 모두 반길만한 많은 변화가 담겨 있다. SQLite 데이타베이스를 내장했으며, libxml2를 통한 보다 일관성있는 XML API 구현, 새로 설계된 오브젝트 모델, 새로운 젠드(Zend) 엔진 등이 바로 그것이다.

당신은 개발 프로젝트에 당장 PHP 5.0를 사용하고 싶을 것이다. 하지만 어쨌든 컴파일과 설치해야 한다면 LAMP(Linux, Apache, MySQL, PHP) 개발환경 전체를 업그레이드하는 것은 어떨까? 실제로 지난 몇달간 LAMP도 새로운 버전이 잇달아 발표됐는데, MySQL 4.1.3은 문자세트, 대조기능, 서브 질의, 트랜잭션 세이브포인트 기능을 지원하며, 아파치 2.0은 매우 안정적이다. 거의 모든 리눅스 업체들도 리눅서들의 기대를 모으고 있는 새로운 배포판을 공개했다.

따라서 이 글에서는 PHP 5.0, 아파치 2.0, MySQL 4.1.3을 이용해 최신 PHP 웹 스트립트 개발 환경을 구축해 본다. 터미널을 시작하고 컴파일러를 워밍업하시라. 이제 시작해 보자!

설치 준비
여기서는 이미 리눅스가 설치돼 있고 이를 활용하고 있다고 가정한다. C 컴파일러가 작동하고 있는지 확인하자. 그렇지 않다면 다음 단계로 진행할 수 없다. 또한 PHP 5.0 개발 환경을 구축하려면 다음과 같은 모든 관련 소프트웨어를 다운로드해야 한다.


최신 MySQL 바이너리 버전 (현재 MySQL 4.1.3 베타) (MySQL.com)

최신 PHP (현재 PHP 5.0.0) (Php.net)

최신 버전 아파치 2 (현재 버전 2.0.50) (Apache.org)

(한 가지 알아둘 사항은 이 글을 작성하는 현재 아파치 2.0과 PHP 5.0를 함께 사용해 쓰레드 처리에 사용하는 것은 완벽하게 안전하지 않다. 따라서 대용량 생산 시스템의 경우 이 두 가지를 함께 사용해서는 안된다. 그러나 개발 시스템에 있어서는 문제가 없다.)

최신 PHP 5.0 환경을 구축하는데는 다음의 라이브러리가 필요할 수도 있다.


최신 libxml2 라이브러리 (현재 libxml 2.6.11) (XmlSoft.org)

최신 zlib 라이브러리 (현재 zlib 1.2.1) (Gzip.org)

이 모든 것을 /tmp 디렉토리에 복사하고 다음과 같이 압축을 푼다:


$ cd /tmp
$ tar -xzvf mysql-standard-4.1.3-beta-pc-linux-i686.tar.gz
$ tar -xzvf php-5.0.0.tar.gz
$ tar -xzvf httpd-2.0.50.tar.gz
$ tar -xzvf libxml2-2.6.11.tar.gz
$ tar -xzvf zlib-1.2.1.tar.gz

지원 라이브러리의 설치
이제 본격 설치에 앞서 libxml2나 zlib을 설치할 필요가 있는지 스스로 결정한다. PHP 5.0은 libxml 2.6.0(혹은 이후버전)과 zlib 1.0.9(혹은 이후버전)을 필요로 한다. 이 두 가지가 설치돼 있지 않다면 다음 단계를 계속 진행하고 그렇지 않다면 다음 섹션으로 넘어가도 무방하다.

먼저 다음과 같이 libxml2 XML 파서를 컴파일하고 설치한다. libxml2는 PHP 5.0의 새로운 XML API를 기본으로 지원한다.


$ cd /tmp/libxml2-2.6.11
$ .../configure
$ make && make install

설치를 마치면 libxml2가 /usr/local 밑에 설치된 것을 확인할 수 있다. 다른 폴더에 설치하려면 바로 앞 단계의 설정 스크립트에서 -prefix 옵션을 사용한다. 이제 다양한 확장자를 지원하는 압축 프로그램 zlib을 아래와 같이 설치한다.


$ cd /tmp/zlib-1.2.1
$ ../configure
$ make && make install

설치가 끝나면 /usr/local 밑에 zlib을 확인할 수 있으며, 다른 폴더에 설치하려면 역시 -prefix 옵션을 사용하면 된다.

MySQL 설치
지원 라이브러리 정상적으로 설치해 사용할 수 있다면 이제 MySQL을 설치할 수 있다. 라이선스 문제로 PHP 5.0에는 더이상 MySQL 클라이언트 라이브러리가 포함돼 있지 않다(자세한 내용은 데이타베이스 문서에서 확인할 수 있다). 따라서 PHP에서 MySQL 지원하도록 추가하려면 기존 MySQL 설치 과정에서 이를 연결해야 한다.

PHP 5.0은 ‘MySQLi((MySQL Improved))’라는 완전히 새로운 MySQL을 제공한다. MySQLi는 MySQL의 모든 새로운 기능을 지원하지만 아직까지는 베타인 MySQL 4.1.2 이후 버전에서만 가능하므로, 현재는 개발 시스템에서만 사용할 수 있다. 만약 생산 시스템에 PHP를 사용하고자 한다면 새로운 기능을 지원하지 않지만 더 안정적인 MySQL 구버전을 설치하면 된다. 구체적인 설치 과정은 아래와 같다.


1. 압축을 해제한 MySQL 파일을 /usr/local/mysql 폴더로 옮긴다.
$ mv /tmp/mysql-standard-4.1.3-beta-pc-linux-i686
/usr/local/mysql

2. MySQL 사용자와 그룹을 생성한다.
$ groupadd mysql
$ useradd -g mysql mysql

3. 주어진 mysql_install_db 스크립트를 이용해 MySQL 허가 테이블을 설정한다.
$ /usr/local/mysql/scripts/mysql_install_db
--user=mysql [/output]

4. MySQL 사용자에게 MySQL 디렉토리에 대한 권한을 부여한다.
$ chown -R root?/usr/local/mysql
$ chgrp -R mysql /usr/local/mysql
$ chown -R mysql /usr/local/mysql/data
5. Start the MySQL server.
$ /usr/local/mysql/support-files/
mysql.server start [/output]

이제 설치가 끝났으면 MySQL 서버 소켓이 /tmp 아래에 mysql.sock과 같은 이름으로 존재하는지 확인한다.

아파치 설치하기
아파치와 PHP를 함께 사용하는 방법은 두가지다. 하나는 실행시 웹서버에 로드되는 동적 모듈(dynamic module) 형태이고 다른 하나는 웹서버 코드에 직접 컴파일되는 정적 모듈(static module) 형태이다. 여기서는 첫번째 방식을 따른다.

PHP를 아파치 2.0 모듈로 동적 로딩하려면 아파치 서버가 DSO(Dynamic Shared Object)를 지원하도록 컴파일돼야 한다. 이것은 다음과 같이 아파치 2.0 설정 스크립트에 -enable-so 옵션을 사용해 가능하다.


$ cd /tmp/httpd-2.0.50
$ ../configure --prefix=/usr/local/apache2 --enable-so $ make
&& make install

이것은 븐다시 /usr/local/apache2 설정, 컴파일, 설치해야 한다.


$ cd /tmp/httpd-2.0.50
$ ../configure --prefix=/usr/local/apache2 --enable-so $ make
&& make install

PHP 설치
MySQL과 아파치가 설치됐다면 이제 남은 것은 PHP를 컴파일해 설치하는 것뿐이다. 이때 가장 중요한 것은 두 가지인데, 실행할 확장자 목록을 PHP 설정 스크립트에 제공하는 것과 필요한 외부 라이브러리의 정확한 외부 경로를 설정해 주는 것이다. 다음처럼 하면 된다.


$ cd /tmp/php-5.0.0
$ ./configure --prefix=/usr/local/php5 --with-apxs2=/usr/local/apache2/bin/apxs --with-libxml-dir=/usr/local/lib --with-zlib --with-zlib-dir=/usr/local/lib --with-mysql=/usr/local/mysql --with-mysqli=/usr/local/mysql/bin/mysql_config --with-gd --enable-soap --enable-sockets

매우 복잡해 보이지만, 사실은 그렇지 않다.


--prefix 인자는 PHP 5.0 바이너리 파일의 설치경로를 지정한다.

--with-apxs2 인자는 아파치 2.0과 익스텐션 관리에 필요한 apxs 스크립트의 경로를 지정한다.

--with-libxml-dir과 -with-zlib-dir 인자는 libxml2와 zlib 라이브러리 위치를 지정한다. 기본 라이브러리를 사용하면 PHP가 이들을 자동으로 검색해 인식하므로, 이 인자는 라이브러리를 스스로 컴파일해 설치하는 경우에만 사용한다.

--with-mysql 인자는 일반적인 MySQL 익스텐션을 활성화한다. PHP 5.0은 4.0 버전과 달리 기본값이 비활성화된 상태이므로, 사용자가 수동으로 설정 스크립트에서 직접 활성화해야 한다.

--with-mysqli 인자는 MySQLi 익스텐션을 활성화(MySQL 4.1.2 이상 버전에만 해당)하는 것으로, MySQL 4.x와 함께 제공되는 제공되는 mysql_config 스크립트를 가리키도록 설정해야 한다.

--with-gd 인자는 동적 이미지를 생성용 GD 익스텐션을 활성화한다.

--with-zlib 인자는 실시간 데이타 압축용 ZLIB 압축 라이브러리를 활성화시킨다.

--enable-sockets 인자는 소켓 통신 기능을 활성화한다.

--enable-soap 인자는 SOAP과 웹서비스에 대한 지원 기능을 활성화한다.

이밖에도 다양한 옵션과 익스텐션을 사용할 수 있으며 다음과 같이 전체 목록을 확인할 수 있다.


$ ./configure -help

설정 스크립트 처리가 종료되면 이제 PHP를 컴파일해 설치할 수 있다. 설치 과정은 자동으로 아파치 2.0 디렉토리를 찾아 PHP 모듈을 설치한다.


$ make
$ make install

PHP와 아파치의 설정과 테스트
자 이것으로 설치가 끝난 것일까? 아직 아니다. 마지막 단계는 .php 확장자를 가진 PHP 스크립트를 인식하도록 아파치를 설정한 후 이를 PHP 인터프리터로 넘겨야 한다. 이를 위해서는 먼저 아파치 설정 파일(/usr/local/apache2/conf/httpd.conf)을 편집해 다음 행을 추가한다:


AddType application/x-httpd-php .php

그리고 파일을 저장하고 서버를 구동한다:


$ /usr/local/apache2/bin/apachectl start [/output]

이 때 스타트업 스크립트에 위의 명령행을 추가할 수 있는데, 이 내용을 /etc/rc.local 파일에 삽입하면, 다음 부팅때부터는 자동으로 서버가 구동된다. 이제 모든 것이 제대로 동작하는지 알아보기 위해 서버의 문서 루트인 /usr/local/apache2/htdocs/ 에서 간단한 테스트 스크립트를 생성해서 테스트해 보자. 다음 내용을 test.php라고 파일을 만들어 추가한다.





이제 파일을 저장하고 브라우저에서 http://localhost/test.php를 열어보자. <그림>과 같이 PHP 빌드 정보 페이지를 보여야 정상이다. 만약 이 페이지가 보이지 않는다면 설치 가이드의 문제 해결 부분을 참조하기 바란다.



<그림> 이 화면이 보인다면 정상적으로 설치된 것이다.


<그림>같은 화면이 정상적으로 보이는가? 이제 당신의 최신 LAMP 환경은 이제 실행될 만반의 준비가 된 상태다. 이를 어떻게 활용할 것인가 하는 것은 당신의 몫이다! @

날짜: 2004-09-02 14:11:47, 조회수: 2370

다음글 의외로 쉬운「시스템 모니터링 툴」제작기
이전글 한글 문자열 자르기

꼬리말
글쓴이 비밀번호 #스팸글방지(주인장 닉네임을 쓰시오)

  
since by 2003.03.23 / 3th 2005.07.26 / 4th 2009.04.22 made by bluesoul