<PRE>안녕하세요??산이입니다.아래 문서는 -아파치1.3.9-센드메일 8.3.x-qpopper 3.0-ProFTPd1.2pre6
를 중심으로 작성되었습니다. 용량이 꽤 되네요.....=========================================[웹호스
팅]RedHat 6.0기반 가상웹-메일-FTP운영하기산이<san2 at urban.suwon.ac.kr>1999-08-18 : 1차 (최초작성)1999-
09-16 : 2차---------------------------------------------------------------이 글의 내용은 1대의 리눅스박스
에 같은 IP, 서로 다른 IP, 같은 도메인, 서로다른 여러개의 도메인에 대해서 가상웹-메일-FTP
운영을 다루는 기초적이고예시적인 방법으로 서술한 내용입니다.그리고 실제로 내부IP를
이용하여 테스트에 성공한 예입니다.---------------------------------------------------------------이 문
서는 HTML 문서로도 지원합니다. http://linuxer.suwon.ac.kr/linux_docs/virtual_services/주)개념적이고 원
론적인 내용은 모두 빠져있습니다. 웹상에 많은 문서가 존재하므로 이런 문서를 찾아 먼저
습득하고 본 문서를 읽어나가면 쉽게 이해하리라 생각됩니다.또한 이 문서는 좋은 문서가
아닙니다. 다만 하나의 예시 일 뿐입니다.그러나 예시를 통해 자신의 상황에 맞게 수정하
면 누구나 쉽게 가상웹-메일-FTP를 운영하리라 생각했기 때문에, 그리고 본인의 실력이 형
편없는 관계로원론적이고 개념적인 내용을 설명하자면 어쩔 수 없이 도용(?)해야만 하기때
문에 개념적이고 원론적인 정의는 모두 뺐습니다.따라서 이하 서술된 내용은 리눅스 전문
서적이나 기존에 존재하는 문서를 그대로 배끼는 그런 우매한 짓은 하지 않을 것이며 이런
문서의 지식을 바탕으로본인이 직접 테스트하고 느낀 점을 토대로 서술해 나갈 것이며,
설사 본인의지식이 모자라 기존의 문서의 힘을 빌릴경우에는 정확한 출처를 밝히고 기술
해 나갈것입니다.이하 관례적으로 "경어" 생략합니다.-------------------------------------------------
--------------목차1. 들어가기 전에 1-1. 상세한 세부분야 내용(참고자료)-링크 1-2. 나의 테
스트 환경 및 목표2. DNS(도메인 네임서비스) 설정 2-1. Bind 설치하기 2-2. 나의 목표에 맞게
DNS 설정 2-2-1. /etc/named.boot 2-2-2. /etc/named.conf 2-2-3. /var/named/named.ca 2-2-4. /var/nam
ed/named.local 2-2-5. /var/named/zone-10.168.192 2-2-6. /var/named/zone-linux.ac.kr 2-2-7. /var/named/zon
e-linuxer.com 2-2-8. /var/named/zone-linuxer.net 2-2-9. /var/named/zone-sonamu.co.kr3. 가상 웹서버 (아
파치 1.3.9 경우) 3-1. 아파치설치(생략) 3-2. 아파치 설정파일(httpd.conf)4. 가상 메일서버 4-
1. sendmail 설치하기 4-2. qpopper 설치하기 4-3. /etc/sendmail.cf 4-4. /etc/sendmail.cw 4-5. /etc/sendmai
l.cm 4-6. /etc/mail/access 4-7. /etc/mail/virtusertable5. 가상 FTP서버 (ProFTPd) 5-1. ProFTPd 설치하기 5
-2. /etc/proftpd.conf6. 마치며---------------------------------------------------------------1. 들어가기 전에1-
1. 상세한 세부분야 내용(참고자료)링크- Net-3 HOWTO(KLDP)- Network Adminstrator Guide(KLDP)- 김병찬(적
수)님의 네임서버강좌(KLDP)- 김승영님의 DNS(도메인네임 및 네임서버구축)(KLDP)- DNS HOWTO(KLDP)-
리눅스에서 IP Aliasing 세팅하기 mini HOWTO(KDLP)- Sendmail 이야기(KLDP)- Virtual Services HOWTO(KDDP)- 가
상웹 mini HOWTO(KLDP)- 아파치 1.3 메뉴얼 Virtualhost(영문)- Proftpd Configuration(영문)- Proftpd Reference (
영문)- POP3 daemon 설치 및 활용가이드 -네번째 판(박재호님 홈페이지)- 김정균님의 홈페이지1
-2. 나의 테스트환경 및 목표[서버환경]- OS:알짜리눅스6.0(커널2.2.12)- 3Com 900B-TPO Ethernet Card 1
개- Intel eepro 10 ISA Ethernet Card 1개- apache 1.3.9-1kr- Sendmail 8.9.3-10kr- qpopper 3.0- bind 8.2-6- Proftpd 1.2.
0Pre6(99.09.11일자)- 사용한 IP:192.168.10.3~5 (내부IP)[클라이언트환경]- OS:윈98- 3Com 905B-TPO Ethernet
Card 1개- 사용한 IP:192.168.10.11 (내부IP)[나의 목표]- 서버 : 리눅스박스1대- 사용할 IP : 192.168.
10.3 192.168.10.4 192.168.105(3개)- 앞으로 계속 도메인이 추가시에는 192.168.10.5 하나만 사용할 예
정이다.- linux.ac.kr 도메인은 현 리눅스박스의 주 도메인이고 game(계정 : game) 호스트만 제
외하고 모두 root가 관리한다. game 호스트 관리자인 game은 웹 문의에 대한 메일을 gamedori@
hanmail.net 로 사용하고자 한다.- linuxer.com 도메인을 사용하는 자는고객이며 2개의 웹호스트
(www. stock)를 운영하기를 원하고 'stock' 웹호스트 대한 웹문의는 별도로 stock at linuxer.com 으로
받고 싶어하며 Anonymous FTP도 운영하고자 한 다. 계정은 com이며 1명이 관리하고자 한다.- li
nuxer.net 도메인을 사용하는 자는 고객이며 역시 2개의 웹호스트 (www. meeting)를 운영할 계
획이고 meeting 웹호스트의 이용자가 많아 'www' 웹호스트의 Admin이 관리할 수 없어 다른 사
람이 관리하기를 원한다. 따라서 'www' 웹 호스트에 대해서는 Admin(계정 : net)과 'meeting' 웹
호스 트에 대해서는 다른 사람(account : meet)이 관리하고자 한다. 'meeting' 웹호스트에 대
한 웹문의는 meeting at linuxer.net 로 사용하므로 결국 2명이 관리하는 셈이다.- sonamu.co.kr 도메
인을 사용하는 자는 고객이며 오직 하나의 웹호스트 ('www')만 운영하고자 한다. 또한 메
일은 webmaster at sonamu.co.kr 이 아닌 admin at sonamu.co.kr로 사용하고자 한다. 또한 이 고객이 몸담
고 있고 회사에서는 4개의 e-mail을 더 사용하기를 원한다. 즉 이 회사의 사장은 namu@sonam
u.co.kr, 나머지 3명의 사원은 각각 'kim', 'park', 'lee' 라는 ID로 메일을 이용하고자 한다. 따
라서 웹 Admin과 메일사용자인 4명을 합하면 5명의 사용자가 된다. 그리고 사장과 3명의
사원은 http://www.sonamu.co.kr/~namu 와 같은 홈페이지를 각자 가지고 싶어 한다.- 주) 필자는
웹호스팅업체에 몸담고 있지 않기 때문에 많은 도메인을 실제로 관리 해본 경험은 없다
. 다만 고민끝에 2대의 PC(리눅스, 윈98)를 다른 PC들과 함께 HUB로 연결하여 내부IP(C클래
스)를 사용하였으며 각각의 여러개의 도메인에 대해서 실제로 내부IP 1개로 사용하여
네임서버 및 www, mail, ftp, telnet 테스트하는데 성공 했을 뿐이다.- 세부사항(*이 글을 이해
하는데 필수)======================+==============+================================ 호스트+도메인
IP 계정 (Admin E-mail) ======================+==============+======================
==========(주도메인)linux.ac.kr 192.168.10.3 root (webmaster at linux.ac.kr) ns.linux.ac.kr 192.1
68.10.3 root (webmaster at linux.ac.kr) www.linux.ac.kr 192.168.10.3 root (webmaster at linux.ac.kr)
ftp.linux.ac.kr 192.168.10.3 root (ftp at linux.ac.kr) study.linux.ac.kr 192.168.10.4 root (st
udy at linuxer.ac.kr)study-app.linux.ac.kr 192.168.10.4 root (study-app at linuxer.ac.kr) study-net.linun.ac.kr
192.168.10.4 root (study-net at linuxer.ac.kr) game.linux.ac.kr 192.168.10.5 game (gamedori@hanmai
l.net)======================+==============+================================(고객) linuxer.com 192.168.10.5
com (webmaster at linuxer.com) ns.linuxer.com 192.168.10.5 com (webmaster at linuxer.com) w
ww.linuxer.com 192.168.10.5 com (webmaster at linuxer.com) ftp.linuxer.com 192.168.10.5 com (
ftp at linuxer.com) stock.linuxer.com 192.168.10.5 com (stock at linuxer.com)===============
=======+==============+================================(고객) linuxer.net 192.168.10.5 net (webmaster@
linuxer.net) ns.linuxer.net 192.168.10.5 net (webmaster at linuxer.net)
www.linuxer.com 192.168.10.5 net (webmaster at linuxer.net) ftp.linuxer.com 192.168.10.5 net
(ftp at linuxer.net) meeting.linuxer.com 192.168.10.5 meet (meeting at linuxer.net)========
==============+==============+================================(고객)www.sonamu.co.kr 192.168.10.5 sonamu (admin@s
onamu.co.kr) (일반계정) namu (namu at sonamu.co.kr) (일반계
정) kim (kim at sonamu.co.kr) (일반계정) park (p
akr at sonamu.co.kr) (일반계정) lee (lee at sonamu.co.kr) ================
======+==============+================================ 먼저 계정을 발급해 주자.linux.ac.kr 도메인은 시
스템 관리자인 root 가 관리하므로 별도로 계정을만들지 않고 일반유저인 'san2' 가 관리한다
는 가정이다.# adduser san2# passwd san2password *******# adduser com# passwd compassword *******# adduser net# pass
wd netpassword *******# adduser meet# passwd meetpassword *******# adduser sonamu# passwd sonamupassword *******# adduse
r namu# passwd namupassword *******# adduser kim# passwd kimpassword *******# adduser park# passwd parkpassword *******#
adduser lee# passwd leepassword *******2. DNS(도메인 네임서비스) 설정가상웹호스팅을 원하고자 하
는 이는 무엇보다 도메인네임서버를 잘 설정해야한다. 네임서버를 어떻게 잘 설정하느냐
못하느냐에 따라서 웹호스팅가능유무가 결정된다.또한 IP가 부족하여 1개의 IP로 여러개의
도메인을 한대의 리눅스박스에운영하는 것도 역시 만찬가지이다.다음에 보여주는 네임서
버 설정의 예는 어디까지나 필자의 예이다. 즉 얼마든지 같은 결과로 다른 예가 있기 마련
이므로 네임서버 설정에 대한 문서를 꼭 읽어보기 바란다. 여기에서는 첫머리에 말했듯이
개념이나 정의를설명하지는 않는다. 다만 위의 목표에 부합되기 위해서 네임서버를설정할
뿐이다.(필자은 네임서버 전문가가 아님)2-1. Bind 설치하기네임서버를 구축(또는 설정)하려
면 Bind 설치는 필수적이다.Bind와 caching-nameserver는 꼭 설치해야 한다.우선 자신의 리눅스
박스에 설치(rpm)되어 있는지 확인하자.[san2@www san2]$ rpm -qa | grep bindbind-8.2-6bind-utils-8.2-6[san2@w
ww san2]$[san2@www san2]$ rpm -qa | grep namecaching-nameserver-6.0-2[san2@www san2]$필자의 리눅스박스에는 bin
d-8.2 와 caching-nameserver-6.0이 설치되어 있다. 설치되어 있지 않다면 다음과 같이 CD-ROM이나 FTP
싸이트에서 다운로드하여 설치하기 바란다.예: CD-ROM으로 설치하기[san2@www san2]$ suPassword:***
*****[root@www san2]# mount /mnt/cdrom[root@www san2]# cd /mnt/cdrom/RedHat/RPMS[root@www RPMS]# rpm -Uvh bind*bind
##############################bind-devel ##########
####################bind-utils ##############################[root@www RPMS]# rpm -Uvh c
aching-nameserver*caching-nameserver ##############################[root@www RPMS]#이제 네임서
버를 구축하기 위한 밑바탕은 되어있다. 다음단계에는 직접'나의 목표'에 부합되게 네임
서버를 구축(이하 '설정')해 보자.2-2. 나의 목표에 맞게 DNS 설정위의 2-1과정을 무사히 끝냈
다면[root@www /etc]# ls -l named*-rw-r--r-- 1 root root 407 Sep 13 08:24 named.boot-rw-r--r--
1 root root 1508 Sep 13 08:26 named.conf[root@www /etc]# cd /var/named[root@www named]# ls -ltotal 8
-rw-r--r-- 1 root root 2769 Mar 22 04:49 named.ca-rw-r--r-- 1 root root 422
Mar 22 04:49 named.local[root@www named]#위의 파일들이 존재할 것이다.이제 본격적으로 네임서버를
1-2에서 말한 목표대로 설정해 보자.참고로 필자의 리눅스박스에는 현재 다음과 같이 IP-Alia
sing 되어 있다.[san2@www san2]$ /sbin/ifconfigeth0 Link encap:Ethernet HWaddr 00:10:4B:18:17:77
inet addr:192.168.10.3 Bcast:192.168.10.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MT
U:1500 Metric:1 RX packets:1297308 errors:6 dropped:0 overruns:0 frame:7 TX packets:9037 e
rrors:0 dropped:0 overruns:0 carrier:0 collisions:404 txqueuelen:100 Interrupt:9 Base addres
s:0xe800eth0:0 Link encap:Ethernet HWaddr 00:10:4B:18:17:77 inet addr:192.168.10.4 Bcast:192.168.
10.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 Interrupt:9
Base address:0xe800eth0:1 Link encap:Ethernet HWaddr 00:10:4B:18:17:77 inet addr:192.168.10.5 Bc
ast:192.168.10.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
Interrupt:9 Base address:0xe800eth1 Link encap:Ethernet HWaddr 00:A0:C9:0C:89:A5 inet addr:210.
123.59.66 Bcast:210.123.59.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:1121139 errors:0 dropped:0 overruns:0 frame:9 TX packets:35404 errors:1 dropped:
0 overruns:0 carrier:2 collisions:732 txqueuelen:100 Interrupt:3 Base address:0x210eth1:0
Link encap:Ethernet HWaddr 00:A0:C9:0C:89:A5 inet addr:210.123.59.72 Bcast:210.123.59.255 Mask:25
5.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 Interrupt:3 Base address:0x
210lo Link encap:Local Loopback inet addr:127..1 Mask:255..0 UP LOOPBACK
RUNNING MTU:3924 Metric:1 RX packets:1294 errors:0 dropped:0 overruns:0 frame:0 TX packe
ts:1294 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0[san2@www san2]$[san2@www san2]$
cat /etc/sysconfig/networkNETWORKING=yesFORWARD_IPV4=noHOSTNAME=www.linux.ac.krDOMAINNAME=linux.ac.krGATEWAY=210.123.59.
1 #<----실제 존재하는 GW (본 내용과 상관없음)GATEWAYDEV=eth1 #<----실제 인터넷을
사용하기 위해서 2번째#이더넷 (본 내용과 상관없음)[san2@www san2]$ cat /etc/sysconfig/network-scripts
/ifcfg-eth0DEVICE=eth0IPADDR=192.168.10.3NETMASK=255.255.255.0NETWORK=192.168.10.0BROADCAST=192.168.10.255ONBOOT=yesBOOT
PROTO=none[san2@www san2]$ cat /etc/sysconfig/network-scripts/ifcfg-eth0:0DEVICE=eth0:0USERCTL=noONBOOT=yesBOOTPROTO=non
eBROADCAST=192.168.10.255NETWORK=192.168.10.0NETMASK=255.255.255.0IPADDR=192.168.10.4[san2@www san2]$ cat /etc/sysconfig
/network-scripts/ifcfg-eth0:1DEVICE=eth0:1USERCTL=noONBOOT=yesBOOTPROTO=noneBROADCAST=192.168.10.255NETWORK=192.168.10.0
NETMASK=255.255.255.0IPADDR=192.168.10.5[san2@www san2]$필자의 bind 버전은 8.x대이다. 따라서 named.boot파
일은 손댈필요는없지만 학습의 목적상 named.boot 파일도 포함한다.또한 2차 네임서버 설정은
생략한다.2-2-1. /etc/named.boot (bind 4.x)----------/etc/named.boot --------------------------------;; a caching on
ly nameserver config;; 내부 IP사용의 예directory /var/namedca
che . named.caprimary .127.in-addr.arpa
named.localprimary 10.168.192.in-addr.arpa zone-10.168.192primary linux.ac.kr
zone-linux.ac.krprimary linuxer.com zone-linuxer.comprimary
linuxer.net zone-linuxer.netprimary sonamu.co.kr
zone-sonamu.co.kr---------end ---------------------------------------------2-2-2. /etc/named.conf (bind 8.x)----------
/etc/named.conf ---------------------------------// generated by named-bootconf.ploptions { directory "/var/named"; /*
* If there is a firewall between you and nameservers you want * to talk to, you might need to uncomment the query-s
ource * directive below. Previous versions of BIND always asked * questions using port 53, but BIND 8.1 uses an un
privileged * port by default. */ // query-source address * port 53;};//// a caching only nameserver config//zone ".
" { type hint; file "named.ca";};zone ".127.in-addr.arpa" { type master;
file "named.local";};zone "10.168.192.in-addr.arpa" { type master; file "zone-10.168.192";};zo
ne "linux.ac.kr" { type master; file "zone-linux.ac.kr";};zone "linuxer.com" { type mas
ter; file "zone-linuxer.com";};zone "linuxer.net" { type master; file "zone-linuxer.net
";};zone "sonamu.co.kr" { type master; file "zone-sonamu.co.kr";};---------end -------------------
---------------------------2-2-3. /var/named/named.ca--------/var/named/named.ca-------------------------------
생략 (★ 편집할 필요없음)---------end ----------------------------------------------2-2-4. /var/named/named
.local★ 편집할 필요없음------/var/named/named.local ------------------------------@ IN SOA
localhost. root.localhost. ( 1997022700 ; Serial
28800 ; Refresh
14400 ; Retry 3600000 ;
Expire 86400 ) ; Minimum IN NS
localhost.1 IN PTR localhost.---------end --------------------------------------------
--2-2-5. /var/named/zone-10.168.192------/var/named/zone-10.168.192 --------------------------@ IN SOA
ns.linux.ac.kr. admin.linux.ac.kr. ( 1997022700 ; Seria
l 28800 ; Refresh
14400 ; Retry 3600000
; Expire 86400 ) ; Minimum IN
NS ns.linux.ac.kr.3 IN PTR linux.ac.kr.4 IN PTR study.linux.ac.kr.5
IN PTR game.linux.ac.kr.5 IN PTR linuxer.com.5 IN PTR li
nuxer.net.5 IN PTR sonamu.co.kr. ;<---끝에 점(Dot) 필수---------end ---------------------
-------------------------2-2-6. /var/named/zone-linux.ac.kr-------/var/named/zone-linux.ac.kr --------------------------
@ IN SOA ns.linux.ac.kr. admin.linux.ac.kr. (
1997022700 ; Serial 28800 ; Refresh
14400 ; Retry
3600000 ; Expire 86400 ) ; Mi
nimum IN NS ns.linux.ac.kr. IN A 192.168.10.3
IN HINFO "x86 Pentium" "Alzza Linux 6.0" IN MX linux.ac.kr.localhost
IN A 127..1study IN A 192.168.10.4game IN A 192.
168.10.5ns IN CNAME @www IN CNAME @ftp IN CNAME @study-
app IN CNAME studystudy-net IN CNAME study---------end -----------------------------------------
-----2-2-7. /var/named/zone-linuxer.com----- /var/named/zone-linuxer.com -------------------------@ IN
SOA ns.linuxer.com. admin.linuxer.com. ( 1997022700 ; Se
rial 28800 ; Refresh
14400 ; Retry 3600000
; Expire 86400 ) ; Minimum IN
NS ns.linuxer.com. IN A 192.168.10.5 IN HINFO "x86 Pentiu
m" "Alzza Linux 6.0" IN MX linuxer.com.;ns IN A 192.168.10.5;www
IN A 192.168.10.5;stock IN A 192.168.10.5;ftp IN A 192.168.10.5ns
IN CNAME @www IN CNAME @ftp IN CNAME @stock IN CNAME @---------
end -----------------------------------------2-2-8. /var/named/zone-linuxer.net------/var/named/zone-linuxer.net -------
--------------------@ IN SOA ns.linuxer.net. admin.linuxer.net. (
1997022700 ; Serial 28800
; Refresh 14400 ; Retry
3600000 ; Expire 864
00 ) ; Minimum IN NS ns.linuxer.net. IN A 192.168.10
.5 IN HINFO "x86 Pentium" "Alzza Linux 6.0" IN MX linuxer.net.ns
IN CNAME @www IN CNAME @ftp IN CNAME @meeting IN CNAME @----
-----end -------------------------------------------2-2-9. /var/named/zone-sonamu.co.kr------/var/named/zone-sonamu.co.k
r ------------------------@ IN SOA ns.sonamu.co.kr. admin.sonamu.co.kr. (
1997022700 ; Serial 28800
; Refresh 14400 ; Retry
3600000 ; Expire
86400 ) ; Minimum IN NS ns.sonamu.co.kr. IN A
192.168.10.5 IN HINFO "x86 Pentium" "Alzza Linux 6.0" IN MX sonamu.co.kr.w
ww IN CNAME @---------end -----------------------------------------------이상으로 1개의 IP에 4개의
도메인을 설정되었다.설정(편집)이 끝났으면 네임서버를 재가동한다.[root@www san2]# /etc/rc.d/i
nit.d/named restart3. 가상 웹서버 (아파치 1.3.9 경우)아파치 서버는 가상웹서버를 지원한다. 보
통 가상 웹호스트는 크게- IP-based Virtual Hosts- Name-based Virtual Hosts로 볼 수 있다.본 내용에서
는 둘다 포함하고 있다.3-1. 아파치설치(생략)웹상이나 자신이 사용하는 배포본의 FTP에서
최신의 버전을 받아와서RPM으로 설치하든지 소스를 직접 컴파일하여 설치하든지 이건 여러
분의선택이다.아파치 설치는 RPM으로 설치했다는 가정하에 /etc/httpd/conf/httpd.conf파일이 아파
치의 설정파일이다.3-2. 아파치 설정파일(httpd.conf)드디어 가상 웹 호스팅을 위한 작업이다.
RPM으로 설치했을 경우는/etc/httpd/conf/httpd.conf 파일을 편집기로 열어 다음과 같이 여러분의
환경에 맞추어 편집한다.* 설정파일에 가상웹서버에 대한 많은 정보가 들어 가므로 가급적
필요없는내용은 전부 주석처리해 준다.------/etc/httpd/conf/httpd.conf -----------------------------# 중
략ServerType standaloneServerRoot "/etc/httpd"# 중략#ResourceConfig conf/srm.conf#AccessConfig conf/access.conf# 중
략BindAddress *# 중략ServerAdmin webmaster at linux.ac.krServerName www.linux.ac.kr# IP는 192.168.10.3 이다.DocumentR
oot "/home/httpd/html"# 중략UserDir Public_html# 중략HostnameLookups Off# off 로 해 놓은게 조금 빠르다.#
중략ErrorLog logs/error_log# 중략CustomLog logs/access_log common# 중략ServerSignature Email# 선택은 여러분
의 자유이다.# 중략##########[가상 웹 호스트 설정 부분]#####################NameVirtualHost 192.168.10.4
<VirtualHost 192.168.10.4> ServerName study.linux.ac.kr ServerAdmin study at linux.ac.kr DocumentRoot /home/linux.
ac.kr/study ErrorLog logs/study.linux.ac.kr-error_log CustomLog logs/study.linux.ac.kr-access_log common</VirtualH
ost><VirtualHost 192.168.10.4> ServerName study-app.linux.ac.kr ServerAdmin study-app at linux.ac.kr DocumentRoot
/home/linux.ac.kr/study-app ErrorLog logs/study-app.linux.ac.kr-error_log CustomLog logs/study-app.linux.ac.kr-acc
ess_log common</VirtualHost><VirtualHost 192.168.10.4> ServerName study-net.linux.ac.kr ServerAdmin study-net@linu
x.ac.kr DocumentRoot /home/linux.ac.kr/study-net ErrorLog logs/study-net.linux.ac.kr-error_log CustomLog logs/s
tudy-net.linux.ac.kr-access_log common</VirtualHost># NameVirtualHost IP는 어느 곳에 위치하여도 결과는 똑
같다.# 즉 여기에서 부연 설명하자면# 192.168.105 를 사용하는 호스트에 대해서는 game.linux.ac.k
r# 호스트가 그 선취권을 가지고 있다. 예를 들어 네임서버에# ns.linuxer.com이 등록되어 있지
만 가상호스트 설정부분에서# ns.linuxer.com 을 정의해 주지 않으면 ns.linuxer.com으로 접속하면#
game.linux.ac.kr 의 Document를 보여준다.# 꼭 네임서버에 정의한 모든 호스트에 대해서 가상호
스트에 정의해# 주어야 어색함이 없다.# 이때 사용하는 것이 ServerAlias 지시자이다. 아래의
내용을 좀더# 살펴보자.NameVirtualHost 192.168.10.5<VirtualHost 192.168.10.5> ServerName game.linux.ac.kr# 19
2.168.10.5 의 IP를 사용하는 모든 호스트의 기본이 되는 호스트이다. ServerAdmin game at linux.ac.kr
DocumentRoot /home/linux.ac.kr/game ErrorLog logs/game.linux.ac.kr-error_log CustomLog logs/game.linux.ac.kr-a
ccess_log common</VirtualHost><VirtualHost 192.168.10.5> ServerName stock.linuxer.com ServerAdmin stock at linuxer.co
m# admin은 com 계정으로 메일을 받는다. DocumentRoot /home/com/wwwhome_stock ScriptAlias /cgi-bin/ "/hom
e/comwwwhome_stock/cig-bin/"# 특히 심볼릭링크하여 홈을 운영한다면 ScriptAlias 정의는 꼭 해주어야
# 한다. ErrorLog logs/stock.linuxer.com-error_log CustomLog logs/stock.linuxer.com-access_log common</VirtualHos
t><VirtualHost 192.168.10.5> ServerName www.linuxer.com ServerAdmin webmaster at linuxer.com# admin은 com 계정으
로 메일을 받는다. ServerAlias *.linuxer.com www.linuxer.com# 중요 ################################### Server
Alias 에 대해서 부연설명하면# ServerName linuxer.com# ServerAlias *.linuxer.com linuxer.com# 으로 해도 결
과는 위와 똑같다.# 왼쪽에는 Alias 할 가짜이름이고 오른쪽에는 ServerName 으로 설정한# 호스
트를 적어준다.# 예를 들어# ServerName linuer.com# ServerAlias www.linuxer.com linuxer.com# 으로만 정의해
두면 문제가 있다.# 바로 위에 stcok.linuxer.com 이 먼저 정의 되어 있기# 때문에 stock.linuxer.com
의 접속결과는 올바르게 보여주지만# 네임서버에 CNAME으로 설정되어 있는# ftp.linuxer.com ns.li
nuxer.com 에 대해서 접속하면 모두# game.linux.ac.kr 의 문서를 보여준다.# 따라서 stock호스트를
제외하고 네임서버에 정의되어 있는 모든# 호스트(ns. ftp)에 대해서 www.linuxer.com 으로 보여
줄려면 위와# 같이 ServerAlias를 해 주어야 한다.# 또한 *(All)때신 다음과 같이 2줄의 ServerAlias
로 정의해 주어도 된다.# 단 이같은 경우 자원을 많이 차지하므로 별로 좋지 않은 방법이다
.# ServerAlias ftp.linuxer.com www.linuxer.com# ServerAlias ns.linuxer.com www.linuxer.com DocumentRoot /home/linuxer
com/wwwhome# DocumentRoot ~linuxercom/wwwhome# 위와 같이 ~(틸트)로 경로를 지정하면 웹서버는 찾질 못
한다.# 꼭 절대경로로 정의. ErrorLog logs/www.linuxer.com-error_log CustomLog logs/www.linuxer.com-access
_log common</VirtualHost><VirtualHost 192.168.10.5> ServerName meeting.linuxer.net ServerAdmin meeting at linuxer.net
# admin은 meet 계정으로 메일을 받는다. DocumentRoot /home/meet/wwwhome ErrorLog logs/meeting.linuxer.ne
t-error_log CustomLog logs/meeting.linuxer.net-access_log common</VirtualHost><VirtualHost 192.168.10.5> ServerNam
e linuxer.net ServerAdmin webmaster at linuxer.net ServerAlias *.linuxer.net linuxer.net# admin은 net 계정으로
메일을 받는다. DocumentRoot /home/net/wwwhome ErrorLog logs/www.linuxer.net-error_log CustomLog logs/www.
linuxer.net-access_log common</VirtualHost><VirtualHost 192.168.10.5> ServerName www.sonamu.co.kr ServerAdmin admi
n at sonamu.co.kr# admin은 sonamu 계정으로 메일을 받는다.# 여기에서는 ServerAlias를 할 필요가 없다
왜냐하면 네임서버에 오직# www.sonamu.co.kr 만 정의해 놓았기 때문이다.# 위의 zone-sonamu.co.kr
의 파일을 확인해 보시라. DocumentRoot /home/sonamu/wwwhome UserDir Pubic_home# 다른 도메인과 다
르게 UserDir 을 정의한다.# 주 도메인(linux.ac.kr)의 UserDir 이 Public_html 이므로# 주 도메인과 다
른 도메인과 혼합되지 않게 위해서는 완전히 다른# 디렉토리를 위와 같이 정의해 준다.# 가
상호스트에 대한 UserDir을 지정해 주지 않으면# 주 도메인(linux.ac.kr)에 대한 유저인 "Public_htm
l" 로 인식하려# 하기 때문에 Document 를 보여줄 수 없다.# 또한 Public_html 이란 디렉토리가 있
다면 www.linux.ac.kr/~namu# 와 www.sonam.co.kr/~namu 는 같은 문서를 보여준다.# 때문에 고객이 개인
홈페이지를 갖고 싶어 할 경우에는# UserDir을 다르게 정의 해 주어야 한다. ErrorLog logs/www.s
onamu.co.kr-error_log CustomLog logs/www.sonamu.co.kr-access_log common</VirtualHost>#NameVirtualHost 192.168.10.5#
위와 같이 맨 나중에 NameVirtualHost를 정의해 주어도 된다.# 앞서 얘기 했지만 192.168.10.5 를
사용하는 모든 호스트에 대해서는# 맨앞에 가상호스트로 지정한 호스트가 그 선취점을 가
지고 있다.# 여기에서는 game.linux.ac.kr 의 호스트가 이에 해당된다.---------end ---------------------
------------------------이로써 가상웹서버 설정이 모두 끝났다.이제 남은 것은 DocumentRoot 가 될
디렉토리를 설정하는 것만남아 있다.# mkdir /home/linux.ac.kr# mkdir /home/linux.ac.kr/study# mkdir /home/l
inux.ac.kr/study-app# mkdir /home/linux.ac.kr/study-net# mkdir /home/linux.ac.kr/game# chmod 705 -R /home/linuxa.c.kr# s
u com$ mkdir ~com/wwwhome$ chmod -R 705 ~com$ su netpassword *******$ mkdir ~net/wwwhome$ chmod -R 705 ~net$ su meetpass
word *******$ mkdir ~meet/wwwhome$ chmod -R 705 ~meet$ su sonamupassword *******$ mkdir ~sonamu/wwwhome$ chmod -R 705 ~s
onamu$ su namupassword *******$ mkdir ~net/Public_home$ chmod -R 705 ~namu$ su kimpassword *******$ mkdir ~kim/Public_ho
me$ chmod -R 705 ~kim$ su parkpassword *******$ mkdir ~park/Public_home$ chmod -R 705 ~park$ su leepassword *******$ mkd
ir ~lee/Public_home$ chmod -R 705 ~lee$</PRE>