- 아파치 - * 웹서버 : 웹서비스를하는프로그램또는컴퓨터웹서비스에대한데몬은 httpd 데몬이아파치이다. * 웹브라우저 : 마이크로소프트인터넷익스플로러, 넷스케이프내비게이터등... http(hypertext Transfer Protocol) 라는프로토콜은해당주소의웹서버에게 http 라는프로토콜로서비스를요청. http는웹서버로부터 html형식인파일을 client가볼수있는페이지로열어주게된다. * 아파치패키지설치 1. rpm 명령으로패키지를확인 # rpm -qa grep httpd 2. 설치되어있지않은경우리눅스설치 CD 에서설치할수있다. CD 안에있는디렉토리중에서 RPM 패키지들이모여있는곳으로이동한다. http 라는이름을가지고있는파일들이디렉토리안에있는지확인한다. # rpm -Uvh *httpd* * 아파치시동하기아파치가설치되면리눅스서버는웹서버로서준비가끝난것이다. 아파치웹서버의설정파일은 /etc/httpd/conf/httpd.conf 이다. 1. 별다른설정없이아파치웹서버가가동되는것을확인할수있다. httpd.conf 설정파일에 ServerName 항목만변경해주면아파치웹서버는가동된다. 2. ServerName 항목만변경해주어도아파치웹서버를실행할수있다. # /etc/rc.d/init.d/httpd start 3. ps 명령으로웹서버의프로세스를확인한다. 4. 리눅스가부팅할때마다아파치웹서버가시작되기위해서 ntsysv 를이용한다. - 148 -
5. 웹페이지가위치하는디렉토리는 /var/www/html 이다. 기본적으로웹서버는클라이언트의요청에대해 /var/www/html 디렉토리에있는 HTML 문서중에서 index.html 문서를보여준다. # vi /var/www/html/index.html 6. 테스트를위해간단한메시지를적어넣자. Test Page Reloaded This Web Page is made by soong 7. 웹브라우저모질라파이어폭스를실행한다. 주소입력란에 http:// 호스트명/index.html 또는 http:// 서버IP주소 를입력한다. *APM 웹페이지를구축하는데필요한아파치웹서버, 스크립트언어인 PHP, 데이터베이스인 MySQL의 3 인방의첫이니셜을따서 APM 이라고부른다. MySQL 은데이터베이스서버, PHP 는서버에서실행되는스크립트언어, 웹문서인 HTML 파일에포함되어사용할수있는프로그 래밍언어. 개인용홈페이지도구(Personal Home Page Tool) 라는이름이다. *APM설치하기 APM 을연동해서사용하기위해서는아파치웹서버, 데이터베이스 MySQL, 스크립트언어인 PHP가 설치되어야한다. 1. 패키지들의설치상항을확인한다. # rpm -qa grep httpd # rpm -qa grep php # rpm -qa grep mysql - 149 -
설치되어있지않은경우소스파일을다운받아컴파일하거나 RPM파일로설치하는데 MySQL은의존성문제가있어서 perl-cgi, perl-dbd-mysql, mysql을설치해야하는데 perl-dbd-mysql은 Mysql안에있는 libmysql-cilent.so.10이필요하다고하여 MySQL을먼저설치하게되면다시 perl-dbd-mysql이필요하다고하여서로의존성이있다는것을알수있다이런경우 # rpm -Uvh perl-dbd-mysql-2.1021-3.i386.rpm mysql-3.23.54a-11.i386.rpm 으로함께설치하면된다. 다음으로 # rpm -Uvh mysql-server-3.23.54a-11.i386.rpm 를설치하고 세가지패키지들을연결하기위한 php-mysql 패키지를설치해야한다. php-mysql은 MySQL데이터베이스를사용하기위한 PHP 용모듈로, 스크립트언어 PHP와 MySQL을연결해주는접착제역할을하는패키지이다. # rpm -Uvh php-mysql-4.2.2-17.i386.rpm 2. APM 의모든패키지설치가끝났다. MySQL 데몬부터실행시킨다. #/etc/rc.d/init.d/mysqld start 3. MySQL 데몬이제대로동작하고있는지확인한다. #ps-ef grepmysql 4. MySQL 데몬이동작하는중에 MySQL 데이터베이스에접속해본다. 처음접속할때에는 MySQL 서버의관리암호를지정한다. 5. MySQL 서버접속한다. 위에서지정한데이터베이스관리자암호를입력한다. mysql> 이라는프롬프트가나타나면성공적으로데이터베이스에접근한것이다. - 150 -
6. status 명령을입력하면 MySQL 의상태를출력한다. 7. 사용할수있는데이터베이스를확인한다. show databases 명령다음에반드시 ; 을사용하여명령을실행시킨다.. 8. MySQL이이상없이동작하면 exit; 명령을내려다시리눅스의명령프롬프트로돌아간다. 9. PHP가제대로동작하고있는지테스트하기위해 HTML 문서가위치하는디렉토리 /var/www/html 디렉토리에 test.php 라는파일을만들어본다. # vi /var/www/html/test.php 10. phpinfo 함수를사용해서 PHP 가제대로작동되는지알아보자. PHP 컴파일옵션과버전, 환경설정정보및환경변수등서버에설치된 phprhksfus 정보를확이할 수있다. 11. 모질라파이어폭스웹브라우저를실행시켜본다. 주소창에 http:// 서버주소/test.php 또는 http:// 호스트명/test.php - 151 -
12. 테스트가성공적으로끝났다면부팅할때마다자동실행될수있도록 ntsysv를실행시켜데몬들을띄워준다. httpd, mysqld, 를추가로설정해준다. * 아파치웹서버의설정웹서버를설치한경우설정파일은 /etc/httpd/conf/httpd.conf 이다. httpd.conf 파일은다음과같은세가지섹션으로이루어져있습니다. session 1 : Global Environment : 아파치전체적인영향이미치는설정 session 2 : 'Main' server configuration : 주서버에대한설정 session 3 : Virtual Hosts : 가상호스트에대한설정주로설정해야하는부분이 session 1과 session 2 부분이다. *Session1아파치 서버의전체적인환경설정 1. 웹서버가클라이언트의요청에대한응답표시 ServerToken 항목을 OS로설정하면운영체제에대한정보와 Apache 정보를같이 client에게제공해 준다. ServerToken 항목을 min으로설정하면 Apache의버전과같이웹서버의이름과버전정보만제공된 다. 2. ServerRoot 에는웹서버의환경설정파일, 에러및로고메시지가있는디렉토리를지정한다. 3. ScoreBoardFile 항목은웹서버가동작할때생성되는프로세스들의 PID(Process ID) 를기록하는파일의위치를설정한다. 4. PidFile 항목은웹서버가동작할때주서버프로세스의 PID(Process ID) 를기록하는파일의위치를설정한다. 5. Timeout 항목은클라이언트가요청한정보를받을때까지소요되는초단위의대기시간의최대값을나타낸다. 네트워크속도가나쁠수록수치값을높게설정하는것이좋다. 6. KeepAlive 는클라이언트가지속적인접속을허용할지여부를결정한다. Off는접속해있는클라이언트의요청을처리한후연결을끊고다음요청때다시접속하는과정이필요하다. 성능저하가일어날수있다. On 으로설정하면다음요청에대해초기시간을절약하게해준다. - 152 -
7. MaxKeepAliveRequests 항목은클라이언트가접속한동안아파치서버에요청할수있는최대의서비스개수를지정해준다.0 은서비스의개수의제한이없음을의미한다. MaxKeepAliveRequests 100 8. KeepAliveTimeout 옵션은클라이언트가같은방법으로다음요청을했을때를기다리는시간이다. KeepAliveTimeout 15 15 초내에다음요청을하지않으면접속을끊게된다. 9. 아파치웹서버는클라이언트의접속요청이들어오면자기가만든프로세스를하나씩대응하여 응답한다. 프로세스수는웹서버의성능을좌우하는중요한항목이된다. MPM(Multi-Processing Modules) 에따라프로세스의수가설정될수있다. StartServer 아파치웹서버가시작할때프로세스의수를지정한다. MinSpareServers/ MaxSpareServers는프로세스가쓸데없이사용되는프로세스의수를삭제해서메모 리의낭비를막고자하는항목이다. MaxSpareServers 항목은프로세스가설정된값이상이되면사용되지않는일부프로세스를종료시킨 다. MaxClient 항목은동시접속할수있는클라이언트수를결정한다. 클라이언트들이동시에최대로접 속했을때실행가능한최대서버의수를지정하는것이다. 동시접속이많다면그만큼하드웨어성 능이좋아야한다. MaxRequestPerChild는아파치웹서버가실행된후자식프로세스가처리하는최대연결요청을결 정한다. 10. Listen 은클라이언트가요청을받아들이는 IP 주소혹은포트번호를지정하게된다. Include 는웹서버의설정파일의위치를지정한다. 11. LoadModule 는각모듈에대한설정항목이다. 설치한 PHP를사용하기위해서 LoadModule 항목가장아래에 PHP 모듈을등록해준다. *Section2메인서버설정 'Main' server configuratin 은아파치서버의가장핵심으로, 값들을설정한다. 아파치웹서버에의해사용되는중요한 1. root가아닌다른사용자나그룹으로아파치웹서버를시동하고자할때아파치를사용할권한을부 여한다. 아파치웹서버는접속시에 root 권한으로실행된다음 User와 Group 항목에적혀있는 apache 권 한으로바뀐다. 시스템에 apache 사용자가없다면추가시켜준다. #useraddapache # ps -ef grep apache => 사용자가접속했을때프로세스를보면사용자(apache) 권한으로실행되고있는것을확인할수있다. 서버에문제가생겼을때클라이언트가메일을보내는웹서버관리자의주소이다 2.. 메일서버가구축이되어있어야한다. - 153 -
3. 내부네트워크에서리눅스서버의등록된호스트이름을적어주면된다. 4. 웹서비스로사용될 HTML 문서가위치하는곳의디렉토리를지정한다. HTML 문서의루트디렉토리가된다. 5. 디렉토리를제어하기위한구문이다. <Directory /> ~ </Drectory> 웹서버의모든디렉토리에서사용할옵션을지정한다. FollowSymLinks 항목은심복릭링크를따라이동할수있게하는옵션 AllowOverride 옵션은각각의디렉토리에별개의파일을만들어접근권한을설정할때사용하는옵션이다. 보안상중요한옵션( 기본값으로사용하면됨) 6.<Directory "var/www/html"> ~ </Directory> 부분은이다. DocumentRoot로설정된디렉토리에대한설정 7. DirectoryIndex 항목은주소창에웹서버의 URL 정한다. 처음에시작페이지가될파일을지정한다. index.php 페이지르맨처음에찾는다. 주소만지정했을때처음으로보여줄파일을결 8. 웹서비스를수행하는루트디렉토리 /var/www/html 디렉토리이하에하위디렉토리를만들어서비스할때그디렉토리에대한사용자별접근제한을할수있도록.htaccess 파일에정해준다. 웹서버의에러로그가기록될파일을지정한다 9.. 에러로그는웹서버가제대로동작하지않을때문제를해결할수있는실마리가되는중요한파일이 - 154 -
다. 10. 에러로그를기록할수있는수준을결정한다. debug, info, notice, warn, error, crit 단계로에러기록한다. crit 레벨로갈수록시스템에오류를간단하게 debug 레벨로갈수록세부사항까지로그기록을남긴다.( 기본값은 warn 이다) 로그파일은기본패키지로설치된아파치웹서버는 /var/log/httpd/ 디렉토리에로그파일들이위치 한다. access_log 파일은 접속로그, error_log 는 에러로그, 웹 보안을 위해 사용되는 SSL의 접속 로그 ssl_access_log, ssl_error_log 로기록된다. 11. 웹서버를통해서비스되는디렉토리경로에대해별칭을부여하여사용한다. Alias "/var/www/icons/" 와같은경우 /icons 라는이름은 /var/www/icons/ 디렉토리의별칭이된다. 12. Redirect 항목은주소를다른주소로변경하고자할때사용하는항목이다클라이언트가기존의 URL 을새로운주소로접속할수있도록한다. 13. 한글로된웹문서를제대로서비스를하고자할때 euc_kr 옵션을사용한다. UTF-8 을 euc_kr 로바꿔주면된다. 14. MIME 유형의설정파일이름을지정한다. /etc/mime.types 파일에는파일확장자와거기에대응되는칸텐츠유형을설정해놓으면 client가웹브라우저를통해접속을했을때 client가요구하는컨텐츠에해당되는프로그램을실행시켜준다. mp3 파일을듣게된다면 mp3 플레이어가시작되고동영상파일인경우동영상플레이어가실행된다. - 155 -
15. mime.type 에의해변환하지않고사용되는유형을정의할때사용한다. 위내용중두줄은 PHP 를위한설정이다. * 웹사이트에제로보드설치제로보드는무료로배포되고있는 PHP 를이용한게시판이다. 제로보드를사용하는데 MySQL 은필수적이다. 제로보드는데이터를데이터베이스에별도로관리하므로자료의안정성이보장되며, 자료의추출과가공, 이식, 보관이매우용이하다. 제로보드를이용해서다양한용도. 즉방명록, 일기장, 자료실, 북마크, 설문조사, 멤버리스트, 공지사항, 갤러리등다양한용도로사용이가능하다. 1. 제로보드는 http://beta.zb5.zeroboard.com에서다운받을수있다. 2. 제로보드의소스파일을다운받은 /root/desktop 디렉토리로이동한다. #cddesktop 3. tar 명령으로제로보드의소스파일의압축을해제한다. # tar zxvf zb5.beta.0.0.5.tar.gz 4. 제로보드의파일이저장된 bbs 디렉토리가생성된것을확인후 /var/www/html 디렉토리로옮긴 다. # mv bbs/ /var/www/html/ 5. /var/www/html/bbs 디렉토리의퍼미션을 777 로조정한다. 퍼미션을조정하지않았을경우는설치 에실패할수있다. # chmod 777 /var/www/html/bbs/ 6. 제로보드를설치할때사용할데이터베이스를만든다. 7. show database; 명령을내려현재만들어져있는데이터베이스가나타난다. - 156 -
8. 제로보드에서사용될데이터베이스를하나더만든다. create 명령을사용해서만들게된다. 데이터베이스명은 root_main 으로한다. mysql>create database root_main; 데이터베이스삭제는 drop database root_main; 이다. 9. 데이터베이스가만들어졌는지확인해보자. mysql> show databases; 10. exit; 명령으로 MySQL 을종료한다. 11. 웹브라우저에서 install.php로설치를진행하기위해주소창에 http:// 로칼호스트( 또는주소)/bbs/install.php 라고입력한다. 예 ) http://rhee.soong.moo/bbs/install.php http://192.168.75.128/bbs/install.php 12. 저작권소개와라이센스에대해각각체크한후확인버튼을누르면설치시작페이지나오게된다. 암호화되지않은정보를보낼때마다알려주세요 의체크는해지하고계속버튼을누른다. 13. MySQL 데이터베이스설정화면이다. HostName에기본적으로지정된 localhost로사용하고 SQL UserID는 root, Password는 MySQL 에접속할때사용하는암호를입력한다. 데이터베이스의이름은 root_main 을사용한다. < 설정완료> 단추를클릭하면다음설치로진행한다. 14. 암호를기억하는화면에서는 아니오 단추를클릭한다. 15. 제로보드를관리할관리자에대한정보를설정한다. ID에관리자 ID와 password 를입력한다. password 를한번더입력하고관리자이름을입력후완료를클릭한다. 16. 제로보드관리자페이지로로그인을한다. UserID에관리자의 ID를입력하고 Password 에는조금전에입력한제로보드관리자암호를입력한다. <Administrator Login> 단추를클릭하면제로보드관리자페이지가나타난다. 17. 암호저장메시지가나오면 아니오 를누르고계속진행해나간다. 18. 게시판을사용할새로운그룹을생성한다. 좀더다양한설정을통해그룹의권한들을조절할수있다. 테스트를위해기본설정으로진행하자. 페이지맨마지막에 <Confirm> 단추를누르면설정이마무리된다. - 157 -
19. 페이지의왼쪽에서추가버튼을눌러관리할게시판을추가한다. 나머지설정은알아서... 20. 게시판하나가만들어졌으니테스트해보자... 이러한웹사이트를만들기위해서는웹개발언어등와데이터베이스을전문적으로배워야 (PHP ) (SQL) 한다. - 158 -