[마이크로소프트웨어-기사연재] 리눅스 호스팅 - 1부
작성자 : 직접 작성
작성일 : 2006년 2월 기고 / 총 3부작중 1부
출 처 : 마이크로소프트웨어 [2006년 2월]
서버 관리의 꽃, 리눅스 호스팅 세계로
웹 호스팅이란 대형 통신업체나 전문회사가 자신들의 웹 서버를 개인이나 업체에게 계정을 할당해줌으로써 가상으로 도메인을 운영하게 하여 자신이 직접 서버를 운영하는 것과 같은 기능을 제공해주는 서비스를 말한다. 전세계적으로 호스팅 서버로 가장 많이 사용되고 있는 OS는 바로 리눅스이다. 이번 연재를 통해 리눅스 서버로 호스팅을 운영하기 위한 조건, 그리고 실무에서 운영되는 방식으로 아파치, PHP, MySQL, FTP 서버, 메일 서버 등의 설치와 호스팅 서버 운영 시 반드시 설정해야 하는 중요 설정들에 대해 살펴보도록 하자.
현재 웹 호스팅 서버로 운영되는 운영체제는 크게 리눅스와 윈도우로 나눌 수 있다. 우선 둘의 차이점은 리눅스가 무료로 사용이 가능한 OS인 반면 윈도우는 라이선스를 등록해야 사용할 수 있다. 리눅스는 OS 자체가 무료이고 기타 관련된 우수한 소프트웨어들 또한 거의 대부분 무료로 사용할 수 있기에 서버 구축 측면에서 봤을 경우에는 회선비와 인건비를 제외하면 특별히 부담될 부분이 없다는 장점이 있다. 그렇기 때문에 현재 호스팅 시장에서는 리눅스가 호스팅 서버의 운영체제로 가장 많이 사용되고 있다. 이번 시간에서는 이렇듯 호스팅 서버로 가장 많이 사용되는 리눅스라는 OS를 이용해서 호스팅 시 필요한 서버들을 구축 방법과 구축한 후의 설정에 대해 알아볼 것이다
호스팅 서버를 운영하기 위한 필요조건
호스팅 서버를 운영할 경우 서버의 사양은 해당 서비스가 얼마나 안정적이고 빠르게 응답할 수 있는가를 보여줄 수 있다. 물론 서버 튜닝 등으로 최적화시킬 수 있겠지만 하드웨어 및 제반 사항이 뒷받침된 튜닝은 서버의 성능을 더욱더 극대화시킬 수 있다. 호스팅 운영에 관심이 많은 독자라면 최소한 다음에 나열된 부분에 대해서는 과감히 투자하는 것이 필요할 것이다.
◆ 듀얼 CPU와 SCSI 카드 : CPU는 듀얼로 구성하고 하드디스크는 SCSI 하드디스크를 사용함으로써 CPU의 부하와 디스크 I/O에 최대한 대비할 수 있도록 하자. 현재 운영중인 시스템의 하드웨어 사양이 이를 만족시키지 못한다면, 이번 기회에 업그레이드를 고려해보는 것도 좋을 것이다.
◆ RAID 카드 : 하드디스크는 아무런 이상 없이 잘 돌아가더라도 어느날 갑자기 다운되는 경우가 발생한다. 만약의 사태에 대비해서 다운타임(Down Time)을 최소화하는 대비책으로 RAID를 구성해서 사용해야 한다. 서버에 장애가 발생하여 고객들의 항의가 빗발칠 때면 RAID의 소중함을 더욱 더 절실하게 느낄 수 있을 것이다.
◆ 고정 IP 확보 : 예전에 필자는 유동 IP에 DDNS 서비스를 이용해서 호스팅 서버를 구축한다고 며칠을 고생한 적이 있다. 홈페이지 하나만을 운영할 경우에는 어떻게든지 운영할 수 있겠지만, 호스팅 서버를 운영하려고 하지 마라.
◆ IDC에 서버 입주 : 호스팅 서버를 운영할 경우 집이나 사무실에 서버를 설치해서 운영하기에는 무리가 따르기에 규모가 어느 정도 되는 메이저급의 서버 호스팅 업체들의 서비스를 이용해서 자신이 운영할 호스팅 서버를 IDC에 두고 운영해라. 호스팅 업체들의 서버호스팅은 대부분 코로케이션(Colocation) 서비스와 서버호스팅 혹은 마스터링(mastering) 서비스로 나눠진다.
서버 구성의 시작, 리눅스 설치
리눅스 설치 방법은 시중에 서적이나 인터넷 문서들을 통해 많이 소개되어 있기 때문에 일반적인 부분은 생략할 것이다. 단 호스팅 서버를 이용할 경우 주의해야 할 부분에 중심으로 알아볼 것이다.
◆ 대중적인 배포판을 선택하자 : 웹 호스팅을 운영할 경우에는 애플리케이션의 호환성을 고려해야 한다. 물론 혼자서 서버를 사용한다면 크게 문제될 부분이 없지만, 호스팅이라는 서비스를 하는 것이기에 일반적으로 많이 사용하는 프로그램(제로보드, 티티보드, 테크노트 등)의 설치는 당연히 설치되어야 하고, 고객이 설치하려는 프로그램에 대한 호환성도 고려해야 한다. 또한 업데이트 부분도 배포판 선택 시 고려해야 할 중요 부분 중 하나이다. 예를 들어 레드햇의 제품들은 업데이트 받기 위해서는 라이선스를 구매해야지만 업데이트를 받을 수 있다. 이런 점들을 고려해서 배포판을 선택해야 한다.
◆ X윈도우는 설치하지 말자 : 서버를 운영할 경우에는 특별히 X윈도우를 사용할 일이 없다. 불필요하게 메모리만을 점유할 뿐이다. 만약 오라클을 사용할 경우라면 오라클을 설치한 후 X윈도우를 삭제해서 사용하자.
◆ 확장성을 고려하자 : 어떤 서비스를 할 지를 결정해서 미리 서비스 체계를 계획해라. 예를 들어 웹 서버를 운영할 경우 /home 디렉토리에 대한 공간을 충분히 할당해야 하고 메일 서버를 운영할 경우에는 /var 디렉토리에 충분한 공간을 할당해야 한다.
리눅스를 설치하면 사용하지 않는 불필요한 서비스들이 기본적으로 올라가 있는데, 실제 웹 호스팅 운영에서는 사용하지 않는 서비스들은 시스템 보안을 위협하는 원인이 될 수가 있다. 또한 설치하려는 리눅스가 배포되었을 당시의 커널일 경우에는 반드시 그 이후에 발표된 취약점 등을 보완한 커널로 업데이트해야 한다.
필자는 리눅스 서버에 들어가서 가장 먼저 하는 일이 uanme -a로 현재 시스템의 커널 버전을 확인하는 것이다. 그런데 문제는 필자가 봤던 리눅스 서버의 30% 정도는 기본 커널을 사용하거나 버그가 이미 발표된 오래된 버전의 커널을 사용하고 있다는 것이다. 여기에 더 큰 문제는 운영자가 커널의 심각성을 모른다는 것에 있다. 필자가 항상 강조하는 것이 하나 있는데, 그 어떤 것보다 중요한 것은 리눅스 설치 후에는 반드시 커널에 대해서 만큼은 최신 커널로 업데이트해야 한다. 커널 업데이트를 했다는 것만으로도 기본적인 보안이 되었다는 것을 의미한다. 커널 업데이트 방법에 대해서는 다음 시간에서 자세히 소개할 것이다.

<화면 1> ntsysv 실행한 화면

<화면 2> chkconfig를 이용한 서비스 off

<화면 3> /etc/rc.d/rc3.d에서 서비스 중지
두 번째로 할 일은 부팅 시 불필요한 데몬이 자동으로 실행되는 것을 방지해야 한다. 자동으로 실행되는 것을 방지하는 방법은 다음과 같이 3가지가 존재한다.
◆ ntsysv : <화면 1>과 같이 ntsysv라는 명령어를 이용해서 필요없는 데몬에 대해서는 스페이스바를 이용해서 체크를 해제한다.
◆ chkconfig : <화면 2>와 같이 chkconfig --list를 실행해서 현재 사용중인 list를 확인해서 필요 없는 서비스를 특정 runlevel에서 off로 설정한다.
◆ /etc/rc.d/rc0.d ~ rc6.d : rc0.d~rc6.d 사이에서 일반적으로 서버로 이용할 때 사용되는 실행 레벨인 rc3.d 디렉토리에서 S로 시작되는 서비스명을 찾은 후 자동 재시작을 원치 않는 서비스를 찾아 S를 K로 변경한다. <화면 3>은 rc3.d 아래에 있는 서비스 데몬을 조회한 후 atd 데몬을 S에서 K로 바꾸는 과정이다.
RAID 레벨 1
RAID는 Redundant Array of Inexpensive(혹은 Independant) Disks의 약자로써 여러 드라이브를 하나의 저장장치처럼 다룰 수 있게 하고, 장애 발생시 데이터를 보전할 수 있으며, 각각에 대해서도 독립적으로 동작할 수 있도록 한다. RAID 방식을 사용하는 호스팅은 서버에 디스크 장애가 발생하더라도 디스크 복구에 걸리는 시간을 최고화할 수 있어 호스팅 운영 시 더욱 안정적인 서비스를 제공할 수 있다.
RAID는 0~5까지의 레벨로 존재한다. RAID에 관한 자세한 사항은 관련 문서를 참고하도록 하고 여기서는 호스팅 회사에서 가장 많이 사용하는 미러링(mirroring)이라고 불리는 RAID 레벨 1에 대해 살펴보겠다.
RAID 레벨 1은 <그림 1>과 같이 디스크 1에 기록되는 모든 데이터를 디스크 2에 그대로 복사해 놓는 방법으로 복구 능력을 제공한다. 한 디스크에 장애가 발생하더라도 데이터는 손상되지 않으며, 다른 하나의 디스크로 정상적인 서비스를 할 수 있다. 에러가 발생한 디스크는 실시간 복구할 수 있으므로 디스크에 장애가 발생하더라도 정상적인 서비스를 지속할 수 있다.
<그림 1> RAID 레벨 1의 미러링 방법
웹 호스팅의 필수 요소, APM
보안 설정에 대해서는 다음 시간에 알아보기로 하고 이번 호에서는 호스팅 운영에서 핵심이 되는 웹 호스팅 운영을 위한 웹 서버를 설치해보자. 리눅스 웹 서버는 일반적으로 APM을 설치하는데, APM은 아파치(Apache), PHP, MySQL의 앞글자를 따서 APM이라고 부르며, 웹 호스팅을 운영할 경우에는 반드시 이 APM을 설치해야 한다. 독자들 중에는 웹 서버를 구성하는데 있어서, 꼭 아파치를 깔아야 하고 스크립트 언어는 꼭 PHP를 사용하여야만 하며 데이터베이스는 MySQL을 사용해야 하는가에 의문을 가질 수도 있을 것이다. 웹 호스팅을 위해 반드시 APM을 셋팅해야 하는 가장 큰 이유는 널리 알려진 애플리케이션들과의 호환성 때문이다. 호스팅을 이용하는 고객의 대부분은 가장 큰 목적이 홈페이지를 운영하는 것이다. 홈페이지를 운영하려면 무엇이 있어야 하겠는가? 물론 html 혹은 다른 웹 스크립트 언어로 메인 페이지를 띄운 후 플래시라는 디자인 툴을 이용해서 홈페이지를 조금 더 동적으로 꾸밀 것이다. 하지만 가장 중요한 게시판이 빠지면 어떻게 되겠는가.
물론 웹 호스팅을 이용하는 고객이 직접 프로그램을 짜서 제작한 게시판을 운영하는 경우도 있다. 하지만 호스팅을 운영하면서 경험한 바로써는 80% 이상은 이미 널리 알려진 게시판을 사용하여 홈페이지를 운영하는 것을 볼 수 있었다. 그 대표적인 게시판은 제로보드, 티티보드, 테크노트 등으로 무료로 사용할 수 있으면서도 상당히 손쉽게 설치할 수 있고, 관리가 가능한 게시판을 사용하고 있었다. 여기서 중요한 것은 이런 게시판들을 사용하기 위해서는 APM의 조건을 만족해야 한다. 물론 여기서 티티보드와 테크노트 등은 파일 DB를 쓰기 때문에 꼭 MySQL을 사용할 필요는 없으나 제로보드를 사용하기 위해서는 반드시 APM 환경이 구축되어 있어야 설치할 수 있다.
그럼 본격적으로 APM 설치에 들어가 보자. 먼저 설치를 위해서는 아파치, MySQL, PHP가 rpm으로 이미 설치된 경우도 있기 때문에 rpm -qa | grep mysql 등으로 rpm 패키지 설치 유무를 확인한 후 ‘rpm -e 패키지’로 rpm 패키지를 삭제한다. 그 후에는 각각의 사이트에서 아파치(www.apache.org), PHP(www.php.net), MySQL(www.mysql.com), gd(www.boutell.com/gd/http), free type(freetype.sourceforge.net),
zendoptimizer(www.zend.com), mod_throttle(www.snert.com) 등의 소스를 차례로 다운받는다. 다운받은 파일들은 편의상 /usr/local/src/ 아래에다가 옮긴 후 압축을 푼다.
MySQL 설치
APM을 연동하기 위해서는 먼저 MySQL을 설치한다. MySQL을 설치한 후에는 관리의 편의를 위해 /usr/local/mysql/share/mysql 아래에 존재하는 mysql.server라는 스크립트를 /usr/local/mysql /bin/ 아래에 옮겨놓고 권한을 755로 변경한다. 그 후 MySQL의 시작과 중지는 mysqld_safe를 이용하지 말고 대신 mysql.server 스크립트 이용하도록 한다. mysql.server의 스크립트 내용에 mysql을 가동할 때 들어가야 하는 옵션들을 추가할 수가 있기 때문에 무척 편리하다.
[root@hosting]# tar zxvfp mysql-4.0.20.tar.gz [root@hosting]# cd mysql-4.0.20 [root@hosting mysql-4.0.20]# ./configure --prefix=/usr/local/mysql --sysconfdir=/usr/local/mysql/conf --with-charset=euc_kr --with-mysqld-user=mysql --enable-thread-safe-client --disable-shared
./configure라는 명령어로 설정이 완료되었으면 make 명령어를 이용해서 컴파일하며, 컴파일 후에는 make install을 이용하여 실제 프로그램을 설치한다. 컴파일과 설치는 다음과 같은 명령어로 한번에 할 수 있다.
[root@hosting mysql-4.0.20]# make; make install [root@hosting] cd /usr/local/mysql/bin/ [root@hosting] useradd -d /usr/local/mysql mysql [root@hosting] ./mysql_install_db
DB를 실행시킬 mysql user를 추가하고, var라는 폴더를 생성한 후 mysql을 관리할 데이터베이스인 mysql db와 test db를 생성한다.
[root@hosting] chown -R mysql.mysql /usr/local/mysql/bin [root@hosting] chown -R mysql.mysql /usr/local/mysql/var [root@hosting] su - mysql [root@hosting] cp /usr/local/mysql/share/mysql/mysql.server /usr/local/mysql/bin/ [root@hosting] chmod 755 /usr/local/mysql/bin/mysql.server [root@hosting] /usr/local/mysql/bin/mysql.server start
mysql 계정으로 MySQL 시작 스크립트인 mysql.server를 /usr/local/mysql/bin/에 복사한 후 권한을 할당해서 mysql을 가동한다
[root@hosting] su - [root@hosting] cp /usr/local/mysql/bin/mysql /usr/bin/
호스팅을 사용하는 고객이 ssh로 접속후 자신의 데이터베이스에 들어갈 때 모든 경로를 이용하지 못하게 하기 위해 root 계정으로 환경변수 PATH가 설정되어 있는 /usr/bin 폴더에 복사한다 그리고 마지막으로 패스워드를 할당한다.
[root@hosting] /usr/local/mysql/bin/mysqladmin -u root password ‘hosting!@#$’

<화면 4> 초기 데이터베이스를 생성한 모습
최신 버전 패키지 유지하기
기본적으로 어떤 OS든지 배포할 당시에는 최신의 패키지가 포함되지만, 시간이 지나면 버그나 취약점이 발견됨으로 새로운 버전이 나오게 된다. 호스팅 서버도 당연히 배포될 당시의 OS를 설치하는 것이기에 아무리 최근에 배포된 OS라고 해도 그 이후의 업데이트는 반드시 존재한다. 항상 최신 버전으로 업데이트하는 것은 보안을 강력하게 하는 방법 중 하나일 것이다. 하지만 리눅스에서의 업데이트 문제는 많은 패키지에 대해서 일일이 다운받아서 업데이트해야 하고, 업데이트 시 의존성 에러가 발생하게 되면 그 의존성과 관련된 패키지를 일일이 찾아서 새로 설치해야 하는 등 상당히 복잡한 문제가 발생한다.
미국 듀크(Duke) 대학에서 개발된 yum은 이런 문제들을 해결하기 위한 유틸리티와 업데이트를 지원한다. 현재 설치되어 있는 rpm 정보와 최신 업데이트를 비교해서 업데이트를 수행하는 유틸리티로써 자신의 시스템을 상상 최신 패키지로 유지시켜 준다.
yum은 linux.duke.edu.project/yum에서 다운받을 수 있으며 설치 우에는 /etc/yum/conf에 설정되어 있는 업데이트 서버에 접속해서 최신의 업데이트를 지원한다.
<화면 1> yum을 통한 패키지 업데이트 모습
아파치와 PHP 설치
MySQL의 설치를 마쳤다면 아파치와 PHP를 설치해야 한다. APM을 연동해서 사용하기 위해서는 아파치는 PHP와 동시에 설치해야 한다. 서버 내의 환경정보를 인식시키기 위해 apache 폴더로 이동한 후 다음과 같이 configure를 해준다.
[root@hosting]# cd apache_1.3.34 [root@hosting]# ./configure --prefix=/usr/local/apache
PHP 설치를 위해서 압축을 푼 디렉토리로 이동후 아파치, MySQL, gd, freetype 등의 디렉토리의 경로를 정확히 입력해서 configure를 실행해 컴파일과 설치를 한다.
[root@hosting]# cd /usr/local/src/php-4.4.1 [root@hosting]# ./configure --with-mysql=/usr/local/mysql --with-apache=/usr/local/src/apache_1.3.34 --enable-track-vars --disable-debug --enable-ftp --enable-sockets --with-gd=/usr/local/gd --with-jpeg-dir=/usr/lib --with-gif-dir=/usr/lib --with-png-dir=/usr/lib --with-zlib-dir=/usr/lib --with-ttf=/usr/local/include --enable-gd-native-ttf --with-freetype-dir=/usr/local/src/freetype-2.0.9 --with-iconv [root@hosting]# make; make install
아파치의 최종설치 단계로써 아파치에서 PHP를 정상적으로 사용할 수 있게 하고, mod_throttle을 설정에 넣어줌으로써 추후 도메인당 트래픽을 제한할 수 있게 한다.
[root@hosting]# cd /usr/local/src/apache_1.3.34 [root@hosting]# ./configure --prefix=/usr/local/apache --activate-module=src/modules/php4/libphp4.a --add-module=/usr/local/src/mod_throttle-3.1.2/mod_throttle.c [root@hosting]# make; make install
PHP 환경설정 파일인 php-ini.dist를 /usr/local/lib 폴더에 php.ini 파일로 복사하는 것으로 설치를 마친다.
[root@hosting]# cd /usr/local/src/php-4.4.1 [root@hosting]# cp php.ini-dist /usr/local/lib/php.ini
그래픽 라이브러리, Zend Optimizer 설치
gd와 freetype은 웹 상에서 이미지 처리를 위해서 여러 가지 함수를 지원하고 다양한 글꼴을 지원하는 그래픽 라이브러리이다. 필요한 이미지를 임의로 생성시키거나 이미지에 도형을 그리기 위한 다양한 함수들이 포함되어 있다. 유명한 트래픽 분석기인 MRTG도 이 gd 라이브러리를 사용한다고 한다. gd는 미리 준비되지 않은 데이터를 입력받아 그때마다 즉석으로 서로 다른 결과의 그림을 뿌려주는 역할을 한다. 한마디로 웹상에서 그래픽 출력이 구현되도록 하는 라이브러리이다. 단 gd를 사용할 경우 웹 페이지에서 이미지 형태로 문자열을 쓸 수 있는데 문제는 글꼴이 단순하다는 것이다. 그래서 윈도우에서 사용하는 트루타입 글꼴을 사용할 수 있게 하기 위해 freetype을 설치하는 것이다. 즉 gd와 freetype은 PHP에서 그래픽 관련 프로그램을 작성할 경우 반드시 필요한 라이브러리이다.
Zend Optimizer는 Zend Encoder와 Zend SafeGuard Suite에 의해 인코딩된 파일을 실행시키며, PHP 애플리케이션의 실행 속도를 향상시키는 공개 소프트웨어로써 PHP의 성능을 40% 이상 향상시킬 수 있다. 설치방법은 압축을 풀면 install.sh 파일이 있는데 이 파일을 실행시키면 쉽게 설치할 수 있다.
그 외의 설정
APM 설치가 완료되었다면 기본적으로 PHP 확장자가 인식될 수 있도록 아파치 환경설정 파일을 수정해주고 호스팅 서버 운영 시 관리의 편리성을 위해 자주 사용하는 긴 디렉토리를 심볼릭 링크를 걸어주게 되면 관리자의 입장에서는 상당히 편하다. 또한 php.ini 파일에서 allow_url_fopen 값을 변경해줌으로써 보안상 취약한 부분에 대해 패치가 가능하다. 그럼 이런 설정에 대해 살펴보자. 먼저 php 확장자를 사용하기 위해 아파치 환경설정 파일인 /www/conf/ httpd.conf 파일의 적당한 부분에 다음과 같은 항목을 입력한다.
AddType application/x-httpd-php .php .php3 .inc AddType application/x-httpd-php-source .phps
아파치 로그파일을 잘라주는 역할을 하는 rotatelogs를 PATH가 걸려 있는 /bin/ 디렉토리로 복사한다.
[root@hosting]# cp /usr/local/apache/bin/rotatelogs /bin
관리의 편의성을 위해서는 /usr/local/apache의 긴 경로를 /www로 심볼릭 링크를 걸어야 한다. 이렇게 할 경우 아파치 환경 설정파일을 들어갈 때 /usr/local/apache/conf/httpd.conf의 긴 경로를 다 입력할 필요가 없이 /www/conf/httpd.conf처럼 줄일 수 있다. 꼭 /www로 링크를 걸어야 된다는 정해진 규칙은 없다. 단지 관리의 편리 때문에 필자는 이렇게 사용하고 있다.
[root@hosting]# ln -s /usr/local/apache /www
또 php.ini 파일에서 allow_url_fopen = On의 설정 값을 Off로 변경한다. 2005년 초에 발생한 일이었는데, 제로보드와 KorWeb Log 등 PHP를 이용한 웹 게시판에서 대량의 웹 변조가 가능한 PHP INJECTION 보안 취약성 문제가 발견되어 이에 대한 긴급패치가 이뤄졌다. 이 보안취약성은 PHP에서 제공하는 http나 ftp 프로토콜을 통한 외부소스 실행 기능의 취약성(PHP INJECTION)을 이용한 것으로 공격자는 다양한 보안 공격도구를 실행하여 관리자 권한 획득으로까지 발전할 수 있다.
이런 외부 소스실행을 원천적으로 막기 위한 방법으로는 php.ini의 allow_url_fopen의 값을 On에서 Off로 수정하면 된다. 단 PHP에서 외부 소스를 실행하게 프로그램을 직접 만든 고객들이 있는데, 간혹 이런 고객들이 항의하는 경우가 있다. 물론 친절히 설명을 해주면 이해해주는 고마운 고객들도 있지만 간혹 해당 취약점을 아무리 설명해도 이해하지 못하고 무조건 기존처럼 해달라는 고객들도 있다.
이런 고객들을 위한 방법으로 httpd.conf의 고객의 VirtualHost에 다음과 같이 php_admin_flag allow_url_fopen을 On으로 설정하면 사용할 수 있다. 하지만 이 역시 보안에 취약한 부분이기 때문에 가급적이면 최대한 고객을 설득해서 사용하지 않도록 하는 방향으로 하고, 최악의 경우에만 사용하는 대신 그만큼 더 신경써서 관리를 해야 한다.
<VirtualHost linuxtown.net> ServerAdmin rchwin@nate.com DocumentRoot /home/linuxtown/public_html ServerName linuxtown.net ServerAlias www.linuxtown.net php_admin_flag allow_url_fopen On </VirtualHost>
APM의 정상설치 확인
APM이 정상적으로 설치되었는지 확인하려면 데이터베이스를 하나 생성한 후 APM을 꼭 필요로 하는 게시판(예 : 제로보드)을 설치한 후 정상적으로 작동하는지 확인하면 될 것이다. 그럼 아파치, PHP, MySQL 등 각각의 설치 이상 유무 확인하는 방법을 알아보도록 하자.
아파치 확인
웹 브라우저 창을 띄운 후 서버 IP를 입력하면 <화면 5>와 같이 초기 파일인 index.html 파일을 찾지 못해 아파치를 처음 설치했을 때 기본 디렉토리에 존재하는 모든 파일목록을 보여준다. 그러나 이렇게 해당 파일이 존재하지 않을 때 디렉토리의 목록을 모두 보여주는 것은 보안상 상당히 취약한 부분이다. 다음 호에 보안 설정 부분에서 살펴볼 것이지만, 지금은 아파치가 정상적으로 설치되었는지 확인하려는 것이기 때문에 나열된 목록 중에서 index.html.kr.iso-kr을 클릭하면 <화면 5>와 같은 한국어 환영 메시지를 볼 수 있다.
그리고 평상 시에 아파치 프로세스가 정상적으로 떠있는지 확인하는 방법으로 <화면 6>과 같이 ps aux | grep httpd를 하면 해당 떠있는 프로세스를 확인할 수 있다. 만약 아파치가 죽었다면 아무런 프로세스도 보이지 않을 것이다.
PHP와 MySQL 설치 확인
PHP의 설치를 확인하기 위해서는 /www/conf/htodcs/에 PHP의 정보를 보여주는 함수인 phpinfo()를 이용해 phpinfo.php라는 파일을 만들어 확인한다. 이 함수로 configure 정보 외에도 gd와 freetype의 설치 유무 등도 확인할 수 있다. 파일을 만들었다면 ‘http://해당IP/phpinfo.php’를 입력하면 <화면 7>과 같은 PHP 정보를 볼 수 있을 것이다.
MySQL의 설치를 확인하기 위해서는 MySQL에 정상적으로 접속이 되는지 확인하거나 ps aux | grep mysql를 실행해 MySQL의 프로세스가 정상적으로 떠 있는지 확인한다. 또는 netstat -nlp라는 명령어를 통해 mysql의 포트인 3306이 제대로 떠 있는지 확인하면 된다.
메일 서버와 FTP 서버
메일 서버와 FTP 서버는 호스팅 서버 운영 시 반드시 필요한 서버이다. 예를 들어 고객이 자신의 컴퓨터에 존재하는 파일을 서버에 전송하려면 반드시 FTP 서버가 가동되어야 하고, 고객의 홈페이지에 새로운 회원이 가입해서 가입 축하 메일을 발송하기 위해서는 반드시 홈페이지가 존재하는 서버에 메일 서버가 있어야 한다. 그럼 FTP 서버와 메일 서버의 기본 개념에 대해서 살펴보도록 하겠다. 호스팅 서버 운영 시 필요한 설정 등은 다음 호에 알아볼 것이다.

<화면 5> 아파치 환영 메시지
FTP는 두 컴퓨터 간의 파일 전송을 위한 인터넷 표준 프로토콜이며 FTP 클라이언트를 써서 서버에 접속해 파일을 주고받는 일을 수행한다. 즉 호스팅 사용자가 홈페이지를 운영하려고 한다면 자신의 홈페이지 파일을 서버의 자신의 계정에 전송해야 할 것이다. 이때 자신의 컴퓨터에 있는 파일을 서버에 전송하려면 서버에 FTP 서버가 가동되어 있어야 파일을 전송할 수가 있다. FTP 서버로는 많은 호스팅 회사에서 Proftp를 사용한다. proftpd에 대한 자료는 www.proftpd.org에서 구할 수 있으며 설치는 다음과 같이 rpm으로 간단하게 설치할 수 있다.
[root@hosting]# rpm -Uvh proftpd-버전.rpm

<화면 6> ps aux로 아파치 프로세스 확인하는 방법

<화면 7> phpinfo 화면
메일 서버는 인터넷에서 이메일을 주고받는 기능을 수행하는 서버를 말하며, 크게 두 종류의 프로그램(MUA와 MTA)과 프로토콜(SMTP, POP3/IMAP)을 사용한다. 여기서 두 종류의 프로그램이란 MTA(Mail Transfer Agent : Sendmail 등의 메일을 전송해주는 서버측 프로그램)와 MUA(Mail User Agent : Netscape Messenger, Outlook, Eudora 등의 사용자가 메일을 보내고 받을 때 사용하는 클라이언트측 프로그램)를 말하며, 두 종류의 프로토콜은 메일 전송 시 사용되는 SMTP(Simple Mail Transfer Protocol)와 호스트로부터 받은 메일을 클라이언트로 전달할 때 사용되는 POP3(Post Office Protocol 3)나 IMAP(Internet Message Access Protocol)를 말한다.
먼저 MUA에 대해 알아보겠다. 대부분 호스팅 회사의 서비스를 보게 되면 호스팅을 이용 시 기본으로 메일 계정 N개를 무료로 제공한다는 부분을 보았을 것이다. 메일을 무료로 제공한다는 것은 사용자의 도메인 주소를 메일 주소로 사용할 수 있다는 뜻이다. 예를 들어 사용자가 소유한 도메인이 a.com이라면 자신의 메일주소는 ‘사용하려는 계정@a.com’이 된다는 것이다. 다시 말해 사용하려는 계정이 master라면 master@a.com이라는 메일 주소를 사용할 수 있다는 뜻이다. 이렇게 사용자가 서버에 자신의 메일을 사용하기 위해서는 MUA가 설치되어 있어야 한다. 레드햇 계열의 리눅스 배포판에서는 IMAP과 POP 데몬을 하나의 패키지로 제공하고 있어 IMAP 패키지 하나만 설치하면 IMAP, POP3 서비스를 할 수 있다.
MTA에 대해서도 알아보겠다. 대부분 호스팅 회사에서 MTA로 사용되는 서버는 sendmail이다. 그럼 sendmail은 어떤 경우에 사용하는지 알아보자. 예를 들어 고객 홈페이지의 게시판에서 누군가 답변을 남겼을 때 담당자가 그 내용을 메일로 받게 하거나, 또는 회원가입 시 가입축하 메일을 발송할 경우에도 반드시 해당 서버의 메일 서버를 이용해야 할 것이다. 이렇듯 메일 서버는 웹 서버가 설치되어 있는 서버에 반드시 설치되어 있어야 한다. sendmail의 설정 파일은 sendmail.cf이며 호스팅 운영상 설정해야 하는 부분은 마지막 시간인 ‘호스팅 실무 운영’에서 자세히 살펴볼 것이다.
성능과 보안에 신경써야
이번 호에서는 리눅스 시스템을 이용하여 호스팅 서버를 운영할 경우 OS 설치 시 특이사항, 그리고 각각의 설치되는 서버들, APM, FTP 서버 그리고 메일 서버에 대해 알아봤다. 그리고 서버 운영 시 불필요한 서비스, 예를 들어 X윈도우나 사용하지 않는 데몬들은 제거해서 불필요한 메모리의 점유를 배제시켜 성능을 향상시키고 보안에 틈을 주지 않도록 하자. 이를 바탕으로 다음 호에서는 각각의 서버들에 대한 보안 설정 방법과 커널 업데이트, 그리고 QUOTA 설정 등에 대해서 살펴볼 것이다.
작성자 : 유찬흥│삼성네트웍스 운영팀
작성일 : 2006년 2월
출 처 : 마이크로소프트웨어 [2006년 2월]

이 글의 권한은 dbtown.net 에 있습니다.
자료를 스크랩하실땐 출처를 밝혀주세요 ^^
Skin Technical Note
Sites validated CSS, XHTML & IE6, IE7, FireFox, Opera and Safari Accessiable. Generator & Powered by Zeroboard XE. This site inspired by Slabovia and developed by WTA

