아파치 에서 가상 호스팅 운영하기

운영자 | 기사입력 2005/02/21 [09:06]
>
필자의 다른기사 보기 인쇄하기 메일로 보내기 글자 크게 글자 작게
아파치 에서 가상 호스팅 운영하기
 
운영자   기사입력  2005/02/21 [09:06]

아파치 에서 가상 호스팅 운영하기

(작성이 2001.11.1 질문 .오류는 메일 [email protected] 로 )
가상 호스팅이 무엇인지 이해 할 수 있다.
아피치를 설치 설정 실행을 할 수 있다.
유저의 홈페이지를 만들 수 있다.
네임기반의 가상호스팅을 설정을 할 수 있다.
 vhost를 무듈을 포함하여 컴파일을 할 수 있다.
vhost 의 %0의 의미를 이해하고 설정할 수 있다.

 
가상 호스팅은 한대의 서버에 여려개의 도메인을 세팅을 하여
가상 적으로 여려대의 서버 처럼 만드는 것이다.
 
ip 의 자원이 많이 없는 상태이기 때문에 한대의 서버에  여려개의 도메인을
세팅을 하는 것은 지금도 많이 사용하고 있지만 점 점더 많이 사용 될 것으로
보인다.
 
지금 부터 할 내용은 아피치에 있는 가상 호스팅에 대한 내용이며(다른 웹서버에서도
가상 호스팅을 지원을 한다) 가상호스팅은 DNS 에 설정이 되어 있어야 작동을 하기
때문에  DNS 세팅은 되어 있다고 보고 설명을 하겠다.
(dns 설정이 안되 있으면 임시적으로  /etc/hosts에
아래와 같이 추가를 한다음 해도 된다.
192.168.0.1        sansung.net
192.168.0.1       www.sansung.net
192.168.0.1        iwav.co.kr
192.168.0.1       www.iwav.co.kr
192.168.0.1        mwav.net
192.168.0.1       www.mwav.net

 
여기서 설정은 아래의 세 개의 도메인을 예제로 설명을 하겠다.    
 
sansung.net
iwav.co.kr
mwav.net

 
이 네개의 도메인을 가지고 진행을 하겠다.
 
우선  메인 DNS 도메인은   sasung.net
 
가상 호스팅의 종류
--> ip 기반의 가상 호스팅
한대의 서버의 여려개의 ip을 설정하고 이것으로 가상 호스팅을 설정하는 것으로
많이 사용이 안되기 때문에 이곳에서는 다루지 않겠다.
 
--> 네임 기반의 가상 호스팅
 
네임서버에서 여려개의 도메인을 설정을 하고 아파치에서 네임 기반의 가상호스팅을 사용하는
 것으로 보편적으로 가상 많이 사용 한다.
 
 --> 아파치 모듈   mod_vhost_alias  를 이용한 가상 호스팅
 아파치 1.3.7 이후 버전에 사용이 가능것으로 네임 기반의 가상 호스팅 보다 쉽게 가상호스팅을
 운영 할 수 있으며 네임 기반의 가상 호스팅과 비숫한다.
 
 
 
 
네임 기반의 가상 호스팅
 
아파치를 일반 설치 하기
아피치를  http://apache.kr.net 에서 최신 버전 1.3.22  버전을 다운 받는다.
( 리눅스 설치시 rpm 으로 설치된 아파치가 있을 수 있으니
rpm -qa |grep apache  로 검사하여 지우도록 하자.
 
tar xvfz   파일
 
cd 압축이 풀린 디렉토리
 
./configure
 
make
 
make install
 
 
이 세개의 명령어로 간단하게 설치 할 수 있을 것이다.
 
아파치를 기본 설치 하였으면
 
/usr/local/apache
 
란 디렉토리에 설치가 된다.
 
우선 설치가 되었으면 설정을 하고 웹서버를 시작을 해보자.
 
 
pico /usr/local/apache/conf/httpd.conf
 
에디터로 아파치의 설정 파일  httpd.conf 열어보면
900라인에 달하는 내용이 있지만  하나만 수정을 하도록 하자.
 
 
#ServerName   
 
이란 것이 주석 처리(#) 이 되어 있을 것이다.
 
이것을 주석을 지우고   도메인을 입력하도록 하자.
 
 
변경후
 
ServerName   sansung.net
 
 
 저장을 하자.
 
 
 이제 설정이 되었으니 웹서버를 시작을 해보자
 
 /usr/local/apache/bin/apachetl start    
 
 #웹서버 시작
 
/usr/local/apache/bin/apachetl stop
 
#웹서버 중지
 
/usr/local/apache/bin/apachetl restart
 
#웹서버 재시작
(부팅시 웹서버를 시작하고자 한다면 /etc/rc.d/rc.local

파일 아래에
/usr/local/apche/bin/apchectl start
를 추가 하면 된다.
 
 
웹서버가 시작 되었으면 브라우져에서 접속을 해보자
 
 여기까지가 웹서버를 설치 설정 시작까지 하였는데
 무척 쉽게 따라 할 수 있었을 것이다.
 
아파치의 설정은 기번 설정도 잘되어 있기 때문에 이 기본적만으로
운영이 가능하다.
 
하기만 이 상태로 운영하는데 관리의 불편이 따르기 대문에 가상 호슽을
기준으로 기것을 편리하게 운영 할 수 있도록 변경을 해보자.
 
 
웹서버 시작 후 첫 화면에 나타나는 파일은  
 
/usr/local/apache/htdocs
 
에 있는 index.html 이란 문서이다.
 
 
이곳에 자신이 만든 웹페이지를 만들어서 올리면 되는데 약간의 불편이 생긴다.
 
즉 /usr/local/apche/htdocs
 
의 위치는 root의 위치 이기 때문에  ftp 로 접속해서 이곳에 접근을 할 수 없으며
접근을 한다해도 root 의 소유권 이기 때문에 파일을 없로드 할 수 없다.
아니면 root 의 패스워드를 알려 주고 root 의 ftp 접속을 풀여 줄 수 도 있게지만
이것은 다른 문제가 발생을 할 가능성이 있기 대문에 권장하지 않으며
이런 방법을 추천 한다.
 
웹만 관리 할 수 유저를 만들 다음 이유저의 홈디렉토리를 웹서버의 메인 디렉토리로
지정을 하는 것이다.
그러면 유저이기 때문에 ftp ,telent 등을 직접 접속을 할 수 있으면 유저 이기 때문에
시스템에 접근을 할 수 없는 장점이 있다.
 
이것을 아파치의 가상호스팅을 이용해서 구현을 해보자.
 
 
 
1- 유저의 홈페이지를 만들어 보자.
 
  useradd sansung
  passwd sansung
 
  sansung이란 유저를 만들고 패스워드를 부여해 보자.
 
 
 다음  sansung 의 유저로 접속을 해보자.
(유저의 홈디렉토리에서는 root의 권한으로 되도록 작업을 하지 말자.)
 
 
 su - snausng
 
 
유저가 홈페이지 생성을 위해서는 3가지 작업을 해야 한다.
 
 펴미션 조정.
 public_html 디렉토리 만들기
index.html 파일 만들기
 
 
유저의 홈디렉토리는 기본적으로 /home/sansung
이다.
 
그런 유저 생성시 유저의 홈디렉토리가 700 펴미션이기 때문에
웹에서 접속을 할 수 없기 때문에  
 
chmod 701 /home/sansung
이렇게 변경을 해야 한다.
(701 펴미션은 웹 접속은 되고 같은 서버에 있는 유저들끼리 서로의 자료를 볼 수 없게
하는  펴미션이다.)
 
다음  
 
mkdir  public_html
 
다음 public_html 디렉토리 안에 index.html 파일을 만들어야 한다.
 
 이제 웹에서 유저의 홈에 접속을 해보자
 
http://sansung.net/~sansung
 
홈페이지가 잘 보인다면 위의 설정이 잘 된 것이다.
 
네임 기반의 가상 호스팅 설정
지금부터 설정은 아파치 기본 설정에서 메인 디렉토리를
/usr/local/apache/htdocs 인데 이것을
유저의 홈디렉토리인
/home/sansung/public_html  위치로 변경을 하려는 것이다.

이 가상 호스팅 설정은
/usr/local/apache/conf/httpd.conf
설정에서 한다.


httpd.conf 파일을 맨 아래에 보면

NameVirtualHost 192.168.0.1
# 이 것을 주석을 제가하고 본인 ip을 입력한다.
# 이 것이 활성화 되어야 가상 호스팅이 작동을 한다.
 
그 아래에 아래와 같은 내용을 추가 한다.
<VirtualHost 192.168.0.1>
 DocumentRoot /home/sansung/public_html
 ServerAdmin [email protected]
 ServerName  sansung.net
ServerAlias www.sansung.net     sansung.net
ErrorLog logs/sansungnet-error_log
CustomLog logs/sansung.net-access_log common
</VirtualHost> 

#DocumentRoot  메일 페이지의 위치를 설정을 한다.
# 꼭 public_html 가 아니어도 상관이 없으니 보통
# cgi-bin 설정등을 그래도 사용할 수 없이 보통 이렇게 사용한다.
#ServerAdmin 관리자의 전자우편 주소로 서버 에러시 나타나는
#관리자의 주소이면 없어도 된다.
#ServerName   도메인 주소
#ServerAlias   도메인 주소를 sansung.net   www.sansung.net 은 다른 주소이기
# 때문에 다른 주소이기 때문에  www.sansung.net을 또다른 가상 호스트 설정이
# 필요하기 때문에  그 것 보다는 ServerAlias (별명)을 통해  
# www.sansung.net 으로 접속을 하는 것을  sansung.net 접속하는 것과 같게 한다.
# ErrorLog 웹서버 관련 에러 로그 없어도 된다.
# CustomLog  웹접속 관련 로그 없어도 되면 별다른 설정이 없으면
#로그는 /usr/local/apache/logs/ 있는 로그 파일에 같이 설정이 된다.



자 이제 설정이 되었으니 웹서버를 제시작 후 확인을 해보자

/usr/local/apche/bin/apachectl restart

웹에서  http://sansung.net      http://www.sansung.net
으로 접속을 해보자.
메일 폐이지의 위치가 변경되었을 것이다.


이제부터 도메인을 추가를 해보자


iwav.co.kr
mwav.net

추가를 할 도메인은 2개 이다.
역시 각각의 유저을 만들자.
useradd iwav
useradd  mwav
역시 각각의 유저의 홈디렉토리에 public_html을 만들고  index.html 과 펴미션(701)

조정을 해야 한다.

다음 아파치 설정파일 httpd.conf
 
<VirtualHost 192.168.0.1>
 DocumentRoot /home/iwav/public_html
 ServerAdmin [email protected]
 ServerName  iwav.co.kr
ServerAlias www.iwav.co.kr     iwav.co.kr
</VirtualHost> 

<VirtualHost 192.168.0.1>
 DocumentRoot /home/mwav/public_html
 ServerAdmin [email protected]
 ServerName  iwav.net
ServerAlias www.mwav.net     mwav.net
</VirtualHost> 

 
역시 설정을 추가 하였으니 웹서버를 재시작을 해보자.
이제 웹에서 접속을 해보자

http://sansung.net
http://www.iwav.co.kr
http://www.mwav.net
각각의 유저의 홈페이지가 나온다면 정상적으로 작동을 하는 것이다.
 mod_vhost_alias를 이용한 가상 호스팅 설정



 지금부터 하는 가상 호스팅 설정은    위에 있는 네임 기반의 가상호스팅과 거의 비슷한데 차이 점이 있다면
네임기반의 가상 호스팅은 도메인 추가 될 때마다 일일이 httpd.conf를 설정을 추가해야 하지만
mod_vhost_alias를 이용하면 httpd.conf 설정을 한번만 설정을 하면 되기 때문에  설정이 조금 편해지는
장점이 있다.  물론 결과는 네임 기반의 가상 호스팅과 같다.
mod_vhost_alias 는 인터넷 접속이 헤더에 있는 도메인정보를 특정 디렉토리에 지정을 하는 것으로
네임 기반의 별차이는 나지 않는다.

 설치시 준비 사항
아피치를 기본설정를 하면 mod_vhost_alias 가 포함이 되어 있지 않다.
현제 모듈이 포함되 어 있나 확인을 해보자.

/usr/local/apche/bin/httpd -l
 http_core.c
  mod_mmap_static.c
  mod_vhost_alias.c
  mod_env.c
  mod_log_config.c
  mod_log_agent.c
  mod_log_referer.c
  mod_mime_magic.c
  mod_mime.c
  
 
 mod_vhost_alias를 포함하여 컴파일 하기

./configure   --enable-module=all
make

make install


이렇게  --enable-oodule=all  이 옵션이 들어 가야 접속이 된다.


설정 준비

도메인 관리 유저 만들기


여기 유저를 만들이 좀 이상하게 만들 것이다.
이유는 되에서 설명이 나올 것이다.


useradd sansung  -d /home/www.sansung.net

useradd iwav   -d /home/www.iwav.co.kr

useradd mwav  -d /home/www.mwav.net


(물론 여기서도 펴미션 701 관   index.html을 만들어야 하며  public_html를 만들 필요는 없다. )
호스트 네임 정보코드

0 :  전체 호스트 이름
1 :첫번째 부분
2 :두번째 부분
-1: 마지막 부분
-2 : 마지막에서 두번째 부분
2+ : 두번째 부분과 나머지 뒷부분
-2+ :마지막에서 두번째 부분과 그 앞부분의 모두
1+-1+  :0과 동일(전체 호스트 이름)

여기서는 0만을 사용하겠다. 0의 의미는 접속하는 도메인의 의미이다.

httpd.conf에 아래 내용을 추가를 하자
UseCanonicalName        Off
VirtualDocumentRoot     /home/%0

 
여기서 %0의 의미는 접속하는 도메인 이름이다. 즉 사용자가   http://www.sansung.net 으로 접속을
한다면 %0은 www.sansung.net 과 같은 의미이며  www.sansugn.net 으로 접속을 하면
/home/www.sansung.net  디렉토리에 있는 index,html를 메인 문서를 찾을 것이다.

(유저의 홈디렉토리를 이상하게 만든 이유는 이것 때문이다.)

만약 사용자가   www.iwav.co.kr를 접속을 한다면   역시  /home/www.iwav.co.kr

디렉토리를 찾을 것이다.  
이것으로 가상 호스팅의 설정은 끝이다.

모듈기반의 가상 호스팅은 네임시간반의 가상 호스팅보다는 설정이 편하다는 장점이 있다.

그런데  다른 문제가 생길 수 있는데 사용자가   www.sansung.net  도메인이 아니가


sansung.net 으로 접속을 한다면 아마 접속이 안 될 것이다.  왜냐하면 /home/에는  sansung.net
디렉토리가 없기 때문이다. 이때 해결 책은 물론 별도의 디렉토를 만들어도 되겠지만 심벌링크를

사용하면 간단하게 해결 할 수 있다.
home 디렉토리에서    
 
  ln -s  www.sansung.net   sansung.net    
 
이렇게 심벌 링크를 건다면  이 문제는 간단하게 해결이 될 것이다.
 
기타 vhost 설정 지사자는 더 있다.
 
 
 
 
 
 
 
 
 
트위터 트위터 페이스북 페이스북 카카오톡 카카오톡
기사입력: 2005/02/21 [09:06]  최종편집: ⓒ iwav
 
 
많이 본 기사