4 단원 리눅스서버에웹서버구축 1. 웹서버란? 2. 아파치소개 3. httpd.conf 파일설정 1/8
1. 웹서버란? 먼저웹서버라는개념부터알아보도록합시다. 일반적으로서버라고하면다른프로그램에게서비스를제공하는컴퓨터또는프로그램을말합니다. 그러므로웹서버란웹서비스를하는서버라는의미가되겠죠. 즉, 사용자가인터넷이라는거대한네트워크를통해이런저런일을해달라고요청하면적절한서비스를제공해주는것이서버의역할입니다. < 웹서버와클라이언트 > 인터넷에직접연결되어고유의번호 (IP: 아이피 ) 를갖는서버급컴퓨터이며, 간단하게말해인터넷사이트를서비스할수있게해주는프로그램입니다. 이는웹서비스를위해서웹서버데몬 ( 프로그램 ) 이설치되어운영되어야합니다. 자신이만든홈페이지의내용이웹브라우져를통해서보이게하려면, 제작된홈페이지파일을웹서버 ( 리눅스컴퓨터 ) 에올려놓아야합니다. 그럼인터넷사이트를어떻게서비스할수있게되는것일까요? 인터넷사이트에서제공되고있는페이지는 html, php, jsp등의웹문서로서, 웹서버로요청된문서들을보내주는소스에맞게해석해서결과값을볼수있게하는역할을담당하는것이웹서버의가장기본적인기능입니다. 일반적으로도메인네임을브라우저의주소창에치고엔터를치면이호출정보가여기저기의네임서버정보들을찾아다닙니다. 그러다가그도메인네임을가지고서비스를하는서버로도착하게됩니다. 그러면웹서버에서는신호를보내온곳으로웹서비스를할웹사이트문서를보내주는것입니다. 예를들어, 만일제가익스플로러 ( 웹브라우저 ) 를실행하고그주소줄에 www.php.net이라고치고엔터를쳤다고가정해보겠습니다. 2/8
이신호는 www.php.net의네임서버가있는컴퓨터의 IP주소를알아내게되고그곳으로 www.php.net을요청하고있다는신호를보내게됩니다. 그러면 www.php.net을서비스하고있는네임서버에서 www.php.net의웹서비스를하고있는웹서버로그신호를다시보내게됩니다. 신호를받은웹서버는가장먼저띄워야하는 www.php.net의메인페이지를신호를보낸주소로보내주게됩니다. 드디어브라우저에서 www.php.net 메인페이지가보이게되는것입니다. 그러나웹서버의주요기능은서버에서실행되는웹문서들중에 html과는다른 php, jsp와같은서버스크립트언어를실행시켜주어브라우저가해독할수있는html문서로변환해주는역할을하고있습니다. 그래서좀더역동적인웹사이트를위해그리고다양한서비스를가능하도록하는것입니다. 또한이웹서버에서실행되는웹문서를통해서관계형데이터베이스와연동을가능하게합니다. 웹서버의종류는목적과공급업체에따라종류가많이있지만그중많이사용되는것이마이크로소프트의 IIS 와 Apache 입니다. IIS는마이크로소프트의 Windows 서버에기본으로제공되고 Apache는강력한기능과무료배포정책때문에많이사용됩니다. 특히 Unix와 Linux 계열에서는거의대부분 Apache 사용하고있습니다. 2. 아파치소개 1) 아파치란? 아파치는웹서버종류중에하나입니다. 아파치 (Apache) 웹서버는현재가장잘나가고있는소프트웨어중하나입니다. 아파치웹서버가잘나가는이유는패치파일을지속적으로제공해최적의성능을낼수있게해주기때문입니다. 게다가무료로제공되는데도안정성을인정받고있는것이인기비결이라고볼수있습니다. 아파치는제공기능을모듈형태로지원하여컴파일없이기능을추가삭제할수있는유동성을가졌으며암호화된인증을지원하고있습니다. 또한아파치는보통 PHP 인테페이스를이용 DB와연동하여방명록, 게시판, 웹메일, 쇼핑몰등에솔루션형태로구축할수있도록해줍니다. 2) 아파치설치방법 3/8
예전엔아파치의이름을 apache1.3 라고했으나, 요즘은 http2.0 이라고이름이바꼈습니다. 그래서우리는 http2.0를설치할것입니다. 지금부터아파치설치에대해설명하도록하겠습니다. 레드헷배포판을사용하는사용자들은아파치를쉽게설치할수있습니다. 설치할때 rpm 버전을사용하거나소스파일을다운로드해설정해도됩니다. rpm이란 Redhat Package Management의약자로서레드햇리눅스상에서다양한소프트웨어들의설치, 추가, 삭제등이용이하도록제공되는툴입니다. RPM 설치는매우간단한명령어한번으로설치가되기때문에사용이용이합니다. 하지만 rpm 패키지로돼있는아파치서버패키지를설치할경우, 사용자가컴파일된커널버전과다른버전의커널을사용하면문제가발생할수있습니다. Apache 설치명령은다음과같습니다. rpm -Uvh httpd-2.0. *.rpm 본인의리눅스컴퓨터에 apache RPM 패키지가설치되어있는지확인하려면다음과같은명령어를입력하면됩니다. # rpm -qa grep httpd 아파치웹서버가설치돼있다면다음과같은명령으로패키지를삭제한후에설치를하면됩니다. rpm -e [httpd RPM name] 이번에는소스파일로설치하는방법입니다. 먼저파일을받아야겠죠? 아파치설치파일은아파치공식사이트 (http://apache.org/) 에가면최신버전을구할수있습니다. 왼쪽메뉴에 HTTP Server를클릭하고, 다시왼쪽에 download 메뉴에다운로드할사이트를클릭합니다. Apache 2.0.54 버전에서 Unix 버전을클릭합니다. 4/8
저장할위치는 root폴더로하여다운을받습니다. Root 폴더에가면다운받은파일을확인할수있습니다. 이제다운받은파일의압축을풀고설치를진행해보겠습니다. 압축을푸는방식으로는 text 모드방식과그래픽모드가있습니다. 우리는그래픽모드로풀겠습니다. 마우스오른쪽버튼을누르면여기에풀기가있습니다. 그것을클릭하시면 root 폴더에압축파일과동일한이름의폴더로압축이풀립니다. 만약, text 모드에서압축을푼다면아래와같이하시면됩니다. # tar -xzvf ***.tar.gz 이제는디렉토리지정과모듈소스추가방법에대해알아보도록하겠습니다. 이부분이좀어렵게느껴질수있는데잘따라해보시기바랍니다. 마우스를기본메뉴인빨간모자아이콘을클릭하시면메뉴가나옵니다. 이메뉴에서시스템도구항목안에터미널메뉴를클릭하십시오. 그러면터미널이실행되고 root 폴더위치에서프롬프트가깜빡입니다. 아파치압축풀린디렉토리로이동해야합니다. 먼저 ls 명령으로아파치가설치된디렉토리를확인합니다. cd 명령으로디렉토리를이동합니다. 우리는소스를받아설치를하려고합니다. 따라서먼저소스를프로그램형태로쓰기위하여컴파일과목적파일생성을해야합니다. 컴파일은 configure 명령을이용합니다. prefix 옵션으로아파치가설치될디렉토리를지정하고컴파일명령을실행합니다. 그러면컴파일되는상황이보여집니다. 5/8
configure의옵션에대한자세한내용은다음사이트에서보실수있습니다. http://httpd.apache.org/docs/2.0/programs/configure.html 그리고 Redhat 배포본에있는아파치바이너리서버를그대로설치했다면주디렉토리는 /home/httpd/html이되고, 설정파일들은 /etc/httpd/ 아래위치하게되실겁니다. 컴파일이정상적으로종료되면다음으로목적파일들을생성해주는단계입니다. make 명령을실행합니다. 진행과정들이화면에나옵니다. 정상적으로완료되면마지막으로실행파일을생성하는단계입니다. make install 명령을실행합니다. 역시진행과정이보여집니다. 모든설치가완료되었습니다. 설치된디렉토리구조를살펴볼까요 root 에서 usr 디렉토리안에 apache 디렉토리로들어갑니다. 여러디렉토리가있는데이중 bin 디렉토리는실행프로그램들이있는곳입니다. 그리고 conf 디렉토리는아파치환경설정과관련된파일이있는곳입니다. 그러면아파치데몬을실행시켜보겠습니다. 터미널에서 /usr/local/apache 디렉토리로이동합니다. 아파치데몬을실행시키기위하여다음과같이명령어를입력하고엔터를누릅니다. #apachetl start 아무에러없이프람프타가나오면정상적으로동작된것입니다. 6/8
3. httpd.conf 파일에대한설정 이제웹서버를사용하기위한기본적인설치는되어졌습니다. 웹서버를좀더잘사용하기위해서는웹서버설정이필요합니다. Apache 웹서버는설정을모두텍스트파일로하게되어있습니다. 아파치설정은원래 3개의파일 (access.conf, httpd.conf, srm.conf) 에서해주었는데, 지금은 httpd.conf 하나만사용하고나머지 2개에는아무것도들어있지않습니다. rpm으로설치한경우이파일들이 /etc/httpd/conf 디렉토리에존재하고소스로컴파일한경우아파치가설치된디렉토리밑에 conf라는디렉토리아래있게됩니다. 예를들어 /usr/local/ 디렉토리에설치했다면 /usr/local/apache/conf/ 디렉토리아래이들파일들이들어가게됩니다. httpd.conf 파일을 vi 편집기를통해열어보세요. 밑에 #( 샾 ) 표시는주석을뜻합니다. 주석으로설정된것은설정을사용하지않겠다는표현입니다. #Listen 3000 #Listen 12.34.56.78:80 아파치를특정 IP 주소및포트번호와연결할수있도록해주는부분입니다. Port 80 서버가실행되기위해서사용하는포트번호를적어줍니다. 1023 번낮은번호의포트는 root 유저의소유로돼있으므 로, root 권한으로실행돼야합니다. ServerName new.host.name 아파치서버는각클라이언트에게서버의이름을보내게되는데, 클라이언트에게보내줄서버의이름이호스트이름과다른경우그이름을설정하는부분이입니다. 여기에올이름은반드시존재하는 DNS 이름이어야하며, 대부분앞에서말한 2 개의이름이같으므로, 기본값은주석문처리돼있습니다. DNS 이름이없으면 IP 주소를적어줘도됩니다 DocumentRoot "/usr/local/apache/htdocs" 아파치웹서버의웹문서가있는경로를지정한다. 예를들어 "http://www.manualand.co.kr/index.html" 의초기문서라면이초기문서의절대경로는여기서지정된 "/usr/local/apache/htdocs/index.html" 이됩니다. 경로의맨마지막에 "/" 를추가해서는안됩니다. Alias 를사용하여다른위치를지정할수도있다. </VirtualHost> Default 가상호스트설정으로위에서설정되지않은다른모든호스트에대해서응답을하고자할경우설정해줍니다. 7/8
그럼실제로 httpd.conf 파일을열어서필요한내용을수정해보겠습니다. Vi 명령으로 httpd.conf 파이을엽니다. 먼저 IP 주소를설치한서버에맞게수정을합니다. 포트는기본설정인 80 을사용할것이므로그대로둡니다. 그리고 Root 는기본설정값을그대로사용합니다. 다음으로 Directoryindex 항목에 index.php 를추가합니다. 그러면웹브라우저에서특정파일명을주소창에입력하지않으면 index.html 이나 index.htm 이외에 index.php 파일이있으면해당파일이브라우저에서열립니다. 마지막으로 wq 명령으로수정한내용을저장한다음 vi 에디터를종료합니다. 설정파일을변경하신후에는반드시아파치를재시작해주셔야합니다. 아파치의데몬이있는위치 (/usr/local/apache/bin) 로이동하여다음과같이재시작명령을실행합니다. #apachetl restart 8/8