상세 컨텐츠

본문 제목

가상호스트/다중사이트(httpd-vhosts.conf) 구축하기

OS

by husks 2017. 3. 7. 17:16

본문

반응형


가상호스트는 하나의 IP로 여러개의 사이트를 운영하는데 사용한다. 호스트명을 구분해서 서비스하므로 이름기반 가상호스트(name-based virtual hosts)라고 한다. 하나의 IP로 여러개의 도메인을 연결해서 사용할 수 있기도 하지만 주도메인외에 서브도메인을 생성해서 다중사이트를 운영하는데 용이하다. 이를 활용한다면 직접 도메인을 구입하지 않고서도 무료로 서브도메인을 제공하는 국내의DNSEVER나 WOWDNS에서 서브도메인을 할당받아 여러개의 가상호스트를 구축할 수 있다. 이번에는 윈도우용 아파치 2.2.3에서 vhosts.conf를 통해서 가상호스트를 설정하는 기본적인 내용을 다룬다. 앞에서 다룬 내용과 함께 여기까지만 읽어보면 어떤 누구라도 쉽게 윈도우용 아파치를 통해서 자신의 웹사이트 또는 블로그를 구축할 수 있다는 생각이다. 모든 내용은 모두 경험한 실전내용이다.(작성하는 배우기(Mr.Learn)도 복습한다는 의미도 있음)  유동IP이건 고정IP를 이용하건 아파치를 이용해 웹사이트를 구축할 때 초보자들이 가장 어려워하는게 CGI실행, 사용자 디렉토리, 가상 호스트 설정이 아닌가 생각된다. vhosts.conf도 어렵지 않다. 이미 userdir.conf를 통해서 웬만한 설정을 모두 끝난 셈이다.


가상호스트를 위한 주설정파일(httpd.conf) 구성

1. 가상호스트를 가능하게 해주는 모듈은 mod_authz_host.so이다. 아파치 2.2.3에 오면서 이러한 모듈들이 통합된 부분이 있다. mod_authz_host.so는 기본적인 기능과 함께 가상호스트를 가능하게 해주는 모듈이므로 이는 필수 모듈에 해당한다.
LoadModule authz_host_module modules/mod_authz_host.so

2. 아파치 메뉴얼에 보면 가상호스트를 구성하려면 주호스트도 가상호스트 설정파일에 위치해야 한다고 한다. 그것은 다름아닌 DocumentRoot가 주설정 파일 httpd.conf에 위치하게 되면 DocumentRoot에 설정한 경로 하나만을 인식할 수 밖에 없기 때문에 아무리 다른 호스트를 설정을 해도 한곳으로 접속된다. 따라서 vhosts.conf를 설정하기 전에 주설정 파일의 DocumentRoot 지시어는 제거한다.

3. 가상호스트 구성파일을 포함시킨다.
Include conf/extra/my-vhosts.conf

;my-userdir.conf처럼 아파치 기본설정파일이 아닌 사용자정의 파일이므로 이름을 변경했지만, 이름과 내용만 정확하면 상관이 없다. 따라서 초미니 httpd.conf는 아래처럼 설정된다.

# 자식당 스레드수는 250개로 기본값 유지.
ThreadsPerChild 250

# 스레드는 종료되지 않고 무한(기본값 0) 사용.
MaxRequestsPerChild 0

# 아파치 서버가 설치된 경로.
ServerRoot "C:/Program Files/apache2"

# 웹서비스 포트는 기본 80
Listen 80

# 정적 페이지(HTML)만 사용하는 기본모듈
LoadModule authz_host_module modules/mod_authz_host.so

# 로그파일 기록을 위한 모듈
LoadModule log_config_module modules/mod_log_config.so

# MIME형식을 지원하는 모듈
LoadModule mime_module modules/mod_mime.so

# 디렉터리 인덱스파일을 인식하게 하는 모듈
LoadModule dir_module modules/mod_dir.so

# Perl CGI연동에 필요한 모듈
LoadModule cgi_module modules/mod_cgi.so

# 사용자 디렉터리를 위해 필요한 모듈
LoadModule userdir_module modules/mod_userdir.so

# 서버관리자는 admin@winnwe.com로 설정
ServerAdmin admin@winnwe.com

# 서버이름은 공인된 도메인인이 없으므로 127.0.0.1과 서비스 포트 80.
ServerName 127.0.0.1:80

# 웹서비스 출판 루트는 삭제 - my-vhosts.conf로 이관!
# DocumentRoot 제거

# 웹 출판 디렉터리는 my-userdir.conf로 이관!

# 디렉터리 인덱스파일 지정
<IfModule dir_module>
DirectoryIndex index.html index.htm default.htm index.pl
</IfModule>

# 에러로그 파일지정 및 오류레벨 지정
ErrorLog logs/error.log
LogLevel warn

# 에러기록 형식을 지정하고 엑세스로그파일 지정
<IfModule log_config_module>
LogFormat "%h %l %u %t \"%r\" %>s %b \"%i\" \"%i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %b" common
CustomLog logs/access.log common
</IfModule>

ScriptInterpreterSource registry

# 기본 MIME 형식지정 및 구성파일 지정
DefaultType text/plain
<IfModule mime_module>
TypesConfig conf/mime.types

AddHandler cgi-script .cgi .pl
</IfModule>

# 유저 디렉터리 파일 포함
Include conf/extra/my-userdir.conf

# 가상 호스트 설정 파일 포함
Include conf/extra/my-vhosts.conf



my-vhosts.conf파일 작성

1. 이름 기반 가상 호스트라는 지시어를 삽입한다. 포트는 80포트를 사용하는 경우이지만 포트 포워딩을 사용하는 경우 8000 또는 8080으로 변경하면 된다. 이렇게 포트 포워딩을 하는 경우는 인터넷서비스 제공자(ISP)측에서 80포트를 차단했을 경우에 아파치 웹서버를 8000 또는 8080으로 서비스하기 위함이 된다.
NameVirtualHost *:80

2. 가상 호스트 구성을 위한 지시어는 VirtualHost이다. 기본적으로 아래 2가지만 설정하면 실행된다.

<VirtualHost *:80>
# 1. 가상호스트로 사용할 서버이름
# 2. 웹 출판 루트의 경로(디렉토리) 
</VirtualHost>



정식으로 도메인을 소유하고 있는 경우는 VirtualHost 지시어를 아래처럼 설정한다.

NameVirtualHost *:80
<VirtualHost *:80>
# 도메인명이 winnwe.com이고 하고 주도메인 설정
ServerName winnwe.com
# DocumentRoot설정 인덱스파일이 위치하는 곳
DocumentRoot D:/wwwroot/myweb1/public_html
</VirtualHost>

# 서브도메인을 xpz.winnwe.com으로 설정하면
<VirtualHost *:80>
ServerName xpz.winnwe.com
# DocumentRoot설정 인덱스파일이 위치하는 곳
DocumentRoot D:/www/myweb2/public_html
</VirtualHost>

# 서브도메인을 vista.winnwe.com으로 설정하면
<VirtualHost *:80>
ServerName vista.winnwe.com
# DocumentRoot설정 인덱스파일이 위치하는 곳
DocumentRoot D:/www/myweb3/public_html
</VirtualHost>

이렇게 3개의 사이트를 설정하면 된다. 여기서 DocumentRoot에 포함된 myweb1, myweb3, myweb3은 각각 winnwe, xpz, vista로 설정한다면 실제 DocumentRoot도 해당 경로명으로 변경해 주어야 한다.

DocumentRoot D:/wwwroot/winnwe/public_html
DocumentRoot D:/wwwroot/xpz/public_html
DocumentRoot D:/wwwroot/vista/public_html



 다음은 정식 도메인이 없고 무료로 DNSEVER가 제공하는 서브도메인 3개를 사용한다고 전제하고 이를 설정한 내용이다.
# wnw1.wo.tc, wnw2.wo.tc, wnw3.wo.tc

NameVirtualHost *:80

<VirtualHost *:80>
ServerName wnw1.wo.tc
DocumentRoot D:/wwwroot/myweb1/public_html
</VirtualHost>

<VirtualHost *:80>
ServerName wnw2.wo.tc
DocumentRoot D:/www/myweb2/public_html
</VirtualHost>

<VirtualHost *:80>
ServerName wnw3.wo.tc
DocumentRoot D:/www/myweb3/public_html
</VirtualHost>



 이제까지 vhosts.conf를 사용한 기본설정에 대해서 살펴보았다. 이 설정으로도 실제 웹사이트 운영이 가능하지만, 그밖에 보강해야할 점이 많다. 그러한 설정은 고급설정 또는 추가정보에서 별도로 다룬다.


출처: http://blog.naver.com/spef/110034393925

추가: http://joont.tistory.com/46

반응형

관련글 더보기

댓글 영역