달력

42024  이전 다음

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30

***********************
아파치 가상호스트 설정하기
작성자 : 유희성
***********************


가상호스트란 하나의 IP 상에 여러개의 가짜 도메인을 구성하는 것이다.
이것은 아파치의 VirtualHost 라는 기능을 이용하는것인데 상당히 유용하다
도메인을 신청하면 www.yadong.com 이라는 형식으로 나오게 되는데
우리가 임의대로 2차도메인을 지정하고 그 이름이 들어왔을때 네임서버에서 일단
1차 도메인 쪽으로 연결을 시켜줍니다. 그리고 이것을 다시 아파치에서 받아들입니다.
이때 아파치에 설정되어있는 VirtualHost 부분에 설정되어있는 곳의 public_html
디렉토리를 연결시켜 주게 됩니다. 이런 방식으로 동작을 하기 때문에 각각의 사용자마다
2차 도메인을 가질수 있게 됩니다.

먼저 가상호스트를 만들기 위해 준비를 합니다.
네임서버가 잘 작동을 하는지 먼저 테스트 합니다.

nslookup 자기호스트.com 이라고 쳐서 잘 나오는지 확인합니다

잘 나왔다면 이제 네임서버 설정을 아주 약간만 고쳐줍니다. 먼저 /var/named/*.zone 파일을 고쳐줍니다.

vi /var/named/*.zone <--- 여러분은 yadong.com 이니까 yadong 을 써주면 되겠군요.

그럼 제일 아랫줄에 다음 라인을 추가 합니다.

first IN CNAME 211.108.242.host

위의 라인은 first.yadong.com 이라는 주소를 치고 들어왔을때 CNAME 클래스(CANONICAL NAME)를 이용하여
연결된 2차 도메인을 1차 도메인쪽으로 연결시켜 주는 부분입니다.
물론 A 클래스로 이용하여도 동작은 잘 됩니다.

이제 네임서버데몬 스크립트를 다시 restart 시킵니다.

/etc/rc.d/init.d/named restart

nslookup first.yadong.com 이라고 쳐서 cname 어짜고 저짜고 떴으면 된것입니다.
만약 안뜬다면 1차 네임서버 설정에 문제가 있을수도 있겠군요.

여기까지 잘 되었다면 이제 아파치를 설정합니다.

cd /usr/local/apache/conf
vi httpd.conf

이렇게 아파치 설정파일을 열고 줄 번호를 넣고 봅니다. set nu 하시면 됩니다.

#NameVirtualHost * <=== 약 970번 줄 근처에 있습니다.

이 부분의 주석을 풀어주고 뒤의 별표(*) 부분을 삭제한 후 자신의 아이피를 넣어줍니다.

그리고 아랫쪽에 보시면 VirtualHost 의 사용법에 대한 sample 이 있을것입니다.
이부분을 고치시는게 아니고 이걸 보고 아랫쪽에 새로 입력하여 작성합니다.

#<VirtualHost *>
# ServerAdmin webmaster@dummy-host.example.com
# DocumentRoot /www/docs/dummy-host.example.com
# ServerName dummy-host.example.com
# ErrorLog logs/dummy-host.example.com-error_log
# CustomLog logs/dummy-host.example.com-access_log common
#</VirtualHost>

위와 같은 형식의 문장이 있습니다.
<VirtualHost *> <=== 가상호스트의 시작을 알리는 태그.
뒤의 별표는 삭제하고 자신의 호스트 주소를 적어줍니다.
211.108.242.host
ServerAdmin <=== 가상호스트 운영자의 메일주소가 들어갑니다.
DocumentRoot <=== HTML 문서나 PHP 문서가 위치하게될 디렉토리를 지정합니다.
ServerName <=== 자신의 가상호스트 이름을 적어줍니다.
ErrorLog <=== 호스트를 운영하게 되면 각종 Log 파일들이 쌓이게 되는데
가상 호스트 마다 log 를 지정해 주지 않으면 apache 기본 log 파일에
쌓이게 됩니다. 그럼 나중에 log 분석하기도 힘들게 될뿐더러 관리도
힘들어 지게 됩니다. 이곳에 Log 파일의 경로와 사용할 log 파일의
이름을 적어줍니다.
여기는 error log 에 관련된 거겠지요?? 거기에 걸맞는 이름을 적어줍시다.
CustomLog <=== 이곳은 위와 동일합니다. 성공적으로 아파치에 접속이 되었을 경우에
나타나는 로그들이 이곳에 저장됩니다. 경로와 파일을 적어줍시다.
</VirtualHost> <=== 가상호스트의 종료부분 태그.

위의 문장대로 제일 아랫줄에 가상 호스트 부분을 추가해 줍니다.

<VirtualHost 211.108.242.30>
ServerName www.kcr.pe.kr
</VirtualHost>
<VirtualHost 211.108.242.30>
ServerAdmin tornado@kcr.pe.kr
ServerName tornado.kcr.pe.kr
DocumentRoot /home/tornado/public_tornado/
UserDir /home/tornado/public_tornado/
CustomLog logs/apache.tornado.com-access_log common
ErrorLog logs/apache.tornado.com_error_log
</VirtualHost>

위 예제는 학원의 30번 PC 에서 현재 잘 가동이 되고 있는 서버의 상태입니다.
처음 가상호스트 부분을 보시면 위쪽에 설명 되어있는 부분과 상이한 부분이 있습니다.
이곳은 root 사용자의 홈페이지를 가상호스트로 정해준 부분입니다.
그러니까 www.kcr.com 이라고 치고 들어왔을때 보여주는 경로인 셈입니다.
로그 파일은 기본 로그파일을 사용하기 때문에 별도의 로그파일은 지정해 주지 않았습니다.

가상 호스트 부분에서는 public_html 이라는 디렉토리를 사용하지 않습니다.
public_2차도메인이름 이라는 형식을 사용합니다.
왜냐하면 각각의 디렉토리마다 public_html 을 사용하게 되면 이름도 헷갈릴뿐더러
작동하는데 문제가 생길수 있습니다.
aaa.yadong.com 을 치고 들어갔는데
bbb.yadong.com 의 public_html 디렉토리의 문서를 보여줄 상황도 발생 할 수 있기 때문입니다.


<VirtualHost 211.108.242.30>
ServerAdmin tornado@kcr.pe.kr
ServerName tornado.kcr.pe.kr
DocumentRoot /home/tornado/public_tornado/
UserDir /home/tornado/public_tornado/
CustomLog logs/apache.tornado.com-access_log common
ErrorLog logs/apache.tornado.com_error_log
</VirtualHost>

위의 부분이 정말 가상호스트 부분입니다.

ServerName 부분을 보시면 tornado.kcr.pe.kr 이라고 되어있습니다.
여기서 tornado 라는 2차 도메인은 네임서버의 *.zone 파일에 CNAME 클래스로 지정되어있습니다.

여러분이 웹브라우져에서 tornado.kcr.pe.kr 이라고 치고 들어오셨을때 네임서버에서
일단 CNAME 으로 걸러줍니다. 그리고 다시 아파치의 가상 호스트 부분으로 들어가게 됩니다.
이때 VirtualHost 부분에 해당 호스트의 설정이 작성되어있다면 작성된 설정의
DocumentRoot 부분의 디렉토리로 이동하여 해당 문서(index.html 등등)를 보여주게 됩니다.

여기까지 하셨다면 apache데몬을 다시 시작합니다.

/usr/local/apache/bin/apachectl stop
/usr/local/apache/bin/apachectl start

이때 에러가 없어야 합니다.
이제 각 디렉토리들을 작성해 주셔야 합니다.
user를 등록합니다.


useradd tornado
passwd tornado
적당한 패스워드 입력

이제 home 디렉토리로 이동합니다.

cd /home
cd tornado
mkdir public_tornado
cd public_tornado

vi index.html
여기는 tornado 의 메인 페이지 입니다.

저장하고 종료

chmod 755 -r ~tornado

위와 동일한 방법으로 각각의 가상호스트 마다 설정을 하여 줍니다.

웹브라우져를 실행한 후에 지정한 2차 도메인으로 접속하여 봅니다.
문서가 제대로 보인다면 제대로 성공하신 것입니다.


*******************************
아파치 가상호스트 2
작성자 : 유희성
*******************************

우리는 지난 시간에 2차 도메인을 이용한 가상 호스트 설정을 하였습니다.
이번에 할 것은 같은 아이피에 1차 도메인을 두개 이상 연결시켜서 가상 호스트를 잡아주는 방법입니다.

작동 방식은 먼저 시간에 설명드린 것과 거의 비슷합니다.
그러나 네임서버 설정이 약간 다릅니다.
먼저 시간에 했던 방식은 aaa.yadong.com 으로 들어왔을때 yadong.com 으로 연결시켜주고
아파치 가상 호스트부분에서 치고 들어온 도메인으로 연결시켜주는 방법이였습니다.

이번에 설정은 named.conf 에 새로운 zone 영역을 등록시키고 /var/named 디렉토리에
새로운 zone 영역 파일을 만들어주는 방식입니다.
이때 reverse 영역은 새로 작성하지 않습니다. 어차피 한 IP를 가지고 사용하는 것이기 때문에
새로 작성한다는 것은 의미가 없습니다.

지금 하는것과 같이 같은 아이피에 등록시켜줘도 전혀 문제는 없습니다.
만약 한대의 피시에 여러개의 랜카드가 꼽혀 있고 각각의 아이피가 부여되어있는 상태라면
각각의 아이피 마다 도메인을 부여하여 아파치 설정을 통해 가상호스트 운영을 할수 있습니다.
또 하나의 랜카드에 가상 IP 를 부여하여(Aliase) 가짜 호스트를 마치 진짜 처럼 운영할수도 있습니다.

그럼 설정파일부터 보겠습니다.

vi /etc/named.conf 파일을 열어서
zone 영역을 하나 더 만들어줍니다.

zone "aaa.com" IN {
type master;
file "aaa.zone";
};

위와 같이 추가하시고 저장후 빠져나옵니다.

위의 설정에서 파일을 지정했기 때문에 /var/named 디렉토리에 해당 파일을 만들어 주어야 합니다.
파일은 기존의 설정을 복사하여 사용합니다.

cd /var/named
cp yadong.zone aaa.zone
vi aaa.zone

$TTL 86400
@ IN SOA ns.aaa.com. root.aaa.com. (
42 ; serial (d. adams)
3H ; refresh
15M ; retry
1W ; expiry
1D ) ; minimum
IN NS ns.aaa.com.
IN MX 10 mail.aaa.com.
IN A 211.108.242.30
ns IN A 211.108.242.30
www IN A 211.108.242.30


위와 같은 설정이 되겠군요. 저장하고 빠져나옵니다.

네임서버를 다시 가동합니다.
/etc/rc.d/init.d/named restart

nslookup aaa.com 이라고 치셔서 응답이 제대로 나와야 합니다.
안나온다면 다시 설정을 천천히 살펴봅니다.

위와 같이 설정한 후에 아파치 virtualHost 부분은 기존 VirtualHost 설정 부분처럼 합니다.
다 하셨으면 apache데몬을 다시 시작하시고 브라우져에서 각각의 주소를 쳐봅니다.
그래서 각각의 호스트 디렉토리에 있는 파일내용이 보이면 성공입니다.


------------------------

예전에 학원에서 배운 내용인데.. 이제야 자료를 찾았습니다 ^^;

근데 예로 든 주소가 다 왜 이 모양인지 ;;

Posted by tornado
|