다음 이전 차례

2. 웹서버 구축에 필요한 것들 (PHP , APACHE , MYSQL)

2.1 Apache , Php , Mysql 소개

웹 개발에는 많은 도구가 필요합니다.    하드웨어를 비롯하여 소프트웨어에서도 그 종류는 많습니다.    크게 웹서버프로그램, 데이터베이스 그리고, 개발 언어입니다.    모든 운영체제에서 웹서버를 구축할 수 있고 또한 공개 프로그램이면서도 기능이 뛰어난 아파치 웹서버와 Mysql 데이터베이스, PHP 언어에 관하여 소개를 하겠습니다.

Apache 웹 서버

아파치 웹 서버는 대중의 힘을 바탕으로 가장 큰 인지도를 얻을 만큼 사용자가 이끌어 가는 서버 입니다.    여타의 상용 서버를 밀"牆 우뚝 설 수 있었던 이유는 오픈 소스 개발에 따른 보다 빠른 사용자 중심의 개발로 인한 수많은 개발자의 합류 입니다.    무엇 보다 상용 서버에 뒤지지 않는 신속한 버그 PATCH와 끊임없는 수많은 개발자의 지원과 안정성 입니다.    이러한 점으로 웹 서버 시장에서 다른 서버와 비교해 웹 서버 시장에서 과반수 이상의 점유율을 보이고 있습니다.

그림. 2-1 Apache 공식 사이트( http://www.apache.org)

공식 아파치 사이트 외에 각 국가별 그룹별로 사이트가 존재 하는데 한국 아파치 그룹에 가면 한글화 된 아파치 서버의 최신 정보와 기술적인 문제를 볼 수 있습니다.

그림. 2-2 한국 Apache 그룹( http://www.apache.kr.net)

Apache 웹 서버의 역사

아파치 프로젝트의 시작은 처음 1995년경 대중의 사랑을 받던 NCSA의 개발자중 일부가 모여 시작 했습니다.    이것을 시발로 NCSA HTTPD 개발자와 아파치 개발자들이 합류되고 이전에 만들어졌던 아파치 0.6.2를 완전히 개선한 0.8.8을, 그리고 아파치 1.0을 1995년10월에 만들어 냈습니다.    아파치 서버는 단기간에 기존의 NCSA 자리를 밀" 선두에 올랐습니다.    이 상승세는 지금도 계속 중이며 다른 여타의 서버가 넘보지 못하는 자리에 있게 되었습니다.    이것은 물론 직접 관여하는 개발자 이외에 전세계 아파치 그룹 및 사용자들이 항상 테스트 하고 패치하는 작업의 결과입니다.    다른 서버가 넘보지 못하는 부분이 이런 오픈 소스 개발일 것입니다.    아파치는 멈추지 않는 것입니다. 누군가 멈추려 해도 절대 멈추지 않는 지속적인 개발이 이루어 지는 것입니다.

Apache GUI Tool

아파치를 사용자 중심의 웹 서버로 만드는 노력도 진행 중입니다.    GUI 프로젝트 즉, 코만치 프로젝트라 불리는 이 작업은 아파치의 운용을 그래픽적으로 할 수 있게 하는 것입니다.    많은 부분이 완성 되었고 리눅스 배포판에도 포함되어 있습니다.    아파치 서버는 모든 설정이 텍스트 파일인 httpd.conf를 수정하는 방법이기 때문에 다소 그래픽 환경에 익숙한 사람"都 불편할 수도 있고 접근하기 까다로운 부분이 있기 때문에 이 프로젝트는 앞으로 아파치서버의 발전에 중요한 부분을 차지하게 될 것입니다.

그림. 2-3 코만치 사이트( http://www.comanche.org)

코만치 사이트에서 코만치에 관한 정보와 각 환경에 따른 코만치 설치 파일을 다운 받을 수 있습니다.

각 환경에 따른 지원 파일

그림. 2-4 코만치 메인 화면

코만치 메인화면을 보면 기존의 httpd.conf에서의 설정을 정말 간단히 깔끔하게 수정 할 수 있게 개발 된 것을 볼 수 있습니다.    이것은 기존의 텍스트 환경에서 작업 하던 사람 또한 쉽게 접근하게 되어 있습니다.

코만치의 Properties configuration 화면

그림. 2-4 코만치 메인 화면

그림. 2-5 Properties configuration1

그림. 2-6 Properties configuration2

그림. 2-7 Edit Element

위 그림들을 보면 기존의 설정하는 부분을 아주 쉽게 생성하고 수정할 수 있게 되어 있음을 알 수 있습니다.    코만치는 또한 여러 운영체제별로 실행 파일을 제공하고 있으며 계속 개발 중입니다.    물론 아직 개선할 점을 찾으며 계속 개발 중인 윈도우용 아파치를 지원하는 코만치 또한 존재합니다.

그림. 2-8 윈도우용 코만치

Apache 사용자 현황

전세계 웹 서버 시장을 볼 때 아파치 서버의 사용은 월등합니다.    이것은 무엇보다 공짜임에도 불구하고 강력한 기능과 빠른 패치 따른 이유입니다.    (아파치 서버의 사용자 현황은 www.netcraft.com의 자료를 인용 했습니다.)

netcraft 웹 서버관련 통계

그림. 2-9 모든 도메인의 사용중인 서버 현황

위 그림에서 아파" 다른 웹 서버 사용자 수를 모두 합한 것 보다 높은 것을 볼 수 있습니다.

그림. 2-10 Top Developers

그림. 2-11 Top Servers

위 그림들에서 볼 수 있듯이 아파치 서버는 발전면에서 그리고 최고 사용 서버에서 모두 월등히 높음을 알 수 있습니다.

그림. 2-12 몇 년간 웹 서버 사용 변화

위 그림은 최근 몇 년간 각 서버의 변화 모습입니다.    2000년 현재 아파치 서버를 가동 중인 도메인은 400만개 이상이 되는 걸 볼 수 있습니다.

아파치에 관한 문서를 잠시 보면 웹 프로토콜의 독점을 막아야 된다고 말하고 있습니다.    인터넷에서 특정 기업에 의한 독점이 이루어 진다면 그것은 인터넷의 자유로움과 자유 경쟁을 위배하는 것입니다.    이러한 이유로 아파치는오픈 소스 프로젝트를 지향하고, 무료로 배포하는 이유 중에 하나입니다.    이 시간에도 전세계 수많은 개발자와 사용자들이 아파치를 보면서 문제점이 있는지 " 하고 있을 것입니다.    자신이 아파치 서버에 만족하고 기능 개선을 바란다면 뉴스 그룹에 어떠한 글을 올려도 도움이 될 것입니다.    이런 응답 글 하나하나가 아파치 서버 사용자와 개발자들" 중요한 도움이 될 것이며 이렇게 발전한 이유입니다.

2.2 PHP

PHP 소개

PHP는 처음 웹 스크립트 언어를 접하는 이" 보다 쉬우면서 보다 빠른 시간에 웹을 다이나믹 하게 만들어 줍니다.    이것은 빨리 변화되는 인터넷 시장에서 중요한 역할을 하는 것입니다.    이러한 PHP(Professional HyperText Preprocessor)는 서버에서 해석되는 HTML에 내장되어 동작하는 스크립트 언어입니다.    C, Java, Perl 등에서 많은 문장 형식을 빌려왔으며 웹 브라우저 등으로 실제 코드를 볼 수 없다는 것에 보안상 유리한 점도 있습니다.    무엇보다 이 언어는 웹을 개발하는 이" 보다 편리한 환경을 제공해줍니다.    또한 CGI 프로그래밍 언어(C, Perl)와 ASP들이 만들어 냈던 BBS, 웹메일, 쇼핑 몰에 이르기까지 대부분을 쉽게 만들 수 있으며 상업, 비상업적으로 얼마든지 사용 가능한 언어입니다.    설치 환경은 Linux, Unix, 윈도우 등 대부분의 운영체제를 지원합니다.

그림. 2-13 PHP 공식 사이트( http://www.php.net/)

PHP가 지원하는 데이터베이스

현존하는 데이터베이스를 거의 지원합니다.    간단한 게시판이나 방명록을 만들 경우라도 요즘은 데이터베이스를 사용합니다.    무엇보다 빠르게 검색 가능하면서 체계적인 저장이 되므로 데이터 관리가 편리하다는 이유입니다.    한 두개의 게시물일 경우와 수백 수천개의 게시물이 있을 때, 후자의 경우라면 보다 편리한 사용 방법은 데이터베이스 구축입니다.    지원하는 DataBASE는 (Adabas D, Dbase, Oracle, Empress, PostgreSQL, FilePRO, Solid, Informix, Sybase, InterBASE, Velocis, Msql, Unix dbm)등이 있으며, PHP4 ZEND 의 경우는 더 확실한 지원을 보장 할 것으로 보입니다.    앞으로도 데이터베이스와의 쉬운 연결과 이식성 등으로 애용자가 날로 증가하리라 봅니다.

PHP의 역사

PHP는 1994년 가을 Rasmus Lerdorf에 의해 만들어졌으며, 그의 홈페이지에서 공개되어 사용 되기는 1995년 초 Persnol Home Page Tool라고 불려지면서 입니다.    이것은 몇 개의 매크로를 가진 파서(명령 해석) 엔진과 홈페이지 뒤에서 움직이는 몇 개의 유틸리티로 이루어진 것이었습니다.    또 다시 95년 중반 이 파서가 재작성 되어 PHP/FI Version 2라 불리어 졌습니다.    또, FI는 Rasmus가 작성한 HTML 형식의 데이터를 해석할 수 있는 별도의 패키지 였는데, 그는 이 둘을 합쳐 Msql을 지원하도록 하여 PHP/FI를 만들어 냈습니다.    PHP/FI는 많은 사람들의 공헌에 힘입어 발전을 거듭했으며 1996년 후반 전세계적으로 15,000개 이상의 웹사이트에서 사용되어졌고 1997년 중반엔 50,000정도 이상으로 늘어났습니다.    그리고 이해 PHP/FI는 Rasmus 개인이 아닌 팀에 의해 개발되어졌습니다.    Zeev Suraski와 Andi Gutmans에 의해 재작성되어 PHP 3 가 만들어졌고, 이것은 이전 버전에서 많은 기능들을 옮겨왔으며 새로운 기능들을 추가 했습니다.    정확한 통계자료는 아니지만 NETCRAFT의 통계 자료를 보면, 현재 전세계 300,000대 이상의 웹 서버에서 사용중입니다.    만약 도메인에서 사용중인 PHP를 보면 두배 이상이 될 것입니다.    앞으로도 아파치 웹서버의 증가와 PHP4 ZEND의 다양한 포맷 지원으로 더 증가하리라 생각합니다.    (PHP3의 FAQ와 Andi Gutmans의 글을 참조 했습니다)

PHP3와 PHP4 ZEND

PHP3와 PHP4를 따로 배울 필요는 없습니다.    다시말해 이 둘은 프로그램의 상위 버전이라고 생각하면 될 것입니다.    (PHP4 앞으로 ZEND라함) ZEND는 PHP3가 보다 더 많은 기능을 넣기위해 복잡해진 스크립트로 인해 성능이 떨어지는 것을 본 Andi Gutmans와 Zeev Suraski에 의해 보다 원활하게 동작하게 만든 새로운 엔진 입니다.    또한 ZEND 엔진은 PHP 이외의 다른 프로그램에서도 재사용될 수 있고 앞으로 다른 언어에서도 사용 가능하리라 봅니다.    ZEND 엔진을 사용하면 PHP3보다 300배 정도 성능 향상을 가져오며, 사용자가 증가했을 때 확연히 보입니다.    여기에 PLUG-IN을 별도로 구매하면 더 향상을 가져올 것입니다.    그리고 ZEND는 foreach, class::method() call과 같은 새로운 문법과 PHP3에서의 사용하기에 불편했던 점을 상당히 개선 했습니다.    강화된 것을 보면, 우선 이전 버전보다 더 많이 모듈화 되었습니다.    PHP3에서와는 달리 동적인 모듈화가 쉽게 되도록 설계 되어진 것입니다.    그리고 표준 CGI, Apache, Fhttpd, ISAPI(MS의 IIS를 위한), NSAPI(Netscape server을 위한)를 지원하게 되었습니다.    뿐만 아니라 기존의 ASP를 통해서 이용한 COM/DCOM까지 ZEND는 영역을 넓혔습니다.    현재 PHP4 ZEND는 candidate 1까지 나왔으며 앞으로 계속해서 업그레이드 될 예정입니다.    ZEND Optimizer의 경우 현재 beta 2까지 나와 있으며 Free Down이 가능 합니다.    설치 환경은 PHP4 beta4 pl1과 이후 버전(PHP4 RC1)에서 설치 가능하며 각각의 시스템 환경을 보면 아래와 같습니다.

그림. 2-14 ZEND 공식 사이트( http://www.zend.com)

www.zend.com으로 가면 간단한 가입 절차와 함께 메일로 패스워드를 받고 로그인 후 ZEND Optimizer를 다운로드 할 수 있습니다.

그림. 2-15 zend Optimizer

그림. 2-16 zend 엔진의 역할

위 그림에서 zend , 웹 서버 , 데이터베이스 , 브라우저의 역할에 대한 간략한 구조를 확인 할 수 있으며 zend 엔진이 이러한 구조에서 담당하는 부분을 확인 할 수 있습니다.

PHP와 ASP

PHP와 ASP는 근본적으로 서버용 객체 지향적인 스크립트 언어라는 점에서 같지만, ASP의 경우 IIS, PWS와 같은 윈도우 환경에서 움직이는 서버를 지원하는데 반해 PHP는 Apache, IIS, PWS, 서버 등과 유닉스 윈도우 환경에서 움직이는 모든 서버를 지원합니다.    또한 PHP는 위에서 언급한 데이터베이스 같은 경우 ODBC에 의한 연결과 유닉스에서 사용되는 거의 모든 DB를 연결해 줍니다.    무엇보다 매력적인 것은 PHP 코드 내에서 사용자 자신의 객체를 정의해서 사용할 수 있다는 점입니다.    이것 말고도 여러 가지 장점들이 많이 있습니다.

2.3 Mysql

Mysql에 관해서

Mysql 데이터베이스는 다른 상용 데이터베이스와 비교해 안정성과 기타 여러 문제에 크게 떨어지지 않으면서 공개되어진 데이터베이스입니다.    다양한 함수와 여러 기능면에서 상용 데이터베이스가 가지지 못한 점을 가진 것도 많이 있습니다.    그리고 공개된 다른 데이터베이스와 비교 할 때 사용자 또한 넓습니다.    Mysql은 C , C++, Java, python, tck/tk, ODBC도 제공하며 다양한 웹서버와의 연결도 용이합니다.    ODBC는 Ms 윈도우(win95 , win98 , NT) 등을 제공합니다.    현존하는 윈도우의 대부분을 지원 하며 설치 또한 대부분의 OS를 지원 합니다.    Mysql을 개인적인 용도로 사용할 경우 무료이며 상업적인 목적으로 사용할 경우 mysql 개발팀에 조금의 후원을 하면 가능합니다.

그림. 2-17 Mysql 공식 사이트( http://www.tcx.se/)

Mysql이 지원하는 OS와 패키지

Mysql의 주요 기능

Mysql은 C , C++ 로 작성 되어졌으며 많은 테스트를 통해서 안정성을 입증했습니다.    또한 SQL문의 대부분을 완벽하게 지원하며 각 테이블에 16개의 인덱스를 생성 할 수 있습니다.    큰 규모의 테이블을 생성할 수 있으며 원격으로도 접속 가능 합니다.    다양한 컬럼 타입을 제공하며 사용자 관리를 쉽게 할 수 있습니다.    이외 다양한 기능들이 있으며 모든 스크립트들이 마찬가지 이지만 데이터베이스와의 유연한 연동은 필수가 되었습니다.    Mysql 역시 이점이 탁월하며 모든 플랫폼에서 지원되므로 사용 범위 또한 넓은 것입니다.    처음 mysql이 Tcx 내부에 사용될 목적으로 만들어 졌습니다.    이것은 그 당시의 여타 SQL서버 보다 성능이 좋아야 했습니다.    이처럼 뛰어난 데이터베이스를 현재 우리가 무료로 사용하고 있는 것입니다.

Mysql GUI Tool

Mysql 역시 일반 텍스트 기반이 아닌 그래픽적으로 쉽게 작업할 수 있는 GUI Tool이 있습니다.    이 Tool의 기능들은 물론 스크립트로 만들 수도 있습니다.    이렇게 대부분의 프로그램들은 처음 텍스트 기반하지 않고 사용자 중심의 GUI 기반의 Tool을 생성함으로써 보다 넓은 사용자 층을 확보하고 있습니다.

그림. 2-18 Mysql GUI Tool(Linux)

GUI Tool은 유닉스 기반에서 처음 만들어 졌습니다.    지금은 윈도우 기반의 툴 또한 다양한 기능을 제공하고 있고 데이터베이스의 원격관리에서 다양한 사용자 편의를 제공합니다.    일반적인 Telnet 접속을 해서 데이터베이스를 관리하는 방법에 식상한 사람들과 처음 데이터베이스를 접하는 사람들에게 좋은 방법을 제시합니다.

MS 윈도우 용 GUI Tool

그림. 2-19 윈도우용 Mysql GUI Tool 사이트( http://www.winmysql.com/)

그림. 2-20 윈도우용 Mysql GUI Tool row 화면

그림. 2-21 윈도우용 Mysql GUI Tool 데이터베이스 접근 화면

그림. 2-22 윈도우용 Mysql GUI Tool query 화면

그림. 2-23 윈도우용 Mysql GUI Tool 데이터베이스 사용자 권한 설정 화면

그림. 2-21 윈도우용 Mysql GUI Tool 데이터베이스 접근 화면

다음 장에서는 리눅스 환경에서 Apache , Php , Mysql 설치를 자세히 알아 보겠습니다.


다음 이전 차례